0

解決済み

validation.jar を hadoop/share/hadoop/common/lib/ に配置する必要があることがわかりました ( https://mvnrepository.com/artifact/javax.validation/validation-api * からダウンロードしてください)。

それをドキュメントの内容と組み合わせます。Druid のインデックス作成タスク json で「mapreduce.job.classloader」を「true」に設定します。

そして、あなたはそれを機能させるでしょう:) -- Druid 0.9.2 with Hadoop 2.7.3

*) 理由はわかりませんが、Druid がクラスパス内のすべての jar を Hadoop にアップロードしたことがわかりました (そして、validation.jar がそこにあります)。JVM がカスタム クラスローダーから javax.* ライブラリをロードする方法に制限があるのか​​もしれません (?)

以下に続くのは、検索を支援するための歴史的な目的です。


更新 更新

私の悪い。Dockerfile の core-site.xml などを Druid インストールの正しい場所にコピーするのを忘れていました。

私はそれを修正しました。今ではジョブをhadoopに送信しています。

ここに画像の説明を入力

しかし、今、私は別の問題に直面しています。ジョブの実行に失敗しました。java.lang.reflect.InvocationTargetException、io.druid.indexer.JobHelper.runJobs(JobHelper.java:369) ~[druid-indexing-hadoop-0.9.2.jar:0.9.2] で。

ここに画像の説明を入力

ここで報告されたものと同様: https://groups.google.com/forum/#!topic/druid-development/_JXvLbykD0E . しかし、少なくともスタックトレース (許可) にはより多くのヒントがあります。私の場合はそれほど明確ではありません。同じ問題を抱えている人はいますか?

!!!もう一度更新!!!

これは私が抱えているケースだと思います。同じ: https://groups.google.com/forum/#!topic/druid-user/4yDRoQZn8h8

そして、Hadoop のタイムライン サーバーを介して MR のログをチェックして確認しました。

ここに画像の説明を入力

修正してから、この投稿を更新してみましょう。

更新: これを見つけました: https://groups.google.com/forum/#!topic/druid-user/U6zMkhm3WiU

更新:いいえ。"mapreduce.job.classloader": "true" を設定すると、マップタスクで別の問題が発生します: java.lang.ClassNotFoundException: javax.validation.Validator at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java .lang.ClassLoader.loadClass(ClassLoader.java:424).... このクラスローディング全体:(

したがって、犯人はguiceライブラリです。Druid 0.9.2 は Guice 4.1.0 を使用していますが、Hadoop 2.7.3 は Guice 3.0.0 のままで、mapreduce.job.classloader が機能していません (別の Java クラスが見つからないという問題が発生します)。

今何をする?Druid から Hadoop に Guice 4.1.0 をコピーしますか?

ここに画像の説明を入力

元の投稿

Druid (0.9.2) がリソース マネージャーにジョブを送信しない (そしてジョブが Hadoop クラスターで実行される) のはなぜですか? 誰かが私が見逃している詳細を指摘できますか?

ホスト名が「hadoop」に設定されているマシンで、バージョン 2.7.2 を実行している Hadoop クラスター (疑似) があります。その Hadoop と私のドルイドは、別々の Docker インスタンスで実行されます。druid docker には、hadoop インスタンスへの --link があります。

ログから、ローカルで MR を実行していることがわかります (LocalJobRunner を使用)。

ここに画像の説明を入力

また、ログから、HDFS をチェックすることで、インデックス作成が成功したことを確認できます。

ここに画像の説明を入力

また、YARN UI から... ジョブが送信されていません。

ここに画像の説明を入力

ドキュメントに従ってすべてを構成しました。私の Druid の core-site.xml には、次のものがあります。

<property>
  <name>fs.default.name</name>
  <value>hdfs://hadoop:9000</value>
</property>

(はい、fs.defaultFS ではなく fs.default.name です... Druid 拡張機能はまだ 2.3.0 を使用しており、defaultFS は 2.4.x になるまで不明です)。少し回避: Druid のクラスパスにバグがあると思います。実行中のワーカーのクラスパスのリストに Hadoop 依存関係が追加されていません (コモンのランタイム プロパティで既定の座標を既に指定しています)。

ここに画像の説明を入力

また、overlord runtime.properties で、インデックス ランナー タイプをリモートに指定しました。middleManager の runtime.properties も同様です。これらの構成が Druid によって取得されたことがわかりました。

ここに画像の説明を入力

また、インデックス作成ログのストレージ タイプを HDFS に設定すると、ファイルが HDFS に保存されることを確認できます。

ここに画像の説明を入力

したがって、ディープストレージに関する限り、すべて問題ありません。まさにこの Map-Reduce です。クラスターで実行されていません。誰かが同じ問題に遭遇しましたが、スレッドからの解決策はありません。ここ: https://groups.google.com/forum/#!topic/druid-user/vvX3VEGMTcw

ディープ ストレージに問題がないことを確認できます (入力ファイルは指定した HDFS パスから取得され、セグメントも HDFS に保存されています)。

私は何が欠けていますか?

4

2 に答える 2

1

validation.jar を hadoop/share/hadoop/common/lib/ に配置する必要があることがわかりました ( https://mvnrepository.com/artifact/javax.validation/validation-api * からダウンロードしてください)。

それをドキュメントの内容と組み合わせます。Druid のインデックス作成タスク json で「mapreduce.job.classloader」を「true」に設定します。

そして、あなたはそれを機能させるでしょう:) Druid 0.9.2 with Hadoop 2.7.3

*) 理由はわかりませんが、Druid がクラスパス内のすべての jar を Hadoop にアップロードしたことがわかりました (そして、validation.jar がそこにあります)。JVM がカスタム クラスローダーから javax.* ライブラリをロードする方法に制限があるのか​​もしれません (?)

于 2016-12-12T18:11:21.143 に答える
0

druid docsで指摘されているように、hadoop conf ファイルの core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml をコピーする必要があります。

于 2016-12-12T15:18:51.753 に答える