omnidata-hive-connector の概要
omnidata-hive-connector は、ビッグ データ コンポーネント Hive のオペレーターをストレージ ノードにプッシュダウンするサービスです。これにより、ニアデータ コンピューティングが実現され、ネットワーク帯域幅が削減され、Hive のクエリ パフォーマンスが向上します。Tez 上の Hive は現在サポートされています。omnidata-hive-connector は、openEuler コミュニティでオープンソース化されています。
オムニデータ アーキテクチャ
OmniData は、オペレーター プッシュダウンの総称です。OmniData は主に次の 4 つの部分で構成されます。
1. OmniData クライアントは、さまざまなエンジンに対応するプラグインを提供するオープン ソースの部分です。Hive エンジンの場合、omnidata-hive-connector は OmniData クライアントとして機能し、HAF アノテーションとコンパイルされたプラグイン機能を使用して、タスクをストレージ ノードの OmniData サーバーに自動的にプッシュします。
2. Haf Host は、コンピューティング ノードに展開されるライブラリ ライブラリで、外部タスク オフロード機能を提供し、タスクを Haf Offload にプッシュします。
3. Haf Offload は lib ライブラリであり、タスク実行機能を提供するためにストレージ ノードにデプロイされ、OmniData Server ジョブの実行に使用されます。
4. OmniData Server は、オペレーター プッシュダウンの実行機能を提供し、Haf ホストによってプッシュダウンされたタスクを受け取ります。
オムニデータハイブコネクタ関数
1. Hive の Filter、Aggregation、Limit 演算子を実装して計算のためにストレージ ノードにプッシュダウンし、事前にデータをフィルタリングして、ネットワーク送信データの量を削減し、パフォーマンスを向上させます。
2. プラグイン方式で Hive に登録し、疎結合方式でオペレーターをプッシュダウンします。オペレーターは、機能スイッチを通じてアクティブ化または有効化できます。
3. HDFS/Ceph ファイルシステムのプッシュダウンを実現します。
4. Orc/Parquet ファイルストレージ形式のプッシュダウンを実装します。
5. Hive の組み込み UDF (cast、instr、length、 lower、replace、substr、upper) のプッシュダウンを実装します。
omnidata-hive-connector アプリケーション シナリオ
ビッグ データ コンポーネント Hive の一般的なハードウェア構成のストレージと計算の分離シナリオでは、標準テスト ケース TPC-H とomnidata-hive-connector をそれぞれ実行します。
omnidata-hive-connector を実行した後、10 個の SQL のパフォーマンスが平均 40% 以上向上していることがわかります。
omnidata-hive-connectorの主な最適化手法
1. データ選択率に基づいた動的なプッシュダウンを実現します。
omnidata-hive-connector は、Hive 統計情報を通じてデータ選択率を計算します (選択率が低いほど、より多くのデータがフィルターされます)。パラメータを通じてプッシュダウン選択率のしきい値を設定することで、omnidata-hive-connector は動的に選択を減らすことができます。しきい値を超える演算子は実行のためにストレージ ノードにプッシュされ、ストレージ ノードが計算のためにデータをローカルで読み取り、計算およびフィルタリングされたデータ セットをネットワーク経由でコンピューティング ノードに返すことができるようになり、ネットワークの伝送効率が向上し、パフォーマンスの最適化。データの選択率に加えて、オペレーターがサポートされているかどうか、残りのリソースが十分であるかどうかにも基づいて判断されます。
2.フィルター部分を押し下げます。
フィルター内にプッシュダウンをサポートする演算子とプッシュダウンをサポートしない演算子の両方が存在する場合、omnidata-hive-connector はサポートされていない演算子に対して新しいフィルターを構築し、ネイティブ Hive 計算プロセスを使用して、プッシュダウンをサポートする演算子を再計算します。選択率を決定し、新しい選択率に基づいてプッシュダウンするかどうかを決定します。
3. ストレージとコンピューティングのコラボレーション、コンピューティング リソースの合理的な使用。
omnidata-hive-connector は、オペレーターをストレージ ノードに押し込んで計算を実行することで、コンピューティング ノードの CPU 使用率を効果的に削減し、ストレージ ノードの CPU を使用して全体的なコンピューティング効率を向上させることができます。TPC-H の SQL を例に挙げると、最適化前は計算ノードの平均 CPU 使用率が 60% 以上でしたが、最適化後は計算ノードの平均 CPU 使用率が約 40% になりました。
4. ネットワーク送信を減らすために、事前にデータをフィルタリングします。
データの事前フィルタリングは、オムニデータ ハイブ コネクタのパフォーマンス向上の主な原因であり、ストレージ ノードでデータをフィルタリングし、ネットワーク送信を削減し、コンピューティング ノードによって処理されるデータ量を削減します。
TPC-H の SQL を例にとります。SQL には複数のフィルタが含まれています。最適化の前に、オペレータはネットワーク上のリモート ストレージ ノードから約 60 億行のデータを読み取る必要があります。最適化後は、フィルタリングされた有効なデータの 4,000 万行のみを読み取る必要があります。送信しました。OK。実行効率が 60% 以上向上しました。
omnidata-hive-connector フォローアップ計画
このプロジェクトは、openEuler コミュニティでオープン ソース化されています。omnidata-hive-connector 機能は、新しい機能を積極的にサポートします。フォローアップ プランは次のとおりです。
1. タイムスタンプと 10 進データ形式をサポートします。
2. BloomFilter オペレーターのプッシュダウンをサポートします。
3. ユーザー定義関数のプッシュダウンをサポートします。
コードアドレス:
https://gitee.com/openeuler/omnidata-hive-connector
興味のある友人は、openEuler Bigdata SIG に参加して、ビッグ データの分野のテクノロジーについて話し合うことを歓迎します。