解決済み
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 に保存されています)。
私は何が欠けていますか?