1

私はGiraphを実行しています。これは、5 つのホスト (4 つの計算ノードと 1 つのヘッド ノード - それらを 0-3 および「w」と呼びます) の小さなCDH4 Hadoop クラスターで実行されます - 以下のバージョンを参照してください。5 つのホストすべてが mapreduce タスクトラッカー サービスを実行しており、「w」もジョブトラッカーを実行しています。私の特定の Giraph アプリケーション (一種のパス検索) にはリソースが逼迫しており、タスクの自動スケジュール ホストの一部の構成が他の構成よりもうまく機能することを発見しました。

より具体的には、私の Giraph コマンド (以下を参照) は 4 つの Giraph ワーカーを指定し、実行時に Hadoop (実際にはZookeeper、IIUC) は、jobtracker Web UI で確認できる 5 つのタスク (1 つのマスターと 4 つのスレーブ) を作成します。3 つ以上のマップ タスクを 'w' に配置すると (たとえば、01www または 1wwww)、そのホストは RAM、CPU、およびスワップを使い果たし、ジョブがハングします。ただし、「w」に含まれるタスクが 2 つ以下 (123ww または 0321w など) になるようにシステムがワークアウトをより均等に分散すると、ジョブは正常に終了します。

私の質問は、1) どのプログラムがタスクからホストへの割り当てを決定しているか、2) それをどのように制御するかです。

どうもありがとう!

バージョン

  • CDH: 4.7.3
  • Giraph: 「giraph-1.0.0-for-hadoop-2.0.0-alpha」としてコンパイル (CHANGELOG の開始: Release 1.0.0 - 2013-04-15)
  • Zookeeper クライアント環境: Zookeeper.version=3.4.5-cdh4.4.0--1、09/04/2013 01:46 GMT に構築

ギラフ コマンド

hadoop jar $GIRAPH_HOME/giraph-ex.jar org.apache.giraph.GiraphRunner \
-Dgiraph.zkList=wright.cs.umass.edu:2181 \
-libjars ${LIBJARS} \
relpath.RelPathVertex \
-wc relpath.RelPathWorkerContext \
-mc relpath.RelPathMasterCompute \
-vif relpath.JsonAdjacencyListVertexInputFormat \
-vip $REL_PATH_INPUT \
-of relpath.JsonAdjacencyListTextOutputFormat \
-op $REL_PATH_OUTPUT \
-ca RelPathVertex.path=$REL_PATH_PATH \
-w 4
4

0 に答える 0