問題タブ [druid]
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.
hadoop - 膨大な量のデータに対する OLAP リアルタイム クエリ - オプション
1,800 億行と 100 以上の列を持つ OLAP テーブルがあり、ボリュームは Hive で 8 TB 近くあります。ほとんどの列はディメンションであり、メトリクス列もほとんどありません。ダッシュボード アプリケーションを実行するためのアドホック クエリをサポートするリアルタイム システムを構築したいと考えています。クエリは 10 秒未満のレイテンシで実行される必要があります。
現在、このようなリアルタイムのアドホック クエリ システムを構築するためのオプションを探しており、可能なオプションを確認しており、実際に正しいシステムを選択するのに苦労しています。私たちは見ています
Prestoは、hdfs に直接クエリを実行するために使用できますが、そのような巨大なボリュームに対する低レイテンシ クエリをサポートするかどうかはわかりません。
Cassandra、クエリに従って事前集計されたビューを構築します。
Druid、事前に集約されたビューを構築し、面白そうに見えますが、エンタープライズ サポートはないようです。
ここでは、実際にこれらのコンポーネントから選択するのに苦労しています。また、この要件に適している可能性のある他の関連ツールを見逃していないかどうかもわかりません.
HDFS と密接にやり取りできるツール/データベースを探しています。大容量の読み取りパフォーマンスが良好であれば、他のツールも検討できます。
コンポーネントの選択についてアドバイスをお願いします。また、他のツールについて確認する必要がある場合は、アドバイスをお願いします。
datasource - 既存のドルイド データ ソースの粒度を取得する方法
私は、既存のレコードを取得し、更新してから、更新されたレコードを取り込んで、druid の既存のレコードを更新する作業を行っています。したがって、更新されたレコードを取り込むときに使用される既存のデータソースの粒度をフェッチする必要があります。
graylog2 - druid に graylog2 サーバーからのデータをフィードする
親愛なる
graylog2 サーバーから druid にデータを取得する必要があります (複数のマシンの CPU、メモリ、ディスク使用率など)。
グレイログ マーケットプレイスとトランキリティのドキュメントでプラグインを検索しましたが、グレイログ 2 からデータを取得する解決策は見つかりませんでした。
解決策は graylog2 の REST API を使用することだと思いますが、これをドルイド/静けさの側からどのように「自動化」できますか?
sql - ドルイドとメタマーケットについてアドバイスが欲しい
ログを保存するためのソリューションが必要です (多かれ少なかれ、10 個の標準形式のいずれかに準拠します)。できればリアルタイムで、クエリが高速で、さまざまな有線クエリの結果を簡単に取得できるデータベースに保存する必要があります。たとえば、テキスト本文のキーワードを検索するクエリ、複数のテーブルを含むクエリなどです。
私に推奨されたソリューションは MetaMarket でした。これは、非常に優れたクエリ システムでリアルタイム ロギングを行うようです。ただし、コストについては不明であり、そのような複雑なソリューションが必要かどうかはわかりません。
私が理解していることから、メタマーケットの「セールスポイント」はドルイドデータベースであり、データベースはオープンソースであり、スタックの外部に展開できると述べています。だから私がここに尋ねに来たのは:
Druid を使用してリアルタイム ロギング システムをデプロイした経験のある方はいますか? 大変でしたか?どのくらいかかりましたか?課題は何ですか? ドルイド以外に使った技術は?おすすめの読書はありますか?
メタマーケットの経験がある人はいますか。もしそうなら、もう一度、どれくらい大変でしたか? どのくらいかかりましたか?課題は何ですか?生産開始後のコストはどうでしたか? この件に関して、お勧めの読み物はありますか?
また、おまけの質問: druid について「公平な専門家」によって行われたベンチマークは実際にありますか? リアルタイム イン リアルタイム アウト データベースが Java で記述されているという事実は、ちょっと信じがたいことです。
druid - Kafka から消費して Druid の問題に送信
私は、Kafka から読み取り、いくつかの魔法を実行し、データを Druid に送信する Java アプリケーションを持っています。
Kafka からデータを消費し、最終的に Tranquillity を使用して Druid に送信する Kafka ワーカー スレッド (トピックごとに約 15) があります。
これが問題です。1 つのスレッドで作業する場合、すべて問題ありません。複数で作業すると、例外が発生します。
私は次の方法で作業してみました:
- いくつかの Tranquility オブジェクトを備えた Spring Druid サービス。
- スプリングはありません。スレッドごとにいくつかの Tranquility オブジェクトを作成するだけです。
並行性の問題かもしれないと思いました。
「いくつかの静けさ」と言うときは、データをさまざまなテーブルに送信していることを意味します。
私は得る:
hadoop - Druid + Hadoop (ディープストアとインデックス作成の両方の用途)
別のマシンで Hadoop サーバー (疑似分散モード) を実行している場合でも、これらのファイルを Druid の conf dir の下に置く必要がありますか? : http://druid.io/docs/latest/configuration/hadoop.html
私の見立てでは:
それらの-site.xmlファイルはHadoopサーバー用のようです...そしてDruidはHadoopクライアントとしてのみ機能します。したがって、Druid に hdfs-site.xml は必要ないと思います。
Core-site.xml... わかりました、取得できます。つまり、Druid は名前ノード (hadoop) の IP を知る必要があります。
Mapred-site.xml、部分的に。Druid は mapreduce ジョブのステータスを知る必要があります (インデックス作成を MR ジョブとして Hadoop に委任すると思います)。そのため、これらのジョブ トラッカーと通信して、インデックス作成が完了したか、失敗したか、進行中であるかを確認する必要があります。そのためには、Hadoop JT の URL が必要です。
ただし、Druid は MR ジョブに積極的に参加しないため、このプロパティ「mapreduce.cluster.local.dir」は必要ありません。
ヤーン-site.xml? 多分それは部分的にとどまるべきです。少なくとも仕事を提出するため(?)。
HDFS-site.xml はどうですか? これは完全に廃棄できると思います。
容量スケジューラ.xml? それは行くことができます。
間違っている場合は修正してください。
これらの質問/疑問が生じるのは、私が Hadoop にまったく慣れていないためです。Hadoop セットアップを実行しています。疑似分散モード。また、ファイルを読み書きするためにjavascript webhdfsライブラリでテストしました。また、hadoop dist が提供するサンプル MR ジョブも試しました。したがって、私の Hadoop セットアップは問題ないと思います。Druid サイトについては、ドキュメントが明確ではないこともあり、少し確信が持てません。
ところで....私はhadoop 2.7.2を持っています...ドルイドが使用するhadoop-client libsはまだ2.3.0にあります。
Hadoop サーバーを 2.3.0 にダウングレードする必要がありますか?
http://druid.io/docs/latest/operations/other-hadoop.html
ありがとう、ラカ
hadoop - Druid / Hadoop バッチ インデックス / Map Reduce / YARN / リモートなし、ローカルのみ
解決済み
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 には、次のものがあります。
(はい、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 に保存されています)。
私は何が欠けていますか?