タグ

ブックマーク / open-groove.net (19)

  • CPU周りのリソースモニタリング – OpenGroove

    負荷テスト中のサーバーリソースモニタリング。CPUの使用状況は、sarで見ればいいか。 sar : 主要な項目の見方 %user ユーザプロセスによるCPU使用率 %nice 実行優先度を変更した(nice値)ユーザプロセスによるCPU使用率 %system システムプロセスによるCPU使用率 %iowait I/O終了待ち時間の割合(I/O処理中で、その終了を待機している時間) %steal 仮想サーバがCPUを使って待機状態にあった時間の割合 %idle CPUが何も処理をせずに待機していた時間の割合(ディスクI/O待ち以外) %stealについて参考 steal列には、ゲストOSがリソース要求を行ったにもかかわらずCPUリソースを割り当ててもらえなかった時間の割合が表示されます。steal列に0%以外の値が表示されている場合はCPU利用率閾値設定が行われているか、ほかのゲストOSある

  • Spark configプロパティをまとめてみる (1) – OpenGroove

    Sparkの設定やチューニングにおいてはいくつかの方法があり、かつSpark standaloneなのかYARNなのかによってもやり方が変わってわかりにくいのでまとめてみた。 (追記:情報は2014年8月時点のものです) Sparkのプロパティをセットするにはいくつか方法があるが、コード中にハードコーディングする方法がある。 val conf = new SparkConf() .setMaster("local") .setAppName("CountingSheep") .set("spark.executor.memory", "1g") val sc = new SparkContext(conf) (Sparkドキュメントより引用) 特定のプロパティをSparkConf内でハードコードしたくない場合、初期化状態でSparkConfを定義した後、オプションで任意のプロパティをセット

  • Hadoop YARN – mapred-site.xmlの設定 – OpenGroove

    前回のyarn-site.xmlに引き続き、YARN用の主要な mapred-site.xml のプロパティをまとめてみた。CPUコア/メモリリソース周りはyarn-site.xmlのプロパティと合わせた上で、矛盾がないように設定する必要があるので注意(その辺で重要そうなプロパティ名は太字にしてある)。前回投稿Hadoop YARN – yarn-site.xmlの設定もよければ参考に。 # テーブル終端でスクロールするとDescriptionが読めます。見辛くてすみません。 mapred-site.xml NameDefaultsDescription

  • Hadoop YARN – yarn-site.xmlの設定 – OpenGroove

    世の中の様子とかHadoop Conference Japan 2014の様子とか見ていると、「YARNに手こずってるのは他も同じなんだな、やっぱり」と分かる。(どうでもよいが前回に比べるとスーツ姿が減っていた。SIer率減少?あ、夏だから?) MRv1に比べるとリソース管理の概念が大幅に変わったし、設定のプロパティ名もややこしいのがあってトラップ満載。ConferenceのセッションではVMからパクってくる、ambariから設定するなどの案があったが、意味がわかってないとトラブルシューティングやチューニングができないのだよね。手っ取り早く動かしたいだけなら最初はパクリでいいと思うが、結局のところ自分で理解を深めるプロセスは不可避ではないかと。 YARNについては過去の投稿でも何度か書いてきたが、混沌としてきたので自分なりにyarn-site.xmlの主要なプロパティについてまとめてみた。

  • Hadoop – 完全分散モードの設計メモとYARNの仕様 – OpenGroove

    (追記)若干認識違いがあったので修正しました。 前回に引き続き、頭を整理するためHadoop設計周りの覚え書きなど記載。多分鬼のように追記する。書いているうちに枝分かれしてきたので、次世代MapReduce/YARNの話も。HadoopディストリビューションはCDH4の利用を前提としている。 マスタノードに必要なプロセス NameNode SecondaryNamenode (起動は任意) JobTracker (YARNではResouceManager) HistoryServer (CDH4) スレーブノードに必要なプロセス DataNode TaskTracker (YARNではNodeManager) 設計・構築上の注意 マスタノードとスレーブノードにおいてすべて同じパッケージを入れても問題ないが、予期しない事故を防ぐため、各マシンで不要なサービスは起動させないようにしておく。 マ

  • Spark & YARNを試してみる(後半) – OpenGroove

    前回からの続き。 以下に沿って、Spark & YARNモードでサンプルプログラムSparkPi を実行してみた。環境はAWSのm1.mideumマシン + CentOS6.5、CDH5のHadoop疑似分散環境にSparkも同居。Sparkのバージョンはまだ0.9.0。 Running Spark Applications (CDH5) jarファイルをHDFSにコピー。 $ hadoop fs -mkdir -p /user/spark/share/lib $ hadoop fs -put /usr/lib/spark/assembly/lib/spark-assembly_2.10-0.9.0-cdh5.0.0-hadoop2.3.0-cdh5.0.0.jar \ /user/spark/share/lib/spark-assembly.jar spark-env.shは、以下プロパ

  • Spark & YARNを試してみる(前半) – OpenGroove

    Spark 1.0が、5/30にようやくリリースされた…! Announcing Spark 1.0 The Apache Software Foundation Announces Apache™ Spark™ v1.0 さておきYARNモードにてSparkサンプルプログラムを動かしてみたのだが、そもそもの前提とか、書くと長くなるので前半/後半に分ける。前半は、YARNに関わらない部分もあるが、周辺用語の覚え書き。 Sparkの動作モード周辺の概念や用語が分かりにくいので、まとめてみた。まず、Sparkの起動モードには以下3種類がある。(Mesos使う場合は、調べてないので不明) Spark Stand Aloneモード Spark yarn-clientモード Spark yarn-clusterモード 最後のyarn-clusterモードは、Clouderaのドキュメントに書かれてい

  • しつこいがSpark & YARNの補足 – OpenGroove

    しばらく前から気になっていたタイトルの問題、以下ブログに詳細が書かれており、やっと点が線につながってきた… Apache Spark Resource Management and YARN App Models 寝かせておくといつになるか分からない、かつ、読む気と書く気が失せるので、個人的に気になった点だけ今ここで要約しておく。意訳/誤訳/勝手に追記したりしてるので参考はほどほどに。 以下… MapReduceモデルでは最も上位の計算ユニットはJobだが、Sparkはその上にapplicationというレベルが存在する。applicatinsはJobをシーケンシャルに、もしくはパラレルに実行することができる。 Applicationはexecutorsと呼ばれるプロセスを持つ。executorはジョブが走っていない時でも起動している(データをメモリに保持し、タスクに対して素早く対応するこ

  • Apache Spark – pysparkでWord Count – OpenGroove

  • sarコマンドでネットワークトラフィックを観察 – OpenGroove

    負荷テスト時のリソースモニタリングの話。 サーバのリソースモニタリングによく利用するsarコマンドだが、これでネットワークのトラフィック状況も観察できることをつい最近知った。sar -n DEVで、インターフェース毎の受信/送信パケット数やバイト数を記録する。以下の例は、トラフィック情報を1秒毎に20回分出力する。 $ sar -n DEV 1 20 これを上手い具合にスクリプトにセットしてログに吐かせる。負荷テスト時だけでなく、通常運用時に利用してもいいかも。 以下、出力結果の項目内容。 IFACE インタフェース名 rxpck/s  1秒間あたりの受信パケット数 txpck/s 1秒間あたりの送信パケット数 rxbyt/s 1秒間あたりの受信バイト数 txbyt/s 1秒間あたりの送信バイト数 rxcmp/s 1秒間あたりの圧縮受信パケット数 (for cslip etc.) txcm

  • Hadoop – 完全分散モードの不完全な構築メモ – OpenGroove

    追記 一部修正、追記しました。やはりあったよ、抜け漏れが…. Hadoopの完全分散モードでの構築が、未だに完了していない。yarn-site.xmlの記述を読み込んでくれてなくて、データノードでhadoop-yarn-nodemanager起動に失敗する。どこが問題なのだろう…。クラウド上で構築しているので、最初にスタンドアロン〜疑似分散モードで構築したマシンの複製イメージから起動して、いらないものをけずったり、設定変えたりしつつやったもんだから、途中からわけがわからなくなってきた。便利なようで不便な、クラウドの弊害というか。頭の整理をするためにやるべき手順を書き出してみる(抜け漏れあるはずなので参考にしないように…)。 想定作業 環境はAWS上のCentoOS 6.3 64bit、HadoopはCDH4。マスタマシンを構築してイメージ作成が完了したら、それを元にスレーブマシンを作成する

  • HBase & HDFSのブロックサイズの関係 – OpenGroove

    HBaseとHDFSのそれぞれのブロックサイズの関係と、プラス圧縮の話。 HBaseのデフォルトブロックサイズは64KB。HDFSのデフォルトブロックサイズは64MB。HDFSは大体この倍か、時にはそれ以上大きな値にするのが一般的。この2つのブロックサイズの相関が気になったのだが、馬(P353あたり)によれば…、これら2つのブロックには互いに関連性はなく、HBaseはファイルを透過的にファイルシステム(HDFS)に保存しているだけ、となる。HDFSもまた、HBaseが何を保存しているのかは関知しない。HDFSは単にバイナリのファイルを扱っているだけである。 以下、例としてブロックサイズ64KBで容量が232MBのHFileと、ブロックサイズ128MBのHDFSとの相関を表した図(馬からの引用です)。HFileは単純にHDFSのブロック群にまたがっている状態となる。 まとめると、小さな大

  • Hiveのメタストアについておさらい – OpenGroove

    Hiveのメタストアは、何かにつけて、ハマる。分かっているつもりで分かってなかったことも、未だにある。このブログ内や他の場所のあちこちに気づいたことを書いているが、散乱しているのでここでまとめてみる。 以下、過去記事からの引用。 メタストアサービスについて Hiveではメタストアサービスと呼ばれるものを利用する。メタストアサービスはテーブル定義、ここでは「テーブルとHDFS上のデータの対応情報」を管理する。メタストア自体はRDBMSを使用してその情報を管理している。メタストアサービスは以下の3種類があり、要件によって使い分ける。 組み込みメタストア もっとも手軽に利用できる形態。HiveにはJavaで実装されたDerbyというDBが組み込まれており、そのDBをメタストアリポジトリとして利用する。hiveコマンド起動によりDerbyも起動する。同時に一人のユーザーしかHiveを利用できない、

  • sshをパラレルで実行するpsshを使ってみた – OpenGroove

    久々にベタなインフラネタ。タイトルのpsshを試してみた。何と言っても学習コストが低そうなのが魅力だったので。 実行環境として、こういうのを試す時は今流行のVagrantなどを使うのがよいらしいがハードルが2つあるとやる気が萎えるので、いつものようにAWSのAMIからインスタンスを立ち上げて使う。まだ無料期間中なので、t1.microならタダで済むし。(無料枠では月750時間まで使用可能だが、「1台あたり」ではなくあくまで時間単位なので、複数台でも使う時間だけ起動して750時間以内に押さえれば無料で済む。この手の検証に積極的に利用するといいよ) 具体的には、t1.microマシン CentOS 6.3 が合計3台。管理用とするマシン1台だけpsshをインストールすればよい。マシン間は最初からsudo権限のあるユーザでNo passwordにてsshログインできる環境になっている。コマンドが

  • HiveのThriftサービス覚え書き – OpenGroove

    前回の投稿に絡むネタなのだが、どうもHiveのリモートメタストアとThriftサービスの相関が今一理解できていないので自分用にまとめてみる(ついでに、メタストアサービスとメタストアDBは違うものだということにさっき気づいた)。 以下、HiveにおけるThriftについて「プログラミング Hive」(O’REILLY) 16章より引用(若干表面的な言い回しを変えてある)。 Hiveにはひとつのポートを通じてHiveにアクセスできるようにしてくれるHiveServer(HiveServer2)あるいはHiveThriftと呼ばれるオプションのコンポーネントがある。Thriftを利用すれば、Java以外の多くの言語を使ったクライアントから、リモートにあるHiveへプログラム的にアクセスできるようになる。 CLIはHiveにアクセスする最も一般的な方法だが、CLIはその設計上プログラムから使うのが

  • Paxosアルゴリズム覚え書き – OpenGroove

    分散システムとともに語られることが多いPaxosアルゴリズムについて、触りだけでもまとめておこうかと。 もともとは、以下の記事からPaxosという用語を知ったのがきっかけ。Hadoop NameNode QJM HAの実装でそのアルゴリズムが使われている。 CDH4.1におけるクォーラムベースジャーナリング ちなみに、Hadoop NameNode QJM HAの実装に必要なJournalNodeはPaxosを使っているが、ZooKeeperはPaxosじゃなくてZAB(ZooKeeper Atomic Broadcast)である、ってのがちょっとややこしい。 以下覚え書き。 Paxosの由来は、ギリシャのPaxos島で行われていたとされる議会の逸話 Google Chubbyで有名になった Google App Engineのデータストアでも途中からPaxosを採用(参考) ZooKee

  • Hadoop – HDFSの仕組み概要(個人メモ) – OpenGroove

    MapReduceと並びHadoopの要とも言える分散ファイルシステムHDFSの仕様について、自分の頭を整理するためにまとめてみる。ほぼ参考書からの引用ではあるのだが、有益な情報があれば都度追記予定。なお、以下文中に記述したxmlのプロパティはCDH4に対応する。CDH3はプロパティが異なります。その他の仕様、xmlファイルも異なる場合あり。両方書いておければよいのだが、手が回らないので… HDFSで動作するデーモン NameNode(ネームノード)→ マスタで稼働 SecondaryNameNode(セカンダリネームノード)→ マスタで稼働 (別マシンで稼働させるケースもあり) DataNode(データノード)→ スレーブで稼働 ネームノードの役割 ファイルシステムのメタ情報であるファイルの位置情報や属性を一元管理し、クライアントからの指示を受け取りデータ処理をデータノードに指示する。メ

  • Linuxで初期RAMディスク作成 | OpenGroove

  • シェル変数展開のまとめ – OpenGroove

    シェルにおける変数展開について。 変数展開{ }(ブレース)の中で各種文学列演算子を使い、変数の存在や値をチェック することができる。-,=,?,+演算子使用時に「:」を付加していれば値がヌルかどうか をチェックする。 省略された場合、値がヌルかどうかのチェックはせず、評価する変数が定義されて いるかどうかのみチェックする。 ${var:-str} シェル変数が未設定か値がヌルの場合、指定した値を返す。 この時変数varに値は代入されない。 $ echo ${animal} ←変数が未設定 $ echo ${animal:-cat} cat $ echo $animal ←変数は設定されていない ${var:=str} シェル変数が未設定か値がヌルの場合に指定した値を返し、さらに変数varに値が代入される。 $ echo $animal ←変数が未設定 $ echo ${animal:=d

  • 1