Impalaのメタデータを格納するためのデータベース(以降、メタストアデータベースと記載)の作成方法について説明します。
メタストアデータベースの作成はマスタサーバではなくデータベースサーバで実施してください。
本製品のImpalaがメタストアデータベースへの接続に利用するDBユーザーには、以下が設定されている必要があります。
パスワードが設定されていること
メタストアデータベースに対して以下の権限が設定されていること
SELECT権限
INSERT権限
UPDATE権限
DELETE権限
CREATE権限(MySQLを使用する場合)
DROP権限(MySQLを使用する場合)
LOCK TABLES権限(MySQLを使用する場合)
EXECUTE権限(MySQLを使用する場合)
マスタサーバからの接続が許可されていること(MySQLを使用する場合)
ワイルドカード(%)による許可ではなく、ホストを個別に指定して接続を許可する必要があります。また、マスタサーバを二重化構成にする場合は、プライマリサーバとセカンダリサーバの両方に対して接続を許可する必要があります。
ポイント
ここでは、データベース名などの情報を、以下の構成を例として説明します。実際にセットアップする際には、ご使用の環境の構成に読み替えてください。
データベース名 | metastore |
DBユーザー名 | impala |
DBユーザーのパスワード | impala_password |
マスタサーバ(プライマリ) | master1 |
マスタサーバ(セカンダリ) | master2 |
注意
Hiveなどですでに運用中のメタストアデータベースをそのまま利用する場合は、データベースを作成する必要はありません。
MySQLを使用する場合のメタストアデータベースの作成手順を以下に示します。
マスタサーバ上に格納されているデータベース作成用DDLファイルをデータベースサーバ上の任意のディレクトリにコピーします。
# scp -p root@master1:/opt/FJSVbdpp/ext/hive-metastore/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql /tmp/hive-schema-0.13.0.mysql.sql <Enter>
MySQLに接続します。
# mysql -u root -p <Enter> Enter password: (MySQLの管理者パスワード)
データベースとスキーマを作成します。
mysql> CREATE DATABASE metastore; <Enter> mysql> USE metastore; <Enter> mysql> SOURCE /tmp/hive-schema-0.13.0.mysql.sql; <Enter> ・・・
マスタサーバ(プライマリ)からメタストアデータベースに接続するためのDBユーザーを作成します。
mysql> CREATE USER 'impala'@'master1' IDENTIFIED BY 'impala_password'; <Enter> mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'impala'@'master1'; <Enter> mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,LOCK TABLES,EXECUTE ON metastore.* TO 'impala'@'master1'; <Enter> mysql> FLUSH PRIVILEGES; <Enter>
マスタサーバ(セカンダリ)からメタストアデータベースに接続するためのDBユーザーを作成します。(マスタサーバを二重化構成にする場合のみ)
mysql> CREATE USER 'impala'@'master2' IDENTIFIED BY 'impala_password'; <Enter> mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'impala'@'master2'; <Enter> mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,LOCK TABLES,EXECUTE ON metastore.* TO 'impala'@'master2'; <Enter> mysql> FLUSH PRIVILEGES; <Enter>
PostgreSQLを使用する場合のメタストアデータベースの作成手順を以下に示します。
マスタサーバ上に格納されているデータベース作成用DDLファイルをデータベースサーバ上の任意のディレクトリにコピーします。
# scp -p root@master1:/opt/FJSVbdpp/ext/hive-metastore/scripts/metastore/upgrade/postgres/hive-schema-0.13.0.postgres.sql /tmp/hive-schema-0.13.0.postgres.sql <Enter>
PostgreSQLに接続します。
# sudo -u postgres psql <Enter>
メタストアデータベースとDBユーザーを作成します。
postgres=# CREATE USER impala WITH PASSWORD 'impala_password'; <Enter> postgres=# CREATE DATABASE metastore; <Enter> postgres=# \c metastore; <Enter> You are now connected to database 'metastore'. metastore=# \i /tmp/hive-schema-0.13.0.postgres.sql <Enter> ...
作成したDBユーザーに権限を付与します。
metastore=# \pset tuples_only on <Enter> metastore=# \o /tmp/grant-privs <Enter> metastore=# SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE ON "' || schemaname || '". "' ||tablename ||'" TO impala ;' FROM pg_tables WHERE tableowner = CURRENT_USER and schemaname = 'public'; <Enter> metastore=# \o <Enter> metastore=# \pset tuples_only off <Enter> metastore=# \i /tmp/grant-privs <Enter>