高可用性を備えたHiveをインストールおよび構成する方法–パート7


Hiveは、Hadoopエコシステムのデータウェアハウスモデルです。 Hadoop上でETLツールとして実行できます。 Hiveで高可用性(HA)を有効にすることは、NamenodeやResourceManagerなどのマスターサービスで行う場合とは異なります。

自動フェイルオーバーはHive(Hiveserver2)では発生しません。 Hiveserver2(HS2)のいずれかに障害が発生すると、障害が発生したHS2でジョブを実行すると失敗します。ジョブを他のHiveServer2で実行できるように、ジョブを再送信する必要があります。したがって、HS2でHAを有効にすることは、クラスター内のHS2コンポーネントの数を増やすことに他なりません。

この記事では、Hiveの高可用性をインストールして有効にする手順を説明します。

始めましょう…

ハイブのインストールと構成

1.以下のURLでClouderaManagerにログインし、Cloudera Manager –>サービスの追加に移動します。

http://13.233.129.39:7180/cmf/home

2.サービス「ハイブ」を選択します。

3.ノードにサービスを割り当てます。

  • Gateway – It is the client service where the user can access the Hive. Usually, this service will be placed in Edge nodes dedicated to the users.
  • Hive Metastore – It is a central repository for storing Hive Metadata.
  • WebHCat Server – It is a Web API for HCatalog and other Hadoop Services.
  • Hiveserver2 – It is an interface of clients for query execution on Hive.

サーバーを選択したら、[続行]をクリックして続行します。

4. Hive Metastoreには、メタデータを格納するための基盤となるデータベースが必要です。ここでは、CDHで構築されたデフォルトのPostgreSQLデータベースを使用しています。

下記のデータベースの詳細は自動的に入力されます。上記のデータベースはオンザフライで作成されるため、「テスト接続」はスキップされます。リアルタイムで、外部データベースにデータベースを作成し、接続をテストしてさらに先に進む必要があります。完了したら、[続行]をクリックしてください。

5. HiveWarehouseディレクトリを構成します。/user/hive/warehouseはHiveテーブルを格納するためのデフォルトのディレクトリパスです。 [続行]をクリックします。

6.Hiveのインストールが開始されます。

7.インストールが完了すると、「完了」ステータスを取得できます。 [続行]をクリックして先に進みます。

8.ハイブのインストールと構成が正常に完了しました。 [完了]をクリックして、インストール手順を完了します。

9. Cloudera Managerダッシュボードを介して、クラスターに追加されたHiveサービスを確認できます。

10.HiveのインスタンスでHiveserver2を表示できます。 master1にHiveserver2を追加しました。

Cloudera Manager –> Hive –>インスタンス–> Hiveserver2。

Hiveで高可用性を有効にする

11.次に、Cloudera Manager –> Hive –> Actions –> Add Role Instancesに移動して、Hiveロールを追加します。

12.追加のHiveserver2を配置するサーバーを選択します。 2つ以上追加できます。制限はありません。ここでは、master2にHiveserver2を1つ追加しています。

13.サーバーを選択したら、[続行]をクリックします。

14. Hiverserver2がHiveインスタンスに追加されます。ClouderaManager–> Hive –> Instances –>(新しく追加されたHiveserver2を選択)–> Action for Selected –> Startに移動して開始する必要があります。

15. master2でHiveserver2を起動すると、ステータスが「Finished」になります。 [閉じる]をクリックします。

16.両方のHiveserver2が実行されていることを確認できます。

Hiveの可用性の確認

シンクライアントであるビーラインとコマンドラインを介してHiveserver2に接続できます。 JDBCドライバーを使用して接続を確立します。

17. HiveGatewayが実行されているサーバーにログインします。

[[email protected] ~]$ beeline

18.JDBC接続文字列を入力してHiveserver2に接続します。これに関連して、デフォルトのポート番号10000のHiverserver2(master2)について言及している文字列。この接続文字列は、master2で実行されているHiveserver2にのみ接続します。

beeline> !connect "jdbc:hive2://master1.tecmint.com:10000"

19.サンプルクエリを実行します。

0: jdbc:hive2://master1.tecmint.com:10000> show databases;

これは、組み込みのデフォルトのデータベースです。

20.以下のコマンドを使用して、Hiveセッションを終了します。

0: jdbc:hive2://master1.tecmint.com:10000> !quit

21.同じ方法を使用して、master2で実行されているHiveserver2に接続できます。

beeline> !connect "jdbc:hive2://master2.tecmint.com:10000"

23.Hiveserver2をZookeeperDiscoveryモードで接続できます。この方法では、接続文字列でHiveserver2を指定する必要はありません。代わりに、Zookeeperを使用して使用可能なHiveserver2を検出します。

ここでは、サードパーティのロードバランサーを使用して、使用可能なHiverserver2間で負荷を分散できます。以下の構成は、Cloudera Manager –> Hive –> Configurationに移動してZookeeperDiscoveryModeを有効にする必要があります。

24.次に、プロパティ「HiveServer2 Advanced Configuration Snippet」を検索し、 + 記号をクリックして以下のプロパティを追加します。

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25.プロパティを入力したら、[変更を保存]をクリックします。

26.構成に変更を加えたので、オレンジ色の記号をクリックして影響を受けるサービスを再起動し、サービスを再起動する必要があります。

27. [古いサービスを再開する]をクリックします。

28.利用可能な2つのオプションがあります。クラスターが稼働中の場合は、停止を最小限に抑えるためにローリングリスタートを優先する必要があります。新しくインストールするので、2番目のオプション「クライアント構成の再デプロイ」を選択し、「今すぐ再起動」をクリックできます。

29.再起動が正常に完了すると、ステータスは「完了」になります。 [完了]をクリックしてプロセスを完了します。

30.次に、ZookeeperDiscoveryモードを使用してHiveserver2に接続します。 JDBC接続で、ポート番号2081のZookeeperサーバーを使用するために必要な文字列。ClouderaManager–> Zookeeper –> Instances –>(サーバー名を書き留めます)に移動して、Zookeeperサーバーを収集します。

これらはZookeeperを持つ3つのサーバーであり、2181はポート番号です。

master1.tecmint.com:2181
master2.tecmint.com:2181
worker1.tecmint.com:2181

31.さあ、ビーラインに入りましょう。

[[email protected] ~]$ beeline

32.以下のようにJDBC接続文字列を入力します。サービスディスカバリモードとZookeeper名前空間について言及する必要があります。 「hiveserver2」は、Hiveserver2のデフォルトの名前空間です。

beeline>!connect "jdbc:hive2://master1.tecmint.com:2181,master2.tecmint.com:2181,worker1.tecmint.com:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33.これで、セッションはmaster1で実行されているHiveserver2に接続されます。サンプルクエリを実行して検証します。以下のコマンドを使用してデータベースを作成します。

0: jdbc:hive2://master1.tecmint.com:2181,mast> create database tecmint;

34.以下のコマンドを使用して、データベースを一覧表示します。

0: jdbc:hive2://master1.tecmint.com:2181,mast> show databases;

35.次に、ZookeeperDiscoveryモードでの高可用性を検証します。 Cloudera Managerに移動し、上記でテストしたmaster1でHiveserver2を停止します。

Cloudera Manager –> Hive –>インスタンス–>(master1でHiveserver2を選択)–>選択したアクション–>停止。

36. [停止]をクリックします。停止すると、ステータスは「完了」になります。 Hive –> Instancesに移動して、master1上のHiveserver2を確認します。

37.ビーラインに入り、上記の手順で行ったのと同じJDBC接続文字列をZookeeper DiscoveryModeで使用してHiveserver2に接続します。

[[email protected] ~]$ beeline

beeline>!connect "jdbc:hive2://master1.tecmint.com:2181,master2.tecmint.com:2181,worker1.tecmint.com:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

これで、master2で実行されているHiveserver2に接続されます。

38.サンプルクエリで検証します。

0: jdbc:hive2://master1.tecmint.com:2181,mast> show databases;

この記事では、高可用性を備えたクラスターにHiveデータウェアハウスモデルを含めるための詳細な手順を実行しました。リアルタイムの本番環境では、Zookeeper DiscoveryModeが有効になっている3つ以上のHiveserver2が配置されます。

ここでは、すべてのHiveserver2が共通の名前空間でZookeeperに登録されています。 Zookeeperは、使用可能なHiveserver2を動的に検出し、Hiveセッションを確立します。