問題タブ [hadoop-streaming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mapreduce - './manage.py runserver'は、セロリのmap/reduceタスクが実行されているときに再起動します。inner_runでエラーが発生することがあります
私のdjangoプロジェクトには、セロリのタスクを実行するビューがあります。セロリタスク自体がサブプロセス/ファブリックを介していくつかのmap/reduceジョブをトリガーし、hadoopジョブの結果がディスクに保存されます---データベースには実際には何も保存されません。Hadoopジョブが完了すると、セロリタスクは次のように完了したことを示すdjangoシグナルを送信します。
本当に困惑しているのは、セロリタスクの実行時にdjango runserverがリロードされていることです。まるで、djangoプロジェクトのどこかでコードを変更したかのようです(まだ変更していません)。時々、これはrunserverコマンドでエラーを引き起こし、runserverコマンドがリロードして再びOKになる前に次のような出力が表示されます(注:このエラーメッセージはここで説明する問題と非常によく似ています)。
local("""hadoop ...""")
問題を、django runserverのリロードで問題が発生しlocal("ls")
ないものに置き換えることで、hadoopへの呼び出しが行われる場合に絞り込みました。hadoopコードにバグはありません---セロリによって呼び出されない場合は、それ自体で問題なく動作します。
何がこれを引き起こしているのかについて何か考えはありますか?
elastic-map-reduce - Hadoop Streaming-fileフラグをAmazonElasticMapreduceに渡すにはどうすればよいですか?
この-file
フラグを使用すると、実行可能ファイルをジョブ送信の一部としてパックできるため、最初に実行可能ファイルをS3に手動でコピーしなくてもMapReduceを実行できます。-file
Amazonのelastic-mapreduceコマンドでフラグを使用する方法はありますか?そうでない場合、実行したいバイナリをアップロードする最も簡単な方法は何ですか?
python - map/reduce操作の途中でHadoopストリーミングがクラッシュする
単一ノードでhadoop1.0.1を使用しており、Python2.7を使用してタブ区切りファイルをストリーミングしようとしています。MichaelNollの単語数スクリプトをhadoop/pythonを使用して実行することはできますが、ファイルを複製するだけのこの非常に単純なマッパーとレデューサーを機能させることはできません。マッパーは次のとおりです。
レデューサーは次のとおりです。
入力ファイルの一部は次のとおりです。
マッパーとレデューサーはLinux内で正常に動作します。
しかし、マッパーとレデューサーをchmodした後、入力ファイルをhdfsに移動し、そこにあることを確認して実行します。
次のエラーが発生します。
何か案は?ありがとう。
java - Hadoop: 奇妙な ClassNotFoundException
classnotfound 例外が発生しています。見つからないと主張されているクラスは存在しませんが、クラス名はマップ削減ジョブの入力ファイルのリストへのパスとして設定されています。
ご覧のとおり、/user/hduser/datasets/
は入力ファイルへのパスです。なぜこのエラーが発生するのClassNotFoundException
ですか? なぜそれをクラスと見なすのですか?
私は自分のエラーを見つけました。私はパッケージ構造を持っています。パッケージ情報を指定する必要があります
私のツールでは、パッケージを引数として Java に渡すオプションはありません。だから私は包装をする必要はありません。しかし、この入力ファイルパスの前の引数が欠落しているため、次のエラーが発生しています。
私のクラスは、ルートの tmp.jar に直接あります。つまり、org.myorgなどはありません...
解決:
manifest_file の内容を、jar アーカイブ内の生成されたマニフェスト ファイルとマージします。manifest_file Main-Class に次の行を含めます: [Name_Of_Class]
logging - ジョブ履歴ログ ファイル
Hadoop vaidya ツールを使用するプログラムがあります。 http://hadoop.apache.org/mapreduce/docs/r0.21.0/vaidya.html
$HADOOP_HOME/contrib/vaidya/bin/vaidya.sh -jobconfig <path1> -joblog <path2>
職歴を見つけることができません。Hadoop のジョブ履歴ログ ファイルはどこにありますか?
前もって感謝します !
hadoop - 書き込み中にファイルを分割する
達人!
長い間、次の質問に対する答えが見つかりませんでした:書き込み中にhadoopが大きなファイルを分割する方法。例:1)ブロックサイズ64 Mb 2)ファイルサイズ128 Mb(フラットファイル、テキストを含む)。
私がファイルを書くとき、それは2つの部分(ファイルサイズ/ブロックサイズ)に分割されます。しかし... Block1に続く発生 は...word300word301woで終了し ブロック2はrd302word303で開始する 可能性があります...書き込みケースは
ブロック1は...word300word301で終了し、ブロック2はword302 **word303..で開始します。
または、Hadoop分割アルゴリズムについて書く場所にリンクできますか。
前もって感謝します!
hadoop - Hadoopカスタムjar、Hadoop Streaming、Pig、Mahoutのどれを選択しますか?
私は、エンティティセットを作成し、大規模なコーパスからペアワイズ類似性を計算できるNLPプロジェクトに取り組んでいます。現在、Hadoopストリーミングを使用しており、 Pythonですべてのマッパーとリデューサーを実装しています。アルゴリズムには数ラウンドのmap-reduceが必要なため、シェルスクリプトを使用してジョブをチェーンします。
これが私の懸念事項であり、次に何をしたいのかです。
[懸念1]。ジョブチェーンとジョブ制御。Hadoopストリーミングジョブの連鎖には問題があります。ジョブシーケンス(job1-job2-job3)のjob2が失敗した場合は、出力フォルダーを手動で削除し、ジョブを起動するスクリプトファイルを調整して、ジョブシーケンスを途中から再実行する必要があります。これを行うためのよりスマートな方法を見つけたいと思っています。アルゴリズムのパラメーターとロジックを頻繁に調整する必要があるため、これらの手順を何度も繰り返したくありません。
[懸念2]。スピードと効率。時間コストの大部分は、テキストを数値に解析するためのものであり、そのような形式変換プロセスはまったく不要だと思います。開発中にこれらのほぼ重複するPythonコードを入力してテストするのにも、多くの時間がかかります。
[懸念3]。保守と配布のしやすさ。プロジェクトが大きくなっているので(私は20以上のmap-reduceジョブを持っています)、プロジェクト全体をモジュール化する必要があります。オブジェクト指向にし、IDEを使用してプロジェクトを開発および保守し、さまざまな内部データ構造と形式をより快適に処理できるようにしたいと考えています。また、他の人が恩恵を受けることができるように、自分のプロジェクトをパッケージとして配布したいと思います。プロジェクト全体をIDEにインポートして、簡単に配布できるようにする簡単な方法が必要です。
私は解決策の可能性についていくつかの調査を行いました:
代替案1.Hadoopカスタムjar:これを行う最良の方法は、プロジェクト全体をjava(hadoopカスタムjar)に変換することだと思われます。これにより、ジョブチェーン、効率、メンテナンスの問題など、すべての問題が解決する可能性があります。しかし、かなり時間がかかる場合があり、効率的なデバッグを行う方法を見つけました。
代替案2.豚:この質問への回答は、いつ豚を使用するか(使用しないか)を判断するのに非常に役立つことがわかりました。答えの中で、Arun_sureshは、「Map / reduce関数内で実行する必要のある非常に具体的な計算がある場合は、独自のjarをデプロイすることを検討する必要があります」と述べています。私の仕事には、瓦礫、ハッシュ、最小ハッシュ、順列などが含まれます。PigLatinを使用して実装できますか?Pig Latinプログラムがどれほど複雑な計算を行うことができるかについてのアイデアを得ることができる場所はありますか?
代替案3.Mahout:新しくリリースされたApache Mahoutバージョンには、私が行っていることと重複するいくつかの機能があることがわかりましたが、それは私の作業を置き換えることはできません。プロジェクトのベースをMahoutにしましょうか。
私は基本的に自分でこの仕事をしており、ハウスキーピング作業全体を行うのに約2週間の時間予算と、それを改善するための約1か月しかありませんので、効率的で信頼できる方法を見つける必要があります。選択肢の1つを選択するのを手伝ってください。または、より良い解決策があるかどうか教えてください。
hadoop - Hadoopストリーミング用のHadoopジョブオブジェクトの構築
JavaからHadoopストリーミングジョブを構成して実行しようとしています(使用しているシステムでは、HadoopジョブをJavaメソッドで呼び出し可能にする必要があります)。
createJob
メソッドはorg.apache.hadoop.streaming.StreamJob
(http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/streaming/StreamJob.html#createJob(java.lang.String []))で見つかりました。、ただし、このメソッドはJobConf
非推奨のオブジェクトを返します。Job
ストリーミング用のオブジェクトを作成する方法、またはをに変換する方法はありJobConf
ますJob
か?
hadoop - Hadoop MapReduce ジョブ入力ファイル ClassNotFound
マスター/スレーブとスレーブの 2 つのノードで構成される Hadoop クラスターでサンプルの Map/Reduce タスクを構築しています。以下は私の仕様です:
次のようにM / Rタスクを実行しています
しかし、以下のメッセージから明らかなように、入力ファイルを見つけることができないようです
以下は、私が使用している MyMapRed クラスです。入力としてペアのリストがあります。レデューサーは、グループごとの平均 Val を提供することになっています。
ClassNotFoundException が発生するために見逃していることを誰かが提案できますか?
hadoop - HadoopストリーミングジョブIDを取得する
すべてのHadoopジョブには固有のjobidがあります。jobidを使用して、ジョブステータスまたはジョブカウンターを取得できます。問題は、スクリプトから実行したばかりのジョブのjobidを取得するにはどうすればよいですか?そしてもちろん、私はこれを信頼できる簡単な方法で(可能であれば)やりたいと思っています。
例:
1)実行するスクリプトから:
2)起動されたタスクのジョブIDをどうにかして取得したいと思います。
3)jobidがある場合、hadoopjob-statusおよびhadoopjob-counterクエリを実行できます。
アップデート:
同期ケース(完了するまで待機し、jobidを取得してから、ステータス/カウンターを要求する)が最低限必要なようですが、使用するのが不便な場合もあります。いくつかのHadoopストリーミングジョブを(バックグラウンドタスクとして)同時に実行したい場合や、ワークフロー分析などで後で使用できるすべてのジョブIDを記憶したい場合があります。
実際、私はいくつかの解決策を見つけましたが、それはハックだと思います。それは私を非常に悩ませます。誰かが私にもっとエレガントな解決策を見せてくれたらありがたいです。解決策は次のとおりです。
1)Hadoopストリーミングジョブを実行するときは、出力hdfsディレクトリを指定する必要があります。
2)このディレクトリを使用して、hdfsのジョブ構成ファイルにアクセスできます。
3)最後に、構成ファイルの名前からジョブIDを抽出できます