リアルタイム分析を実現するApache Hive/LLAP~保護のためのテクニック その2



はじめに

前回はClouderaとPostgreSQLを使ったメタストアの保護手法について寄稿しました。今回はHortonworksとMySQLを使用した場合について記述します。おさらいとしてアプリケーションについてもご覧いただけますと幸いです。

アプリケーション

例えばApache Hiveはこのようなアプリケーションで使用されます。
-Tableau
-ElasticSearch
-Cognos
-Infomatica
-Qlik
-SAP Business Objects
-Custom Application

Hiveにはmetastoreというコンポーネントがありメタストアにはテーブルとテーブル構築の基礎となるデータ (パーティション名やデータタイプなど) が含まれています。つまり、HDFSだけでなくmetastoreを保護しなければその環境を担保することはできません。

Hortonworks HadoopのためのHiveメタストアのバックアップ

NetBackupにはMySQL向けエージェントが用意されていれていますが、今回はそれを使わないやり方です。MySQL を使用した Hortonworks Hadoop の場合は次の点を考慮してください。

• MySQL のApache Hiveメタストアを定期的にバックアップします
• 新しいMySQL データベースへバックアップから Hive メタストアを復元します
• Hive サービスを新しいノードに移動します

メモ:既存のApache Hiveデータベースを削除し、同じノードで再作成できます。次に、データベースダンプを新しく作成したHiveデータベースにインポートしApache Hiveサービスを開始します。

MySQL データベースを使用した Hive メタストアをバックアップするには

  1. Hiveサービスを停止します。
    これによりバックアップ中のメタデータの更新が防止されデータの不整合を回避できます。 Ambariでは[Services] > [Hive] > [Service Action] > [Stop]を選択します。MySQLではHiveメタストア、HiveServer2、およびWebHCatを停止させるためこのプロセス中はサービスを一時的に利用できなくなります。

  2. Hiveメタストア データベース (MySQL) をローカルファイルにダンプします。
    デフォルトでは、Hiveメタストア、HiveServer2、および MySQL Server は同じノードにデプロイされます。

  3. MySQL を実行しているノードを識別します。
    Ambariでは、[Services] > [Hive] > [Summary] > [MySQL Server]を確認します。

  4. 次のようにrootでノードにログオンします。既定のデータベース名はhiveです。

  5. データベースを決定します。
    Ambariでは、[Services] > [Hive Configs] > [Advanced] > [Hive Metastore] > [Database Name]を確認します。

  6. MySQLで以下を実行します

mysqldump hive > /tmp/hive_backup.sql 
  1. ダンプが成功したかどうかを確認します。次のコマンドを実行します。
cat /tmp/hive_backup.sql 

ダンプしたコンテンツがそのまま表示されます。

  1. ファイルを別のノードまたはタイムスタンプを持つシステムに保存します。
  2. バックアップが完了したら、Hive サービスを再度開始します。Ambariでは、[Services] > [Hive] > [Service Actions] > [Start]を選択します。

MySQL、Hiveメタストア、HiveServer2、WebHCatを含むすべてのHiveサービスが開始されます。

MySQL データベースを使用してHiveメタストアをリカバリするには

  1. MySQL サーバーの新しいノードに移動します。
  2. Ambariで [Services] > [Hive] > [Service Actions] > [MySQL Server]へ移動します。ホストを選択し、手動コマンド・ステップに到達するまでウィザードに従います。データベースを復元するために以前のシステムでMysqldumpを実行する必要はありません。MySQL サーバーが実行されているノードへhive_backup.sqlをアップロードします。

i. 新しい MySQL サーバーのノードにrootでログオンします。
ii. MySQLを起動します
iii. CREATE DATABASE HIVE を実行します
iv. MySQLからexitで抜けます。
v. 次のコマンドを使用してデータベースをインポートします。

Mysql Hive < /tmp/hive_backup.sql

vi. ウィザードの手順を完了します。

  1. Hiveメタストアサーバーを新しいノードに移動します。
  2. Ambariでは[Services] > [Hive] > [Service Actions] > [Move Hive Metastore]を選択します。

ホストを選択し、手動コマンド・ステップに到達するまでウィザードに従います。展開する前に、Ambari サーバーで次のコマンドを実行していることを確認してください。

ambari-server setup --jdbc-db=mysql --jdbc-driver=</path/to/mysql>

カッコ書きの/path/to/mysqlの部分はmysql コネクタのJARファイルへの実際のパスへ置き換えて使用します。 RHELではデフォルトのパスは/usr/share/java/mysql-connector-java.jarです。もしmysqlconnector-java.jarがAmbari サーバーノードには存在しなければ以下のコマンドを実行してインストールします。

yum install mysql-connector-java* 

Ambari サーバーが jdbcドライバの場所で既にセットアップされている場合はこの手順を無視します。

  1. Ambari の UI でマークされているすべての必要なサービスを再起動します。これらのサーバーを移動すると一部の HDFS 構成に影響が出る可能性があります。
  2. HiveServer2 サーバーを新しいノードに移動します。
  3. Ambariで[Services] > [Hive] > [Service Actions] > [Move to Hive Metastore2] へ移動します。ホストを選択し、手動コマンド・ステップに到達するまでウィザードに従います。展開する前に Ambari サーバーで次のコマンドを実行していることを確認してください。
ambari-server setup --jdbc-db=mysql --jdbc-driver=</path/to/mysql>

の mysql コネクタ JAR ファイルへの実際のパスへ置き換えて使用します。 RHELではデフォルトのパスは/usr/share/java/mysql-connector-java.jarです。もしmysqlconnector-java.jarがAmbari サーバーノードには存在しなければ以下のコマンドを実行してインストールします。

yum install mysql-connector-java*

Ambari サーバーがjdbcドライバの場所で既にセットアップされている場合はこの手順を無視します。

  1. Ambari の UI でマークされているすべての必要なサービスを再起動します。これらのサーバーを移動すると一部の HDFS 構成に影響が出た可能性があります。
  2. WebHCat を新しいノードに移動します。
  3. Ambariでは、[Services] > [Hive] > [Service Actions] > [Move to WebHCat Server]を実行します。ホストを選択し、手動コマンド・ステップに到達するまでウィザードに従います。展開する前に、Ambari サーバーで次のコマンドを実行していることを確認してください。
ambari-server setup --jdbc-db=mysql --jdbc-driver=</path/to/mysql>

と記載したmysql コネクタ JAR ファイルへの実際のパスへ置き換えて使用します。 RHELでは、デフォルトのパスは/usr/share/java/mysql-connector-java.jarです。もしmysqlconnector-java.jarがAmbari サーバーノードには存在しなければ以下のコマンドを実行してインストールします。

yum install mysql-connector-java*

Ambari サーバーがjdbcドライバの場所で既にセットアップされている場合はこの手順を無視します。

Ambari UI でマークされているすべての必要なサービスを再起動します。これらのサーバーを移動すると一部の HDFS 構成に影響が出る可能性があります。

リファレンス
追加の情報については次のドキュメントを参照してください。
PostgreSQL のドキュメント(英語)
MySQL に関するドキュメント(英語)
Hadoop管理者のためのVeritas NetBackup (日本語)

以上です!ダンプを作成するのはいいですが、その後、NetBackup Parallel Streaming Frameworkでそのバックアップを取る必要がありますね。ブログでなく詳細なホワイトペーパーで欲しいという方のためにこちらでドキュメントを公開しています。ぜひ、ダウンロードしてみてください!

商談のご相談はこちら

本稿からのお問合せをご記入の際には「コメント/通信欄」に#GWCのタグを必ずご記入ください。
ご記入いただきました内容はベリタスのプライバシーポリシーに従って管理されます。