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データベースとユーザーの作成
まず、データベースとユーザーを作成します.
./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