HiveMetaStore に接続してオープンソースのビッグデータを活用

この記事は、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 に記録されます。

説明する

3 テーブル オブジェクトは外部スキーマではサポートされません。オブジェクトはハイブまたはスパークで作成され、外部スキーマは DML 操作を実行するためにのみ使用されます。

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 のドッキングの原理と方法について説明します。

クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~

ライナスは、カーネル開発者がタブをスペースに置き換えることを阻止するために自ら問題を解決しました。 彼の父親はコードを書くことができる数少ないリーダーの 1 人であり、次男はオープンソース テクノロジー部門のディレクターであり、末息子は中核です。ファー ウェイ: 一般的に使用されている 5,000 のモバイル アプリケーションを変換するのに 1 年かかった Java はサードパーティの脆弱性が最も発生しやすい言語です。Hongmeng の父: オープンソースの Honmeng は唯一のアーキテクチャ上の革新です。中国の基本ソフトウェア分野で 馬化騰氏と周宏毅氏が握手「恨みを晴らす」 元マイクロソフト開発者:Windows 11のパフォーマンスは「ばかばかしいほど悪い」 老祥基がオープンソースであるのはコードではないが、その背後にある理由は Meta Llama 3 が正式にリリースされ、 大規模な組織再編が発表されました
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/11054552