【超詳しい】Apache Duridチュートリアル エントリーからインストールまで

ファイル

1.デュリッドの概要

Apache Druid は、時系列データベース、データ ウェアハウス、および全文検索システムの特性を統合した分析データ プラットフォームです。この記事では、Druid の機能、使用シナリオ、技術的機能、およびアーキテクチャについて簡単に説明します。これは、データ ストレージ ソリューションの選択、Druid ストレージに関する洞察、時系列ストレージに関する洞察などに役立ちます。

Apache Druid は、高性能のリアルタイム分析データベースです。

1.1 なぜ使うのか

1.1.1 クラウド ネイティブ データベース

最新のクラウドネイティブ、ストリームネイティブ、分析データベース

Druid は、高速なクエリと高速なデータ取り込みワークフロー向けに設計されています。Druid は、強力な UI、実行時の操作クエリ、および高性能な同時処理を備えている点で優れています。Druid は、さまざまなユーザー シナリオを満たすデータ ウェアハウスに代わるオープン ソースと見なすことができます。

1.1.2 簡単な統合

既存のデータ パイプラインと簡単に統合

Druid は、メッセージ バス (Kafka、Amazon Kinesis など) からデータをストリーミングしたり、データ レイク (HDFS、Amazon S3、その他の同様のデータ ソースなど) からファイルをバッチ ロードしたりできます。

1.1.3 超高性能

従来のソリューションよりも 100 倍高速なパフォーマンス

  • データの取り込みとデータのクエリに関する Druid のベンチマーク パフォーマンス テストは、従来のソリューションよりもはるかに優れています。

  • Druid のアーキテクチャには、データ ウェアハウス、時系列データベース、および検索システムの優れた機能が組み込まれています。

1.1.4 ワークフロー

新しいワークフローのロックを解除

Druid は、クリックストリーム、APM (アプリケーション パフォーマンス管理システム)、サプライ チェーン (サプライ チェーン)、ネットワーク テレメトリー、デジタル マーケティング、およびその他のイベント駆動型のシナリオの新しいクエリ メソッドとワークフローを解き放ちます。Druid は、リアルタイム データと履歴データの高速なアドホック クエリ用に構築されています。

1.1.5 複数のデプロイ方法

AWS/GCP/Azure、ハイブリッド クラウド、k8s、レンタル サーバーにデプロイ可能

Druid は、オンプレミスでもクラウドでも、あらゆる Linux 環境にデプロイできます。Druid のデプロイは非常に簡単です。サービスを追加または削除することで拡大または縮小します。

1.2 使用シナリオ

Apache Druid は、リアルタイムのデータ抽出、高パフォーマンスのクエリ、および高可用性の要件が高いシナリオに適しています。したがって、Druid は、豊富な GUI を備えた分析システムとして、または高速な集約を必要とする高度な同時実行 API のバックエンドとしてよく使用されます。Druid は、イベント指向のデータにより適しています。

1.2.1 一般的な使用シナリオ

より一般的な使用シナリオ

1.2.1.1 ユーザーの活動と行動

Druid は、クリックストリーム、アクセス ストリーム、およびアクティビティ ストリームのデータでよく使用されます。特定のシナリオには、ユーザー エンゲージメントの測定、製品発売のための A/B テスト データの追跡、ユーザーによる使用方法の理解などがあります。Druid は、ユニーク カウント メトリックなどのユーザー メトリックを正確かつ概算で計算できます。これは、毎日のアクティブ ユーザーなどの指標を 1 秒で概算して (平均精度 98%)、一般的な傾向を確認したり、利害関係者に提示するために正確に計算したりできることを意味します。ドルイドを使用して「ファネル分析」を行い、あるアクションを実行して別のアクションを実行しないユーザーの数を測定できます。これは、製品追跡のユーザー登録に役立ちます。

1.2.1.2 ネットワークの流れ

Druid は、ネットワーク フロー データの収集と分析によく使用されます。Druid は、ストリーム データの分割と任意の属性との結合を管理するために使用されます。Druid は、多数のネットワーク フロー レコードを抽出することができ、クエリ時に多数の属性をすばやく組み合わせて並べ替えることができるため、ネットワーク フローの分析が容易になります。これらの属性には、IP やポート番号などのコア属性だけでなく、地理的な場所、サービス、アプリケーション、デバイス、ASN などの追加の拡張属性も含まれます。Druid は、固定されていないスキーマを処理できます。つまり、任意のプロパティを追加できます。

1.2.1.3 デジタル マーケティング

Druid は、オンライン広告データの保存とクエリによく使用されます。このデータは通常、広告サービス プロバイダーから提供され、広告キャンペーンのパフォーマンス、クリック率、コンバージョン率 (消費率)、およびその他の指標を測定および理解するために重要です。

Druid はもともと、広告データ用の強力なユーザー向け分析アプリケーションとして設計されました。広告データの保存に関しては、Druid にはすでに多数の制作慣行があり、世界中の多数のユーザーが数千台のサーバーに PB レベルのデータを保存しています。

1.2.1.4 アプリケーションのパフォーマンス管理

Druid は、アプリケーションによって生成された運用データを追跡するためによく使用されます。ユーザー アクティビティの使用シナリオと同様に、これらのデータは、ユーザーがアプリケーションと対話する方法に関するものである可能性があり、アプリケーション自体によって報告されるインジケーター データである可能性があります。Druid を使用すると、ドリルダウンしてアプリケーションのさまざまなコンポーネントのパフォーマンスを確認し、ボトルネックを特定し、問題を見つけることができます。

多くの従来のソリューションとは異なり、Druid には、ストレージ容量が小さく、複雑さが少なく、データ スループットが高いという特徴があります。数千の属性を使用してアプリケーション イベントをすばやく分析し、複雑な負荷、パフォーマンス、使用率の指標を計算できます。たとえば、95% のクエリ レイテンシに基づく API エンドポイント。データセンターの場所別の統計など、ユーザーのポートレート別の統計など、日別のデータなど、一時的な属性ごとにデータを整理およびセグメント化できます。

1.2.1.5 IoT およびデバイスのメトリック

Driud は、サーバーとデバイスを処理するためのメトリック データを格納するための時系列データベース ソリューションとして使用できます。マシンが生成したリアルタイムのデータを収集してアドホック分析を迅速に実行し、パフォーマンスの測定、ハードウェア リソースの最適化、問題の特定を行います。

多くの従来の時系列データベースとは異なり、Druid は本質的に分析エンジンであり、時系列データベース、カラム分析データベース、検索システムの概念を組み合わせたものです。時間ベースのパーティショニング、カラムナ ストレージ、および検索インデックスを単一のシステムでサポートします。これは、時間ベースのクエリ、数値集計、および取得フィルター クエリがすべて非常に高速であることを意味します。

メトリクスに数百万の一意のディメンション値を含め、任意のディメンションでグループとフィルターを自由に組み合わせることができます (Druid のディメンション ディメンションは、時系列データベースのタグに似ています)。タグ グループとランクに基づいて、多数の複雑なメトリックを計算できます。また、従来の時系列データベースよりも高速にタグを検索およびフィルタリングできます。

1.2.1.6 OLAP とビジネス インテリジェンス

Druid は、ビジネス インテリジェンスのシナリオでよく使用されます。企業は Druid を導入してクエリを高速化し、アプリケーションを強化します。Hadoop ベースの SQL エンジン (Presto や Hive など) とは異なり、Druid は高い同時実行性と 1 秒未満のクエリ用に設計されており、UI を介したインタラクティブなデータ クエリを強化します。これにより、ドルイドは実際の視覚的相互作用分析により適したものになります。

1.2.2 適切なシナリオ

使用シナリオが次の特性を満たしている場合、Druid は非常に優れた選択肢です。

  • データはより頻繁に挿入されますが、データの更新頻度は低くなります
  • ほとんどのクエリ シナリオは、集計クエリとグループ化クエリ (GroupBy) であり、特定の検索クエリとスキャン クエリもあります。
  • データクエリのレイテンシを 100 ミリ秒から数秒に設定する
  • データには時間属性があります (Druid は時間に合わせて最適化および設計されています)
  • 複数テーブルのシナリオでは、各クエリは 1 つの大きな分散テーブルのみにヒットし、クエリは複数の小さなルックアップ テーブルにヒットする可能性があります。
  • シナリオには、迅速にカウントおよびソートする必要がある、カーディナリティの高い次元データ (URL、ユーザー ID など) の列が含まれています。
  • Kafka、HDFS、Amazon S3 などのオブジェクト ストレージからデータをロードする必要がある
1.2.3 不適切なシナリオ

ユースケースが次の特性に適合する場合、Druid の使用は適切ではない可能性があります。

  • 主キーに基づく既存のデータに対する低待機時間の更新操作。Druid はストリーミング挿入をサポートしていますが、ストリーミング更新はサポートしていません (更新操作はバックグラウンド バッチ ジョブを介して行われます)
  • 待ち時間が重要でないオフライン データ システム
  • シナリオには大規模な結合 (1 つの大きなファクト テーブルを別の大きなファクト テーブルに結合すること) が含まれており、これらのクエリを完了するのに長時間かかることは許容されます。

2. デュリッドとは

Apache Druid は、オープン ソースの分散データ ストレージ エンジンです。

Druid のコア設計には、OLAP/分析データベース、時系列データベース、および検索システムの概念が組み込まれており、幅広いユース ケースに適用できる統一されたシステムを作成します。Druid は、これら 3 つのシステムの主な機能を Druid のインジェスト レイヤー (データ インジェスト レイヤー)、ストレージ フォーマット (ストレージ フォーマット レイヤー)、クエリ レイヤー (クエリ レイヤー)、およびコア アーキテクチャ (コア アーキテクチャ) に統合します。

ファイル

2.1 主な特長

2.1.1 カラム型ストレージ

Druid は、データの各列を個別に保存および圧縮します。また、クエリを実行する際には、クエリが必要な特定のデータのみがクエリされ、高速スキャン、ランキング、および groupBy がサポートされています。

2.2.2 ネイティブ検索インデックス

Druid は、文字列値の逆インデックスを作成して、高速なデータ検索とフィルタリングを実現します。

2.2.3 ストリーミングとバッチ データの取り込み

Apache kafka、HDFS、AWS S3 コネクタ、ストリーム プロセッサをすぐに使用できます。

2.2.4 柔軟なデータスキーマ

Druid は、変化するデータ スキーマとネストされたデータ型に適切に適応します。

2.2.5 時間ベースの最適化されたパーティショニング

Druid は、時間に基づいてデータをインテリジェントに分割します。その結果、Druid の時間ベースのクエリは、従来のデータベースよりも大幅に高速になります。

2.2.6 サポート SQL ステートメント

Druid は、ネイティブの JSON ベースのクエリに加えて、HTTP および JDBC ベースの SQL もサポートしています。

2.2.7 水平スケーラビリティ

1 秒あたり数百万のデータ取り込み速度、大量のデータ ストレージ、1 秒未満のクエリ。

2.2.8 操作とメンテナンスの容易さ

サーバーを追加または削除することで、拡張および縮小できます。Druid は、自動リバランスとフェイルオーバーをサポートしています。

2.3 技術選択

ファイル

技術比較
ドルイド

は時系列データをリアルタイムで処理する OLAP データベースです. そのインデックスは最初に時間に従ってセグメント化され、クエリもタイムラインに従ってルーティングされます.

麒麟

コアとなるのはCubeです.Cubeは事前にデータに対して多次元の索引付けを行うプリコンピューティング技術です.クエリの際には元のデータにアクセスせずに索引のみをスキャンして高速化します.

後で

MapReduce を使用せず、ほとんどのシナリオで Hive よりも桁違いに高速です. 重要なのは、すべての処理がメモリ内で行われることです.

インパラ

メモリ内操作に基づいているため、高速であり、Presto ほど多くのデータ ソースをサポートしていません。

スパーク SQL

Spark プラットフォーム上の OLAP フレームワークに基づいており、基本的な考え方は、マシンを追加して並列計算を実行し、それによってクエリ速度を向上させることです。

それは

最大の特徴は、インデックスの問題を解決するために逆インデックスが使用されていることです。調査によると、ES はデータの取得と集計に Druid よりも多くのリソースを使用します。

フレームの選択
  • 大規模データのクエリ効率から: Druid > Kylin > Presto > Spark SQL
  • サポートされているデータ ソースに関して: Presto > Spark SQL > Kylin > Druid

2.4 データの取り込み

Druid は、ストリーミングとバッチ データの取り込みの両方をサポートしています。Druid は通常、Kafka などのメッセージ バス (ストリーミング データの読み込み用) または HDFS などの分散ファイル システム (バルク データの読み込み用) を介して生データ ソースに接続します。

Druid は、インデックス処理を通じて生データをセグメントの形式でデータ ノードに保存します. セグメントは、クエリに最適化されたデータ構造です.

ファイル

2.5 データストレージ

ほとんどの分析データベースと同様に、Druid はカラム型ストレージを使用します。さまざまな列のデータ型 (文字列、数値など) に応じて、Druid はさまざまな圧縮方法とエンコード方法を使用します。Druid は、さまざまな列タイプに対してさまざまなタイプのインデックスも構築します。

検索システムと同様に、Druid は文字列列の逆インデックスを作成して、より高速な検索とフィルタリングを実現します。時系列データベースと同様に、Druid は時間に基づいてデータをインテリジェントに分割し、時間ベースのクエリを高速化します。

ほとんどの従来のシステムとは異なり、Druid はデータを取り込む前に事前に集計できます。この事前集計操作はロールアップと呼ばれ、ストレージ コストを大幅に節約できます。

ファイル

2.6 クエリ

Druid は、JSON-over-HTTP および SQL クエリ メソッドをサポートしています。標準の SQL 操作に加えて、Druid は多数の独自の操作もサポートしており、Druid が提供するアルゴリズム スイートは、カウント、ランキング、分位数の計算をすばやく実行できます。

ファイル

Drui は堅牢なシステムになるように設計されており、24 時間年中無休で実行する必要があります。

Druid には、長期間の運用を保証し、データ損失がないことを保証する次の機能があります。

2.6.1 データコピー

Druid は設定されたコピー数に従って複数のデータ コピーを作成するため、1 台のマシンに障害が発生しても Druid のクエリには影響しません。

2.6.2 独立したサービス

ドルイドは各主要サービスに明確に名前を付けており、各サービスは用途に応じて調整できます。サービスは、他のサービスの通常の動作に影響を与えることなく、個別に失敗する可能性があります。たとえば、データ インジェスト サービスが失敗した場合、新しいデータはシステムに読み込まれませんが、既存のデータは引き続きクエリできます。

2.6.3 自動データバックアップ

Druid は、すべてのインデックス付きデータをファイル システムに自動的にバックアップします。ファイル システムは、HDFS などの分散ファイル システムにすることができます。すべての Druid クラスタ データが失われ、バックアップ データからすばやくリロードできます。

2.6.4 ローリング更新

ローリング アップデートを使用すると、ユーザーに依存しないダウンタイムなしで Druid クラスタを更新できます。Druid のすべてのバージョンは下位互換性があります。

3. インストールと展開

3.1 環境紹介

3.1.1 Durid ポート一覧

以下は、ポート占有によるサーバーの起動失敗を防ぐための Durid のデフォルト ポート リストです。

役割 ポート 導入
コーディネーター 8081 クラスター上のデータの可用性を管理する
歴史的 8083 過去にクエリされたデータを保存する
ブローカ 8082 外部クライアントからのクエリ要求の処理
リアルタイム 8084
オーバーロード 8090 データ取り込みワークロードの分散を制御する
中間管理職 8091 データの取り込みを担当
ルーター 8888 リクエストをブローカー、コーディネーター、およびオーバーロードにルーティングできます

3.2 インストール方法

Druid インストール パッケージを入手するには、いくつかの方法があります。

3.2.1 ソースコードのコンパイル

druid /releaseは主に、実際の環境で周囲の依存関係を組み合わせたり、特定のクエリをサポートする最適化を追加したりするなど、カスタマイズされた要件に使用されます。

3.2.2 公式サイトからのダウンロード

公式 Web サイトのインストール パッケージのダウンロード: Druid の展開と操作のための最も基本的なコンポーネントを含むダウンロード

3.2.3 Imply コンボ キット

つまり、このスイートには、安定したバージョンの Druid コンポーネント、リアルタイム データ書き込みサポート サービス、グラフィカル表示クエリ Web UI および SQL クエリ サポート コンポーネントなどが含まれています。その目的は、Druid ベースのデータ分析アプリケーション製品を構築して、より便利かつ迅速な展開。

3.3 スタンドアロン構成のリファレンス

3.3.1 ナノクイックスタート

1CPU、4GB RAM

  • 開始コマンド:bin/start-nano-quickstart
  • 構成ディレクトリ:conf/druid/single-server/nano-quickstart
3.3.2 マイクロクイックスタート

4 CPU、16GB RAM

  • 開始コマンド:bin/start-micro-quickstart
  • 構成ディレクトリ:conf/druid/single-server/micro-quickstart
3.3.3 小

8 CPU、64GB RAM (~i3.2xlarge)

  • 開始コマンド:bin/start-small
  • 構成ディレクトリ:conf/druid/single-server/small
3.3.4 ミディアム

16 CPU、128GB RAM (~i3.4xlarge)

  • 開始コマンド:bin/start-medium
  • 構成ディレクトリ:conf/druid/single-server/medium
3.3.5 大

32 個の CPU、256 GB の RAM (~i3.8xlarge)

  • 開始コマンド:bin/start-large
  • 構成ディレクトリ:conf/druid/single-server/large
3.3.6 非常に大きい

64 CPU、512GB RAM (~i3.16xlarge)

  • 開始コマンド:bin/start-xlarge
  • 構成ディレクトリ:conf/druid/single-server/xlarge

3.4 スタンドアロン版のインストール

3.4.1 ソフトウェア要件
  • Java 8 (8u92+)
  • Linux、Mac OS X、またはその他の Unix ライクな OS (Windows はサポートされていません)
  • Docker 環境をインストールする
  • Docker-compose 環境をインストールする
3.4.2 ハードウェア要件

Druid には、いくつかの単一サービス構成の例と、それらの構成で Druid プロセスを開始するためのスクリプトが含まれています。

迅速な評価のためにラップトップのような小さなマシンで実行している場合、マイクロクイックスタート構成は 4CPU/16GB RAM 環境に適しています。チュートリアル以外でさらに評価するために単一マシンのデプロイを使用する予定がある場合は、マイクロクイックスタートよりも大きな構成を使用することをお勧めします。

構成例は大規模な単一マシン用に提供されていますが、大規模では、フォールト トレランスとリソース競合の削減のために、クラスター化された展開で Druid を実行することをお勧めします。

3.5 インストールを暗示する

Imply メソッドをインストールすることをお勧めします. Imply メソッドは、グラフィックやレポートなどの機能だけでなく、ドルイド コンポーネントを提供します。

3.5.1 perl のインストール

druidの起動にはperl環境が必要なため、インストールが必要です

yum install perl gcc kernel-devel
3.5.2 ファイアウォールをオフにする
#查看防火状态
systemctl status firewalld
#暂时关闭防火墙
systemctl stop firewalld
#永久关闭防火墙
systemctl disable firewalld

ファイル

3.5.3 JDK のインストール

お使いのシステムに一致するバージョンを選択してください。私は Centos7 64 ビットなので、私だったらこのバージョンを選択します。ダウンロードすると、末尾が tar.gz になることを覚えておいてください。

3.5.3.1 JDK のダウンロード

Oracle の公式 Web サイトにアクセスしてjdk1.8をダウンロードし、jdk-8u301-linux-x64.tar.gz

ファイル

ファイルをローカルにダウンロードし、linux ディレクトリにアップロードします。

3.5.3.2 アップロードと解凍

ファイルをアップロードする

mkdir /usr/local/java

ディレクトリを解凍する

tar -zxvf jdk-8u301-linux-x64.tar.gz
3.5.3.3 環境変数の設定

環境変数を構成し、プロファイル ファイルを変更して、次のコンテンツを追加します。

vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

ファイル

3.5.3.4 効果的な構成
source /etc/profile
3.5.3.5 環境を確認する
java -version

ファイル

3.5.4 インストールの暗示
3.5.4.1 Imply の公式 Web サイトにログインする

https://imply.io/get-startedにアクセスし、 Implyの公式 Web サイトに入り、適切なバージョンの Imply のインストール パッケージを見つけ、簡単な情報を入力してダウンロードします。

ファイル

3.5.4.2 解凍インプライド

ダウンロード後、サーバーにアップロードして解凍

# 创建imply安装目录
mkdir /usr/local/imply
# 解压imply
tar -zxvf imply-2021.05-1.tar.gz
3.5.4.3 環境の準備

imply-2021.05-1ディレクトリに入った後

# 进入imply目录
cd imply-2021.05-1
3.5.4.4 クイックスタート

ローカル ストレージ、デフォルトのメタデータ ストレージ ダービーを使用し、Zookeeper から始めて体験するdruid

# 创建日志目录
mkdir logs
# 使用命令启动
nohup bin/supervise -c conf/supervise/quickstart.conf > logs/quickstart.log 2>&1 &
3.5.4.5 ログの表示

quickstart.logimpl の起動ログを表示するには、次のようにします。

tail -f logs/quickstart.log

ファイル

サービスが開始されるたびに、ログが出力されます。var/sv/xxx/current からサービス起動時のログ情報を確認できます

tail -f var/sv/broker/current

ファイル

3.5.4.6 Implyへのアクセス

9095ポートにアクセスしてアクセスできるimply管理ページ

http://192.168.64.173:9095/

ファイル

3.5.4.7 ドルイドへのアクセス

8888ポートにアクセスしてアクセスdruidます

http://192.168.64.173:8888/

ファイル

この記事は Yubo Xuegu の野生の建築家によって発行されました. この記事が役に立ったら, フォローして気に入ってください. 提案があれば, コメントや個人的な手紙を残すこともできます. あなたのサポートは私にとって原動力です.作成に固執する. ソースを示してください!

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/jiagoushi/blog/5569936