練習と巧みなビッグデータプラットフォームの最適化でのHadoop上のSQL |シェアを記録


巧みなビッグデータアーキテクトジェーン・ベル

この記事は、巧みな偉大な建築家忠リアン「巧みなビッグデータ・プラットフォームの実践と最適化でのHadoop上のSQLは」月18-19からA2M人工知能と機械学習イノベーションサミットを終え、彼のスピーチの内容を共有したデータに基づいています。

説明:この論文は、4つのエリアにHadoopの将来の計画Hadoopのアーキテクチャに導入されたSQLの解析、巧みなSQLをHadoopの、経験の巧みな使用でのHadoop上のSQLからのHadoopプラットフォームの概要に器用なSQL、SQLに紹介し、改善します。

01 HadoopをはじめON SQL

名前が示すようにHadoop上のSQLが、それは実際には、私たちはしばしばハイブ、SparkSQL、プレストを聞いて、SQLエンジンアーキテクチャのHadoop生態学に基づいており、インパラアーキテクチャ、そして、私は単に共通のアーキテクチャの状況を説明します。

Hadoopの-HIVE上のSQL

HIVE、データウェアハウスシステム。これは、データ構造記憶されたデータ、SQL、書き込み、管理を通じて配信大規模に格納された読み出しデータにマッピングされます。


データパターンの定義によれば、貯蔵および出力は、入力は、次に、生成されたタスクを実行するようにスケジュールされた対応するタスクを生成するために、SQL、最適化エンジンをコンパイルされます。

HIVEのエンジンタイプは、現在サポートされています:MR、SPARK、TEZを。


HIVE自体ベースのアーキテクチャ、例えばHiveServer2とMetaStoreServerなどのいくつかの付加的なサービスの提供は、リサイクルアーキテクチャがされています。

また、HiveServer2は、SQLタスクを提出する機能、リモートクライアントを提供し、MetaStoreServerは、リモートクライアントの操作機能のメタデータを提供します。


Hadoopの紹介でSQL -SPARK

実行モードとしてスパーク、DAGへの大規模データ処理エンジンの高速、使いやすい、統一された分析は、メインモジュールは、SQLエンジン、ストリーム処理、機械学習、グラフ処理に分けられます。


Hadoopの紹介でSQL -SPARKSQL

SPARKSQL SPARKベースの計算エンジン、統一されたデータへのアクセスを実現するために、統合ハイブは、標準のJDBC接続をサポートしています。インタラクティブなデータ分析のためのSPARKSQL一般的なシナリオ。


、SQL構文解析構文木と意味解析は、論理的な実施計画を生成し、上記のすべての実行論理SPARKSQL、メイン、メタデータは、最適化されたロジック・実施計画との対話、そして最終的には、ロジックの実行はRDD系統の物理的な実施計画に翻訳そして、タスクを実行します。


Hadoopの導入-PRESTO上のSQL

PRESTO、オープンソースの分散SQLクエリエンジンのクエリのインタラクティブな分析。

メモリベースのコンピューティングので、操作の多数及びMR IO点火エンジンよりも大きな性能PRESTOを計算します。これは、簡単に弾性膨張、サポート機能プラグ可能な接続を持っています。

業界では、米国のグループなどが大規模な使用を持っているFacebookやAirBnb、を含む、多くのケースを使用しています。


Hadoopの導入上のSQL - その他の業界のソリューション


私たちは、それがより実用的で成熟したアーキテクチャ側を示し、Hadoopのアーキテクチャ上のように多くのSQLを参照してください。Hadoopのアーキテクチャ上のSQLを使用して、我々は、大量のデータ処理がサポートを必要と達成することができます。

02のHadoopプラットフォームの概要の巧みなSQL

Hadoopのプラットフォーム上の概要器用なSQL - プラットフォームスケール


プラットフォームSQLは約70万日々の合計を照会し、DQLの総量は18万です。アドホッククラスタマシンは主にインタラクティブ分析と問い合わせ、300S用DQL平均時間のために使用され、内部Loaclタスクおよびアプリケーションアクセラレーションエンジンにアドホックなので、クエリが少ない時間がかかる必要とします。

ETLクラスタは、主にETL処理、およびレポートを生成するために使用されます。DQL 1000の平均時間、DQLのP50は100Sにかかり、DQL P90 4000Sは、これら二つのクラスタに加えて、他の小さなクラスターは、主に個人使用にサービスを提供するために使用される、時間がかかります。

Hadoopプラットフォームの概要上の巧みなSQL - サービスレベル


サービス層は、上位層のアプリケーションです。上位レベルでの同期サービス、ETLプラットフォーム、アドホックプラットフォームとユーザプログラムを含む4つのモジュールを有しています。トップをスケジューリングにおいて、データの4つの側面もあり、サーバログ、例えば、それを後処理、それは直接HDFSに接続され、我々は、さらに、洗浄工程に続く、RBIデータとデータベース情報サービス、同期化サービスは、対応するデータ・ソースにメタデータ情報を渡すであろうと我々は、バックエンド・メタデータ・システムに存在します。

ページには、洗浄、その後の処理が実行され、データが格納されているのHBaseをクロール。

Hadoopのプラットフォーム上の概要器用なSQL - プラットフォームコンポーネント説明


HUE、ノートブックはインタラクティブクエリシステムの主要なプロバイダーです。報告システム、BIシステムは、主に一般的なETL処理で、レポート作成、追加のメタデータシステムは、外国のサービスです。巧みなエンジンは現在、MR、プレストとスパークをサポートしています。

管理システムは主に、当社の現在のクラスタを管理するために使用されます。HiveServer2クラスタルーティングシステムは、主にエンジンを選択するために使用されます。監視システム及び運用保守システムは、主にHiveServer2機関の運転・保守を行います。

私たちは、HiveServer2プロセスを使用する多くの問題に遭遇しました。次に、私は細部誰もが巧みなと最適化の練習方法を説明するでしょう。

03巧みな分析と改善でのHadoop上のSQLの経験

HiveServer2マルチクラスタアーキテクチャ

HiveServer2クラスター、すなわちアドホック及びETLつのクラスタだけでなく、他の小さなクラスターよりも現在ありません。ZK、クライアントがクラスタHiveServer2 ZKを介して接続することができる接続する対応する異なるクラスタが存在します。

ETLクラスターのコアのタスクの安定性を確保するために、一般的に、コアクラスターとクラスターに分類しました。クライアントがHS2を接続すると、我々はタスクの優先度を決定し、優先度の高いタスクがクラスターコアにルーティングされます、優先度の低いタスクは、一般的なクラスタにルーティングされます。


HiveServer2サービス内部フローチャート


BeaconServerサービス

フックでHS2とのサービスのためのBeaconServerフックServerバックエンドサービスは、HS2サービスに加えて、所望の機能を達成します。現在サポートされているモジュールは、ルーティング、監査、SQL書き換え、ミッション制御、エラー解析、最適化の推奨事項が含まれます。

ステートレス、BeaconServerサービスサポート水平スケーリング。要求された量の大きさに基づいて柔軟にスケールのサービスを調整することができます。

動的ロードの設定、BeaconServerサービスは、動的ロードの設定をサポートしています。各スイッチモジュールはサポートしており、サービスのオフライン設定が動的にロード可能達成します。このような融合ルートの比を調整するも、​​モジュールのルーティングエンジン加速クラスタリソースの後端に記載のように。

シームレスなアップグレード、バックエンドモジュールを個別にBeaconServerやサービスオフラインアップグレードをすることができ、HS2は、フックエンドサービスに影響を与えません。

使用中に遭遇したのHadoopプラットフォーム上の痛みのポイントSQL


新しいエンジンの問題は、顔を加速しました

ハイブサポートSPARKとTEZエンジンではなく、本番環境のために。

HadoopのSQLエンジンにSQLは長所と短所、学び、使用するユーザーのためのより高い閾値を持っています。

構文と異なるSQLエンジン間の機能が異なるサポートし、それはコスト高と完全に互換性、テストと作業の互換性の多くを必要とします。

血液管理、アクセス制御、運用、保守管理、リソースの使用異なるSQLエンジンは、それぞれがいくつかの位置が不便なサービスを提供します。

インテリジェントエンジンソリューション

ハイブ、カスタム実装エンジンで。

自動ルーティング機能、エンジンは、適切な加速エンジンを選択し、自動的に提供される必要はありません。

ルールマッチングSQLの撲滅、SQL互換性だけでエンジンを加速するためにプッシュします。

多重HiveServer2のクラスタアーキテクチャ。

インテリジェンスエンジン:主流比較エンジンプログラム


インテリジェンスエンジン:HiveServer2カスタム実行エンジンモジュールの設計

基づきHiveServer2は、二つの方法で実装されています。JDBCは、JDBCインタフェースを介して、クラスタの開始を加速するために、バックエンドのSQLエンジンに送信されますされています。PROXYの方法は、クライアントのローカルSQLエンジン始動加速までプッシュすることです。

バックエンドクラスタを起動するJDBCの方法は、糸をベースとしている、時分割多重化のリソースを達成することができます。たとえば、リソースのアドホッククラスタは自動的にリソース報告システムとして多重化、夜に回復します。


インテリジェンスエンジン:SQLルーティングアーキテクチャの設計

エンジンを切り替えるための、対応する端部HS2フックに実装フックアーキテクチャに基づくHS2ルーティング方式、ルーティング規則SQLのマッチング処理のためのルーティングサービスのBeaconServerバックエンドサービス。異なるクラスタは、異なるルーティングルールを設定することができます。

経路計算サービスの安定性を確保するために、アドホッククラスタSQL、自動的に追加LIMIT上限、のために書き直さチームも設計リライトフックは、データスキャン大量のを防止します。


インテリジェンスエンジン:SQLルーティングルールリスト


スマートエンジン:メリット

統合が容易、SQLエンジンの現在の主流は簡単JDBCおよびPROXY方法を実現することができます。構成により、あなたは単に、このようなようにインパラ、ドリルとして、新しいクエリエンジンを統合することができます。

エンジンの自動選択、エンジンユーザーのコストを削減するだけでなく、移行が容易になります。加速及びエンジンの過負荷の場合に動的に起因する加速性能の過負荷による影響を防止するために、比率を調整することができます。

自動的に動作の信頼性を確保するためにダウングレードします。SQLのサポートフェイルバックのルーティングモジュールは、設定に応じて実行するように戻ってMRにロール、ルートエンジンが故障したのかどうかを選択することができます。

新しいエンジンのためのモジュールの再利用は、あなたが大幅にコストを削減し、HiveServer2血液、認証局、ロック同時実行制御方式でカスタムコレクションを再利用することができます。

資源の再利用、資源共有のためのアドホッククエリは、動的にクラスタリソースの有効利用を確保するために調整することができます。

アプリケーションインテリジェントエンジンDQLの効果


HiveServer2既存のパフォーマンスの問題


FetchTask加速:事前ソートとロジックの最適化

問い合わせが完了すると、ローカルポーリングファイルサイズの結果が返され、その後、LIMITを取得されています。小さなファイルが多数存在し、時間内に大容量のファイルの後端にされている場合この場合、それは常に大幅に実行している時間が長く、ファイル情報とファイルデータを取得し、HDFSと対話し、悪いケースにつながります。

取得する前に、結果のファイルの事前発注の大きさは、あなたが数百倍のパフォーマンスを向上させることができます。

例:200のファイルは現在ありません。199の小さなファイルは、200テスト、小さなファイルの後に大規模なインデックスファイル名の合計レコードを混合1つの大容量のファイルを記録します。


FetchTask加速:事前ソートとロジックの最適化

ハイブはSimpleFetchOptimizerオプティマイザは、時間とスケジュールリソース要求時間を短縮、直接FetchTaskを生成しています。しかし、この最適化のボトルネックが発生します。データの量が少ないが、ファイルの数より多い場合には、ピースの数は、得られたデータのフィルタ条件を選別することができますがたくさんある、より返却する必要があります。この時間は、シリアルは大きな遅延問い合わせを引き起こして、入力ファイルを読み込みますが、加速効果を果たしていませんでした。

新しいファイルの数の条件を決定するSimpleFetchOptimizerオプティマイザでは、最後のミッションは、並行性を増やすことによって加速を達成するために、クラスタ環境に提出されます。

例:現在の500個のファイルのパーティションをお読みください。最適化されたファイル数のしきい値は100です。


大きなテーブルDESC表の最適化

サブパーティションテーブルが多数ありますが、それDESCプロセスは、メタデータ、すべてのパーティションにアクセスすると相互に作用します。最後になりましたが、テーブルに関連する情報だけで戻りました。

メタデータと対話するときに、全体DESCクエリの遅延は、時にメタデータをストレスの多い時代でも結果を返すことができません。

直接加速時間と、メタデータ取得パーティションとの相互作用のプロセスを除去するプロセスのための表DESCは、サブパーティションの数に比例します。

例:10万DESC大きなテーブルのパーティション。


その他の改善

スキップして計算分割多重化されたデータは、統計的な推定の繰り返し入力プロセスを減らします。入力データ集中型のタスク、最大50%の割合をスケジュールします。

parquetSerdeのinit加速、プルーンは、同じテーブルの列を繰り返しスキップマップタスクオペinitが満了した防ぐために最適化されています。

新LazyOutputFormatは、時間を消費し、下流読み取り空のファイルが多数で、その結果、空のファイルを避けるために、別のレコードの出力ファイルを作成しました。

statsTaskは遅すぎる、実行している時間を増やしている過度の重合を防止するために、中間ファイルにつながる、マルチスレッド集約統計をサポートしています。

アドホックはシリアルが問題の遅延時間の全体的な増加にSQLコンパイラーリードを防ぐため、並列コンパイラを開く必要があります。

使用中に遭遇したのHadoopプラットフォーム上の痛みのポイントSQL


Hadoopの上のSQL 巧み使用中:一般的なユーザビリティの問題


HiveServer2最適化サービスが開始

HS2はビューは非常に長い起動時間HS2で、その結果、全体のポーリングメタベース、初期化関数を開始しますマテリアライズドすると、オフライン状態からの再行間隔が大きすぎる、使い勝手が悪いです。

別のスレッドをロードし、遅延読み込みを遅らせるように変更マテリアライズド・ビューは、HS2は、サービス開始には影響を与えません。ロードは、可用性の機能を確保するための情報を、キャッシュされたマテリアライズド・ビューのサポートを取得します。

5分+ <5Sに起動からHS2時間。


HiveServer2熱負荷の設定

高コストの組立ライン、操作を完了するために、サービス上のすべてのタスクの実施を確保する必要がオフHS2そのもの。コンフィギュレーションの変更はとして高い動作周波数、及び熱負荷を達成するために必要であってもよいです。

ThriftServer層ではHS2は、私たちのインターフェイスを高め運用・保守システムの後に開く、自動的に呼び出さ更新する設定を押し下げ、有効にする熱負荷の構成を実現することができます。


ScratchdirのHiveServer2の最適化

scratchdirのHiveServer2は、主に運転中に一時ファイルの保存に使用します。場合は、セッションの作成中HS2は、scratchdirを作成します。ストレスの多い時代に、多数のセッションが上限への接続数の蓄積をもたらす、作成scratchdirの過程でブロックされますHDFS、最終HS2サービスはもはや新しい接続に接続することができますが、サービスの可用性に影響を与えます。

この点で、我々はまず、一般的なお問い合わせのスクラッチディレクトリから分離しtemporayテーブルクエリを作成し、temporayテーブルクエリが怠惰な創造を傷つける作成をサポートしています。一時ファイルの数が多いが影響を受けることになります作成するtemporayテーブルを作成するとHDFS名前ノードの一般的なお問い合わせscratchdir HDFS名前ノードの遅延時間は、通常、応答することができたとき。

また、HS2は、さらに、複数の傷をサポートするように構成され、異なる負荷率が均一な負荷HDFSを達成するために、提供することができるスクラッチ。


ハイブステージ同時スケジューリング異常の修理

ハイブのスケジュールは、2つの問題があります。

親が繰り返し付加されるサブタスクスケジューリングキューを生じる、サブタスクタスクを含む丸めた場合のサブ状態は、非実行タスクの完了時間です。この場合、非状態が初期化状態を実行するように変更する必要があります。

第二に、プロセスは、サブタスクで実行可能かどうかを決定する際に、なぜなら異常状態の検出、照会段階の損失を引き起こし、通常のサブタスクスケジューリングニーズに参加することができません。実行が完了した後にそれが下流のステージが完了していない、直接にはクエリ結果の状態をチェックする完全性を達成するために、エラーをスロー発見された場合この場合は、我々のアプローチは、実施状況のチェックの段階の結果です。


その他の改善

HS2は、クエリのSQLを終了するためのインタフェースを実装しています。この機能を使用すると、速やかに異常なSQLを終了することができます。

メタストアJDOQueryのクエリの最適化、キーワードの異常スキップが長いケイトンメタデータクエリやメタデータの異常な効果の一部を防ぎます。

制御スイッチを増やして、ディレクトリの外観をカバーするために強制的に、問題解決のための上書き外観、与えられたファイル名の変更を挿入します。

ハイブ寄木細工の増加プッシュダウンは、間違った結果につながる、異常な寄木細工OR押し下げ状態を回避するために、設定を閉じました。

機能が制限の最適化を向上させる、大きな文字列のOOMにつながる参加executeForArray。

パーティションのデータによると、スキーマのテーブルを大きくすると、リードデータスキーマ例外が生じパーティションカスケードを修正しない避けるために、機能をお読みください。

使用中に遭遇したのHadoopプラットフォーム上の痛みのポイントSQL


なぜSQLエキスパートシステムを開発

一部のユーザーは、開発中に経験していない、我々は、エラー処理エンジンのリターンを処理することはできません。

いくつかの誤ったエラーメッセージは明確ではないが、ユーザーが正しく、エラーの原因を理解することはできません。

調査タスクの失敗の高コストは、Hadoopのための必要性は、システム全体に非常に精通しています。

ユーザー・エラーSQL、およびSQLの最適化の必要性、共通性をたくさん持っています。マンパワーのメンテナンスコストは高いが、低システムコスト分析。

SQL エキスパートシステム

SQLベースのエキスパートシステムアーキテクチャフックHS2は、3つの主要モジュール、すなわちSQLルール制御モジュール、SQLエラー解析モジュール、およびSQL最適化提案モジュールのBeaconServerバックエンド実装で、あります。SQLエキスパートシステムの知識のキーワードを含むベース、理由の説明、バックエンドデータベースに保存されているいくつかの主要な情報処理プログラム、および蓄積されてきました。

、バックエンドのSQLクエリは、リソースの浪費を回避またはSQL異常なクラスターの安定性に影響を与えるためにSQLエキスパートシステムを通じて例外制御することができます。彼らは問題が発生したユーザーは、直接、プログラムの問題に対処するコストを削減し得ることができます。

例:空のパーティションクエリコントロール。


ジョブ・診断システム

SQLエラー診断エキスパートシステムは、タスクの実行HS2部分のニーズを解決するために、しかしなど仕事の健康、タスク例外として、問題の原因を特定し、解決するために、特殊なシステムを必要とし、我々は、オペレーティングシステムの診断を設計しました。

カウンターと構成分析を収集するために、異なる実行エンジンの糸オペレーティングシステムレベルの診断。運用レベルでは、関連する最適化の提案を前方に置きます。

APIを介して、オペレーティング・システム診断データは、SQLエキスパートシステム、問題分析のための補助的な理由で使用できます。


オペレーティングシステムは、タスクを照会するために、診断クエリページを提供しています。次の規則があまりにも多くのヒットマップタスク問合せプロセスに入っています。


操作インタフェースでは、あなたはまた、より多くの仕事の診断情報を参照し、ジョブ勧告を変更することができます。


使用中に遭遇したのHadoopプラットフォーム上の痛みのポイントSQL


Hadoopの上のSQL 巧み使用中:共通運用・保守の問題


監査分析 - チャート

BeaconServer監査機能はモジュールのサービスです。

表は、フックにHS2により構成され、バックエンドのために、IP、ユーザーやその他の情報を必要なSQLを送信、解析し、データベースを抽出することができ、列及び運用情報を分析して、ドルイドシステムに格納することになります。可視化プラットフォームを介して利用可能なユーザー]セクションオープンデータ。


監査分析 - ホット情報照会

ホットホットスポット情報のクエリは、一定期間内の情報を表示しようとしている、ユーザーのフォーカス操作、ライブラリ、テーブルとその操作のタイプを訪れたかなど。


監査分析 - 血液情報照会

図は、典型的には、統計の範囲のために、従属テーブルの情報提示血液上流側が作成されていることがわかります。


監査分析 - 歴史的なオペレーティングクエリ

動作履歴は、時間の期間に特定のテーブルの動作をさかのぼることができます。ユーザー、クライアント、プラットフォーム、および動作時間についての情報を得ることができます。通常CRUD追跡テーブルのため。


HiveServer2クラスタABスイッチング方式

そのため、サービス自体の組立ラインオフ高コストHiveServer2の、アップグレード操作を実行したい場合は、多くの場合、それは長い時間がかかり、可用性に影響を与えます。スキームHiveServer2クラスタAB切り替え、シームレスアップグレードを達成するために、クラスタZKマシン上でラインを切り替えることにより、クラスタ線A、Bクラスターの代替の実施形態に主として依存しています。


動的クラスタに組立ラインオフHiveServer2

HiveServer2クラスタ展開メトリックモニタがリアルタイムでクラスタサービスの使用を追跡することができます。また、当社HS2サービスは、組立ラインオフHS2 ZKを達成するために変換され、インターフェイスを取り消し要求されています。

外部モニタモニタは、連続したメモリが高すぎる知覚されるとき、それは自動的に記憶されるまで、問い合わせを停止させるために、メモリがまだ行の高すぎる場合組立ラインサービスから直接次いでZKにより、FGCの動作HS2サービスプロセスをトリガし、提出されたクエリの時系列に応じます回復、サービス残りのタスクの正常な動作を保証します。


HiveServer2クラスタ管理プラットフォーム

マルチクラスタ状態のHiveServer2は、各クラスタ、および各HS2サービスのステータスを習得する必要があります。管理プラットフォームによって、あなたはバージョン、起動時間、リソースの使用状況とオフライン状態を表示することができます。

その後の動作および保守にオープンなプラットフォームをより容易にアップグレード、およびグレーボタンすることができます。


改善されたクエリ巧みな要約プラットフォーム


04のHadoopの将来の計画上の巧みなSQL

エキスパートシステムのアップグレード、SQLの最適化とチューニングパラメータを自動化

アドホッククエリキャッシュの加速

新しいエンジンの研究と応用


きれいな鐘の教師から上に共有することができます。彼らはまた、教師の詳細巧みな演説を見たいと思っていますか?6月21-23グローバルなインターネットインフラストラクチャGIACアセンブリ深セン駅でそれを参加する - 私たちは、ミQunのR&Dテストヘッドの巧みなアプリケーションに招待さは、トピックがの「迅速オンライン品質監視終了を動かす」を教えてくれる。


また、このセッション、組織委員会はまた、最初の層のインターネット大手のGoogle、マイクロソフト、オラクル、イーベイ、百度、アリババ、テンセント、シャン唐、ツーソン、バイトの鼓動から105名様、シーナ、米国のグループのレビューなどを招待しました出席し話題について自分の経験を共有AI、中規模および大規模のユニット、クラウドネイティブ、のIoT、カオス工学、フィンテック、データおよびビジネスインテリジェンス、プロジェクト管理や文化、古典建築など、直面する問題と解決策。今すぐ登録情報、記入およびPPT GIACサミットのすべてに自由にアクセス!今すぐ登録2次元コードの数字を識別するために来て!




ます。https://juejin.im/post/5cf48545f265da1bb96fc73dで再現

おすすめ

転載: blog.csdn.net/weixin_34292959/article/details/91433047