SequoiaSQL(Postgresql)でSpark(Hive)メタデータベースを構成する
SequoiaSQLとSparkのインストール構成はここで説明しない.
Thrift serverは、Hiveメタデータベースに合わせて使用することが望ましい.ここでは、どのように構成し、Thrift serverを起動するかについて説明します.最後にbeelineコマンドラインを使用すると、Spark SQLを簡単に使用できます.次は構成手順です.
1.Postgresql JDBC駆動
Postgresql jdbcドライバのダウンロード:https://jdbc.postgresql.org/download.html
注意駆動バージョンはPostgresqlバージョンだけでなくjdkバージョンにも関連しています.
ダウンロード後、postgresql jdbcドライバパッケージをsparkクラスタのすべてのサーバのディレクトリにアップロードする:例えばpostgresql-9.3-1104をアップロードする.jdbc41.JArからディレクトリ/opt/spark-2.1.1-bin-hadoop 2.7/jars/
2.spark-defaultsを構成する.confまたはspark-env.sh
conf/spark-defaults.conf :
spark.executor.extraClassPath /opt/spark-2.1.1-bin-hadoop2.7/jars/sequoiadb.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/spark-sequoiadb_2.11-2.6.0.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/postgresql-9.3-1104.jdbc41.jar
またはconf/spark-env.sh :
SPARK_CLASSPATH=/opt/spark-2.1.1-bin-hadoop2.7/jars/sequoiadb.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/spark-sequoiadb_2.11-2.6.0.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/postgresql-9.3-1104.jdbc41.jar
3.hive metastoreテーブル作成スクリプトをダウンロードしてアップロードする:
hiveのソースパッケージをダウンロードするには:
http://mirror.bit.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-src.tar.gz
ダウンロードしたhiveバージョンについては、spark内の対応するhiveバージョンに注意する必要があります.Spark 2.1.1のhiveバージョンは1.2.1です.ただし、Hive 1.2.2も同様に使えます.
解凍apache-hive-1.2.2-src.tar.gzの後、ディレクトリmetastorescriptsupgradepostgresの下にある2つのSQLスクリプトを見つけます.
hive-schema-1.2.0.postgres.sql
hive-txn-schema-0.13.0.postgres.sql
この2つのsqlスクリプトをサーバ上のディレクトリにアップロードし、待機します.
4.SequoiaSQLデータベースとユーザーの作成
まず、データベースとユーザーを作成します.
次にhiveのsqlスクリプトを実行します.このスクリプトは、Hiveがメタデータを格納するために必要なライブラリテーブルを作成します.
そして権限を付与します.次のSQL文を実行して、認可文を生成します.
前のステップで生成した認可文をすべて実行します.(hive-schema-1.2.0.postgres.sqlスクリプトは54テーブルを作成する必要があります)
次に、便宜上、hiveuserにすべての権限を付与します.
5. Hiveのデータベース接続プロファイルhive-siteを設定します.xml
Sparkディレクトリの下にプロファイルconf/hive-siteを新規作成し、次のように記述します.
いくつかの構成項目の説明:
javax.jdo.option.ConnectionURL postgresqlのサービスアドレス、ポート番号、databaseを記入
javax.jdo.option.ConnectionUserName postgresqlユーザー名の入力
javax.jdo.option.ConnectionPasswordユーザーパスワードの入力
6.sparkを再起動し、thriftserverを起動する
Spark:sbin/start-allを起動します.sh
thrift server:sbin/start-thriftserverを起動します.sh --master spark://10.131.9.62:7077 --total-executor-cores 12 --executor-memory 1g
jpsコマンドを使用すると、thrift serverが起動してから現れたspark-submitとCoarseGrainedExecutorBackendが表示されます.例:
7.PGに入ってthriftserverがsparkに接続されているかどうかを確認する
出力例:
8.beelineの使用
beelineコマンドのヒント:
接続データベース:!connect [driver]
終了:!quit
Thrift serverは、Hiveメタデータベースに合わせて使用することが望ましい.ここでは、どのように構成し、Thrift serverを起動するかについて説明します.最後にbeelineコマンドラインを使用すると、Spark SQLを簡単に使用できます.次は構成手順です.
1.Postgresql JDBC駆動
Postgresql jdbcドライバのダウンロード:https://jdbc.postgresql.org/download.html
注意駆動バージョンはPostgresqlバージョンだけでなくjdkバージョンにも関連しています.
ダウンロード後、postgresql jdbcドライバパッケージをsparkクラスタのすべてのサーバのディレクトリにアップロードする:例えばpostgresql-9.3-1104をアップロードする.jdbc41.JArからディレクトリ/opt/spark-2.1.1-bin-hadoop 2.7/jars/
2.spark-defaultsを構成する.confまたはspark-env.sh
conf/spark-defaults.conf :
spark.executor.extraClassPath /opt/spark-2.1.1-bin-hadoop2.7/jars/sequoiadb.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/spark-sequoiadb_2.11-2.6.0.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/postgresql-9.3-1104.jdbc41.jar
またはconf/spark-env.sh :
SPARK_CLASSPATH=/opt/spark-2.1.1-bin-hadoop2.7/jars/sequoiadb.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/spark-sequoiadb_2.11-2.6.0.jar:/opt/spark-2.1.1-bin-hadoop2.7/jars/postgresql-9.3-1104.jdbc41.jar
3.hive metastoreテーブル作成スクリプトをダウンロードしてアップロードする:
hiveのソースパッケージをダウンロードするには:
http://mirror.bit.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-src.tar.gz
ダウンロードしたhiveバージョンについては、spark内の対応するhiveバージョンに注意する必要があります.Spark 2.1.1のhiveバージョンは1.2.1です.ただし、Hive 1.2.2も同様に使えます.
解凍apache-hive-1.2.2-src.tar.gzの後、ディレクトリmetastorescriptsupgradepostgresの下にある2つのSQLスクリプトを見つけます.
hive-schema-1.2.0.postgres.sql
hive-txn-schema-0.13.0.postgres.sql
この2つのsqlスクリプトをサーバ上のディレクトリにアップロードし、待機します.
4.SequoiaSQLデータベースとユーザーの作成
まず、データベースとユーザーを作成します.
./bin/psql -p 5432 foo
postgres=# CREATE DATABASE metastore TEMPLATE=template0 ENCODING='UTF8';
postgres=# CREATE USER hiveuser WITH PASSWORD 'mypassword';
postgres=# CREATE DATABASE metastore;
postgres=# \c metastore;
You are now connected to database 'metastore'.
次にhiveのsqlスクリプトを実行します.このスクリプトは、Hiveがメタデータを格納するために必要なライブラリテーブルを作成します.
postgres=# \i hive-schema-1.2.0.postgres.sql
そして権限を付与します.次のSQL文を実行して、認可文を生成します.
postgres=# SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE ON "' || schemaname || '"."' || tablename || '" TO hiveuser ;' FROM pg_tables WHERE tableowner = CURRENT_USER and schemaname = 'public';
前のステップで生成した認可文をすべて実行します.(hive-schema-1.2.0.postgres.sqlスクリプトは54テーブルを作成する必要があります)
次に、便宜上、hiveuserにすべての権限を付与します.
GRANT ALL ON DATABASE hive_metastore to hiveuser;
5. Hiveのデータベース接続プロファイルhive-siteを設定します.xml
Sparkディレクトリの下にプロファイルconf/hive-siteを新規作成し、次のように記述します.
hive.metastore.schema.verification
false
javax.jdo.option.ConnectionURL
jdbc:postgresql://IP :5432 /
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
org.postgresql.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
datanucleus.autoCreateSchema
false
creates necessary schema on a startup if one doesn't exist. set this to false, after creating it once
いくつかの構成項目の説明:
javax.jdo.option.ConnectionURL postgresqlのサービスアドレス、ポート番号、databaseを記入
javax.jdo.option.ConnectionUserName postgresqlユーザー名の入力
javax.jdo.option.ConnectionPasswordユーザーパスワードの入力
6.sparkを再起動し、thriftserverを起動する
Spark:sbin/start-allを起動します.sh
thrift server:sbin/start-thriftserverを起動します.sh --master spark://10.131.9.62:7077 --total-executor-cores 12 --executor-memory 1g
jpsコマンドを使用すると、thrift serverが起動してから現れたspark-submitとCoarseGrainedExecutorBackendが表示されます.例:
[sdbadmin@pop-s-invquery-a ~]$ jps
2252 BeeLine
1336 Worker
717 Master
1630 CoarseGrainedExecutorBackend
3588 Jps
1634 CoarseGrainedExecutorBackend
903 Worker
1194 Worker
1650 CoarseGrainedExecutorBackend
1633 CoarseGrainedExecutorBackend
1484 SparkSubmit
1047 Worker
7.PGに入ってthriftserverがsparkに接続されているかどうかを確認する
select * from pg_stat_activity where datname='hive_metastore';
出力例:
hive_metastore=# select * from pg_stat_activity where datname='hive_metastore';
datid | datname | pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_s
tart | query_start | state_change | waiting | state | query
-------+----------------+------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+----------------
---------------+-------------------------------+-------------------------------+---------+--------+----------------------------------------------------------------
27070 | hive_metastore | 3171 | 25592 | hiveuser | | 10.131.9.63 | | 42538 | 2017-06-30 18:31:34.694261+08 |
| 2017-06-30 18:31:34.699031+08 | 2017-06-30 18:31:34.699086+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3172 | 25592 | hiveuser | | 10.131.9.63 | | 42539 | 2017-06-30 18:31:34.700751+08 |
| 2017-06-30 18:31:34.704812+08 | 2017-06-30 18:31:34.704852+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3173 | 25592 | hiveuser | | 10.131.9.63 | | 42540 | 2017-06-30 18:31:35.111469+08 |
| 2017-06-30 18:31:35.1159+08 | 2017-06-30 18:31:35.115951+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3174 | 25592 | hiveuser | | 10.131.9.63 | | 42541 | 2017-06-30 18:31:35.11745+08 |
| 2017-06-30 18:31:35.121512+08 | 2017-06-30 18:31:35.121552+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3461 | 25592 | hiveuser | | 10.131.9.62 | | 37933 | 2017-06-30 18:49:13.029259+08 |
| 2017-06-30 18:49:13.033074+08 | 2017-06-30 18:49:13.033113+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3462 | 25592 | hiveuser | | 10.131.9.62 | | 37934 | 2017-06-30 18:49:13.0348+08 |
| 2017-06-30 18:49:13.038215+08 | 2017-06-30 18:49:13.038248+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3489 | 25592 | hiveuser | | 10.131.9.62 | | 37935 | 2017-06-30 18:50:42.775977+08 |
| 2017-06-30 18:50:42.77983+08 | 2017-06-30 18:50:42.779869+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3490 | 25592 | hiveuser | | 10.131.9.62 | | 37936 | 2017-06-30 18:50:42.781191+08 |
| 2017-06-30 18:50:42.784706+08 | 2017-06-30 18:50:42.784739+08 | f | idle | SET extra_float_digits = 3
27070 | hive_metastore | 3636 | 10 | sdbadmin | psql | | | -1 | 2017-06-30 18:52:03.679178+08 | 2017-06-30 18:5
2:09.564151+08 | 2017-06-30 18:52:09.564151+08 | 2017-06-30 18:52:09.564158+08 | f | active | select * from pg_stat_activity where datname='hive_metastore';
(9 rows)
8.beelineの使用
/opt/spark-2.1.1-bin-hadoop2.7/bin/beeline -u jdbc:hive2://10.131.9.62:10000 -n hiveuser -p hiveuser
beelineコマンドのヒント:
接続データベース:!connect [driver]
終了:!quit