2016-10-31 8 views
0

私はApache Hiveを使用しています。 LOAD DATA LOCAL INPATH './Desktop/loc1/kv1.csv' OVERWRITE INTO TABLE adih;コマンドを使用してHive(外部テーブルと同様)にテーブルを作成し、同じデータに同じデータをロードしました。ジョブを開始してトラッキングURLを生成した後で、ハイブクエリがMapReduceプロセスを開始しない

私はハイブテーブルadihからの単純なデータ(例えばselect * from adihselect c_code from adih limit 1000、など)を取得することができていますが、私はわずかな計算(例えばselect count(*) from adihselect distinct(c_code) from adih)を含むデータを要求したときに、ハイブは私にエラーが発生します。次のリンクに示すように

ハイブCLI出力は -

ハイブ> adih区別ADD_USERを選択します。指定されていないタスクを減らすの1つの

数のうち、ジョブ1を起動

クエリID = latize_20161031155801_8922630f-0455-426b-aa3a-6507aa0014c6

合計ジョブ= 1

。するために

セットhive.exec.reducers.bytes.per.reducer =

:(バイト)減速の平均負荷を変更するために1

:入力データサイズから推定

集合M:減速の一定の数を設定するために

セットhive.exec.reducers.max =

:減速の最大数を制限しますapreduce.job.reduces =

ジョブ開始= job_1477889812097_0006、トラッキングURL = http://latize-data1:20005/proxy/application_1477889812097_0006/

キルコマンド= /opt/hadoop-2.7.1/bin/hadoop仕事-kill job_1477889812097_0006

[6] +停止$ HIVE_HOMEハイブ/ binに/

ハイブは私が持っているところわからない「キルコマンド」

の最後の行を越えたさらなるログ/アクションの表示を停止します間違っている(StackOverflowの多くの答えは、YARN configs(環境設定は以下に詳述)を指す傾向がある)。次のように 私もログを持っていますが、それは以上30000文字(スタックオーバーフローの制限)が含まれてい

私のHadoop環境が設定されている - 1名ノード& 1データノード。それぞれに十分なROMを備えた20 GBのRAMがあります。 yarn.scheduler.maximum割り当て-MByarn.nodemanager.resource.memory-MBmapreduce.map.memory.mbとのそれぞれのためのRAM 13 GBの割り当てられた4 GBとに設定されていますmapreduce.reduce.memory.mbが12 GBに設定されています。減速機の数は現在デフォルト(-1)に設定されています。また、HiveはMySQL DB(Derbyではなく)で動作するように設定されています。

+0

この状態は、「distinct」コマンドを含むコマンドを実行したときにのみ発生することに気付きました。 'select count'コマンドを使用すると、MapReduceプロセスが開始され、マッピングが完了します。ただし、Reduceプロセスでは0%の進捗状況が継続して表示され、無限ループに陥ることがあります。 – vsdaking

答えて

1

あなたは、プロパティに適切な値は、あなたのトレースに表示

などを設定する必要があります:あなたはmapred.reduce.tasksを設定しているようハイブ-site.xmlの中でプロパティを編集し

<property> 
<name>hive.exec.reducers.bytes.per.reducer</name> 
<value>67108864</value></property> 
+0

これも試しましたが、結果に変化は見られませんでした。 – vsdaking

+1

変更後にサービスを再開してください。 –

+0

それをしました。実際、hive-site.xmlに提案を追加した後でも、すべてのhadoopデーモンを再起動しても役立つものではありませんでした。しかし、提案をありがとう。 – vsdaking

1

が見えます= -1。これは、Hiveがconfigを参照してreduceタスクの数を決定するようにします。 Hive設定でレデューサーの数が不足しているため、エラーが発生しています。 コマンドの下に使用してそれを設定してみてください:

ハイブ> SETのmapreduce.job.reduces = XX

公式ドキュメントを1として:削減の右の数は0.95または1.75を乗じたように思わ(<がないの。ノード> * <ノードあたりの最大コンテナ数>)。

+0

これを試しましたが、動作しませんでした。私自身の説明のために、Hiveは独自のヒューリスティック設定を適用して減速機の数を決定していませんか? – vsdaking

+1

はい、適用されます。しかし、問題の声明では、Hive構成の減速器は何だったのか不明であり、それが私がこの値を設定することを提案した理由です。 – vmorusu

+0

同じ@vmorusuを明確にしないための謝罪。しかし、提案をありがとう。 – vsdaking

0

私はハイブとMRの仕事を得るために管理 - 関連するすべてのプロセスのメモリ構成を増加: はYARNスケジューラと(糸-site.xml内)YARN NodeManagerのに割り当てられた最大RAMに割り当てられたRAMの増加しました、 MapperとReducer(mapred-site.xml内)に割り当てられたRAMを増やします。 @Sathiyan Sと@vmorusuによる回答の一部も組み込まれています.hive.exec.reducers.bytes.per.reducerプロパティを1 GBのデータに設定します。これは、Hiveが使用するレデューサーの数に直接影響します。発見的手法)。

関連する問題