この記事は、Huawei Cloud Community「HiveMetaStore との接続とオープンソースのビッグデータの採用」から共有されたものです。著者: 睡眠は大きな問題です。
1 はじめに
-
対象バージョン:9.1.0以降
ビッグデータ融合分析の時代では、大量のデータとさまざまな複雑なクエリに直面するとき、データ処理エンジンを使用する際のパフォーマンスが最も重要な考慮事項になります。 GaussDB (DWS) サービスは強力なコンピューティング エンジンを備えており、MRS サービスのハイブやスパークなどのコンピューティング エンジンよりも優れたコンピューティング パフォーマンスを備えており、ビジネスの高い弾力性と俊敏性のニーズを低コストで満たすことができます。 MRSと連携することで、データの再配置が不要となり、データレイク上の膨大なデータや各種複雑なクエリサービス、分析サービスをDWSの高性能コンピューティングエンジンを利用して処理・分析するソリューションが主流になりつつあります。 。
外部スキーマを作成することで HiveMetaStore メタデータ サービスに接続できるため、GaussDB (DWS) はハイブ/スパーク テーブルに直接クエリを実行したり、ハイブ/スパーク テーブルにデータを挿入したりできます。読み取りテーブルや書き込みテーブルを作成する必要はなく、ハイブ/スパーク テーブルの定義が変更されたときに GaussDB (DWS) がテーブル定義を更新しないことを心配する必要もありません。
この記事では、主に GaussDB (DWS) と hivememtastore 間の接続の構成とガイダンスについて説明します。
2. 原則の簡単な分析
2.1 HiveMetaStoreとは
HiveMeatStore は、Apache Hive の主要なコンポーネントであり、Hive/Spark テーブルのメタデータ情報を管理するために使用されます。 HiveMeatStore には、テーブル名、列名、データ型、パーティション情報など、Hive テーブルの構造情報が保存されます。また、テーブルの位置情報、つまりテーブル データが保存されている場所も保存されます。 HiveMeatStore の主な機能は、Hive/Spark がデータをクエリおよび分析できるようにメタデータ サービスを提供することです。また、開発者がテーブルのメタデータにプログラムでアクセスできるようにする API も提供します。つまり、HiveMeatStore はメタデータ管理とクエリ サービスを提供する Hive の重要なコンポーネントです。
外部スキーマは、外部スキーマです。GaussDB (DWS) は、外部スキーマを作成することで HiveMeatStore サービスに接続し、クエリごとに Hive/Spark テーブル オブジェクトのメタデータをアクティブに取得します。 GaussDB (DWS) カーネルが外部テーブルの作成を通じてハイブ/スパーク テーブルのメタデータを取得する必要はありません。
2.2 外部スキーマとスキーマの違い
1 外部スキーマは主に HiveMeatStore との接続を確立し、テーブル オブジェクトのメタデータを取得するために使用されます。外部スキーマを作成するときは、接続に必要なさまざまな属性値を指定する必要があります。
2 通常のスキーマ作成後は、pg_namespace にスキーマ情報が記録されます。 外部スキーマ作成後も、通常のスキーマと同様に、pg_namespace にスキーマ情報が記録されます。 pg_namespace の nsptype フィールド。
pg_namespace に格納される関連情報に加えて、外部スキーマ接続に関連する構成情報が pg_external_namespace に記録されます。
2.3 原理の説明
GaussDB (DWS) と HiveMetaStore のドッキングのプロセスを次の図に示します。
1. サーバー、外部スキーマ、SQL クエリを作成します。
この機能を使用する前に、ユーザーはサーバーを作成する必要があります。サーバーの作成プロセスは、既存のサーバーの作成プロセスと同じです。
OBS サーバーを作成するには 2 つの方法があります。1 つは永続的な AK および SK を使用して作成する方法です。 (この方法の前提は永続的な AK と SK が取得できることですが、この方法は安全ではありません。AK/SK は設定ファイルに直接公開されており、サービスを作成するときに AK と SK を平文で入力する必要があります。この方法でサービスを作成することはお勧めできません)。
DWS をクラウド上の ECS にバインドするもう 1 つの方法は、OBS にアクセスし、コントロール プレーンを通じて OBS サーバーを作成することです。コントロールプレーン経由でサーバーの作成を委託する場合は、外観作成時にOBSサーバーの作成方法を参照してください。https://support.huaweicloud.com/mgtg-dws/dws_01_1602.html
外部スキーマを作成します。
外部スキーマ作成の構文は次のとおりです。
CREATE 外部スキーマ ex ソースハイブ付き データベース「デフォルト」 サーバー hdfs_server メタアドレス「10.254.159.121:9010」 設定 '/home/fengshuo/conf2';
SOURCE フィールドは外部メタデータ ストレージ エンジンのタイプを指定します。DATABASE は Hive 内の対応するデータベース名、SERVER は手順 1 で作成したサーバー、METAADDRESS は Hive によって提供されるアドレスとポート情報、CONFIGURATION は Hive と Kerberos へのパスです。関連する設定ファイル。
外部スキーマの目的は、次の図に示すように、DWS が外部メタデータの変更を積極的に認識できるように、外部メタデータ (外部メタ) に接続することです。
GaussDB (DWS) は、外部スキーマを通じて HiveMetaStore に接続し、対応するテーブル メタデータにマップし、テーブルを通じて Hadoop にアクセスします。
SQL クエリ: 選択クエリの形式は select * from ex.tbl です。ここで、tbl は外部ソース テーブルの名前、ex は作成された外部スキーマです。
2. 文法解析: 文法解析層は主に解析を担当し、主に次の内容を担当します。
ex.tbl テーブルを読み取った後、メタデータ クエリのために HMS に接続します。
3. メタデータ クエリ: HMS からメタデータ情報をクエリします。このステップはステップ 1 で完了します。HMS から読み取られるデータには主にカラム情報、パーティション情報、パーティションキー情報、区切り情報などが含まれます。
4. データ クエリ (選択用): DFS ストレージから統計情報ファイルの数とファイル サイズを取得して、計画生成の基礎を提供します。
5. クエリの書き換え、クエリの最適化、クエリの実行
6. クエリ配信: プランとともにメタデータを DN に送信します。DN はプランを受信すると、メタデータをデコードして SysCache に挿入します。
7. クエリの実行: DN は、obs に対応するファイルにアクセスし、クエリを実行します。
3. hivememtastoreとの相互接続プロセス
3.1 環境を準備する
DWS 3.0 クラスターと MRS 分析クラスターが作成されているため、クラスター ネットワークの相互運用性を確保するには、MRS クラスターと DWS クラスターが同じリージョン、可用性ゾーン、および VPC サブネットにあることを確認する必要があります。
AKとSKを取得しました。3.2 ハイブ側で接続する必要があるテーブルを作成する
1. /opt/client パスに環境変数をインポートします。ソースbigdata_env
2. Hive クライアントにログインします。
3. 次の SQL ステートメントを順番に実行して、デモ データベースとターゲット テーブル product_info を作成します。データベースの作成デモ。
デモを使用します。
DROP TABLE 製品情報; CREATE TABLE 製品情報 ( product_price int 、 製品ID char(30) 、 product_time 日付、 製品レベル char(10) 、 製品名 varchar(200) 、 product_type1 varchar(20) 、 product_type2 char(10) 、 product_monthly_sales_cnt int 、 product_comment_time 日付、 product_comment_num int 、 製品コメントコンテンツ varchar(200) ) 「,」で終わる行形式の区切りフィールド オークとして保存されます。4.挿入を通じてデータをハイブテーブルにインポートします
3.3 外部サーバーの作成
データポータルを使用して、作成した DWS クラスターに接続します。
MRS 側でサポートされている形式は、hdfs と obs の 2 つです。これら 2 つのシナリオでハイブ ドッキング用の外部サーバーを作成する方法も異なります。
次のステートメントを実行して、OBS 外部サーバーを作成します。
サーバーの作成 obs_servevr 外部データ ラッパー DFS_FDW オプション ( アドレス 'obs.xxx.com:5443', //OBS アクセス アドレス。 暗号化「オン」、 access_key '{AK 値}', Secret_access_key '{SK 値}', 「obs」と入力します );
次のステートメントを実行して、HDFS 外部サーバーを作成します。
サーバーの作成 hdfs_server 外部データ ラッパー HDFS_FDW オプション ( タイプ「hdfs」、 ADDRESS '{プライマリ ノード},{スタンバイ ノード}', HDFSCFGPATH '{hdfs 構成ファイルのアドレス}');
認証に使用される AK と SK をコードにハードコーディングしたり、平文で保存したりすると、セキュリティ上のリスクが大きくなります。セキュリティを確保するために、構成ファイルまたは環境変数に暗号化テキストで保存し、使用するときに復号化することをお勧めします。また、dwsはskを内部で暗号化するため、送信中にskが漏洩する心配はありません。
外部サーバー (例として obs) を確認します。SELECT * FROM pg_foreign_server WHERE srvname='obs_server';
返される結果は次のようになり、正常に作成されたことを示します。
サーバー名 |所有者 | srvfdw | srvタイプ |サーバーバージョン | srvacl |サービスオプション -------------------------------------------------- +----------+----------+----------+-----------+------ -------------------------------------------------- -------------------------------------------------- -------------------- オブスサーバー | 16476 | 14337 | | | | {アドレス=obs.xxx.com:5443、タイプ=obs、暗号化=オン、アクセスキー=***、シークレットアクセスキー=***} (1行)
3.4 外部スキーマの作成
Hive のメタストア サービスの内部 IP とポート、およびアクセスする Hive 側データベースの名前を取得します。
MRS 管理コンソールにログインします。
「クラスタ一覧 > 既存クラスタ」を選択し、表示したいクラスタ名をクリックし、クラスタ基本情報ページに入ります。
運営保守管理室の「管理者へ」をクリックし、ユーザー名とパスワードを入力してFI管理ページにログインします。
「クラスター」、「Hive」、「構成」、「すべての構成」、「MetaStore」、「ポート」の順にクリックし、パラメーター hive.metastore.port に対応する値を記録します。
「Cluster」、「Hive」、「Instance」の順にクリックし、master1 を含む MetaStore に対応するホスト名の管理 IP を記録します。
外部スキーマの作成
//Hive ドッキング OBS シナリオ: SERVER 名には 2 で作成した外部サーバー名を入力します。DATABASE には Hive 側で作成したデータベースを入力します。METAADDRESS には 1 で記録した Hive 側メタストア サービスのアドレスとポートを入力します。CONFIGURATION はMRS データ ソースのデフォルト設定パス。変更する必要はありません。 ex1 が存在する場合はスキーマを削除します。 外部スキーマの作成 ex1 ソースハイブ付き データベース「デモ」 サーバー obs_server メタアドレス「***.***.***.***:***」 構成 '/MRS/gaussdb/mrs_server' //Hive ドッキング HDFS シナリオ: SERVER 名には MRS データ ソース接続の作成によって作成されたデータ ソース名 mrs_server が入力され、METAADDRESS には 1 で記録されたハイブ側メタストア サービスのアドレスとポートが入力され、CONFIGURATION はデフォルトの構成パスです。 MRS データ ソースを変更する必要はありません。 ex1 が存在する場合はスキーマを削除します。 外部スキーマの作成 ex1 ソースハイブ付き データベース「デモ」 サーバー mrs_server メタアドレス「***.***.***.***:***」 構成 '/MRS/gaussdb/mrs_server'
作成された外部スキーマを表示する
SELECT * FROM pg_namespace WHERE nspname='ex1'; SELECT * FROM pg_external_namespace WHERE nspid = (SELECT oid FROM pg_namespace WHERE nspname = 'ex1'); nspid |サーバー名 |ソース |住所 |データベース | confパス |エンオプション |カタログ -------------------------------------------------- +----------+----------+----------+-----------+------ -------------------------------------------------- -------------------------------------------------- -------------------- 16393 |オブスサーバー |ハイブ | ***.***.***.***:*** |デモ | *** | | (1行)
3.5 ハイブテーブルへのデータインポートの実行
ローカル データ ソース テーブルを作成します。テーブル構造はハイブと一致します。存在する場合はテーブルを削除 product_info_export; CREATE TABLE product_info_export ( product_price 整数 、 製品ID char(30) 、 product_time 日付、 製品レベル char(10) 、 製品名 varchar(200) 、 product_type1 varchar(20) 、 product_type2 char(10) 、 product_monthly_sales_cnt 整数 、 product_comment_time 日付、 product_comment_num 整数 、 製品コメントコンテンツ varchar(200) ) ;
データのインポート
ローカル ソース テーブルから Hive テーブルをインポートします。
INSERT INTO ex1.product_info SELECT * FROM product_info_export;
3.6 実行データがハイブから dws テーブルにインポートされる
データのインポート
ローカル ソース テーブルから Hive テーブルをインポートします。
INSERT INTO product_info_orc_export SELECT * FROM ex1.product_info;
4 まとめ
この記事では主に GaussDB (DWS) と hiveMetaStore のドッキングの原理と方法について説明します。