spark sql 的metastore 對接 postgresql

來源:互聯網
上載者:User

標籤:

本教程記錄 spark 1.3.1 版本的thriftserver 的metastore 對接 postgresql

 

postgresql 的編譯,參考:http://www.cnblogs.com/chenfool/p/4530925.html

 

一 啟動postgresql 服務

1 首先需要將postgresql 的lib 載入到 LD_LIBRARY_PATH 環境變數中

export LD_LIBRARY_PATH=/opt/sequoiadb/lib:${LD_LIBRARY_PATH}

我這裡直接將命令加到了  ~/.bash_profile 設定檔中,使用者每次登陸,都能自動載入這個環境變數

2 建立資料目錄

mkdir -p database/pg_data

3 初始化pg 的資料目錄

bin/initdb -D database/pg_data/

4 建立pg 的logs 目錄

mkdir -p database/pg_data/logs

5 修改postgresql 的配置,允許其他使用者 遠程登陸 postgresql

linenum=$(cat -n database/pg_data/pg_hba.conf | grep "# IPv4 local connections:" | awk ‘{print $1}‘); let "linenum=linenum+1";varStr="host   all            all            0.0.0.0/0              trust"; sed -i "${linenum} a${varStr}" database/pg_data/pg_hba.conf;
sed -i "s/#listen_addresses = ‘localhost‘/listen_addresses = ‘0.0.0.0‘/g" database/pg_data/postgresql.conf

6 啟動 postgresql 服務,啟動時,使用的是 sdbadmin 使用者

bin/postgres -D database/pg_data/ >> database/pg_data/logs/logfile 2>&1 &

 7 為 postgresql 建立一個名為“foo” 的database

bin/createdb -p 5432 foo

8 登入pg shell 後,修改sdbadmin 使用者的密碼

登入pg shell

bin/psql foo

在shell 中執行下面命令,將sdbadmin 使用者的密碼修改為 sdbadmin

alter user sdbadmin with password ‘sdbadmin‘;

可以在root 使用者下,執行命令來測試

/opt/sequoiadb/bin/psql  --username=sdbadmin -W foo

輸入sdbadmin 密碼後,就能正常登入 pg shell

繼續在pg shell 中執行命令,建立名為 metastore 的 database

CREATE DATABASE metastore

將database 切換到metastore 

\c metastore

執行 hive 裡的sql 指令碼,由於我這裡的hive 版本為 1.2.0 ,所以執行的hive 指令碼也是1.2.0(注意:這裡使用者在登陸pg shell 時,需要先切換到 ${HIVE_HOME}/scripts/metastore/upgrade/postgres/ 目錄下,否則會出錯)

但是我看到spark 官網上說,spark sql 1.3.1  目前是對接 hive 0.12 0.13 版本的,所以我們可能對接那個版本的指令碼會更好(這個命令其實就是給postgresql 預先建立一些未來要用到的table和設定變數之類)

\i /opt/hive/scripts/metastore/upgrade/postgres/hive-schema-1.2.0.postgres.sql

 

 

二 spark thriftserver  對接 postgresql

1 參考之前我寫的hive 對接mysql 作為metastore 的教程:http://www.cnblogs.com/chenfool/p/3574789.html

我們直接在 spark 的 conf 目錄下建立一個名為 hive-site.xml 空檔案,然後將需要配置的資訊寫到hive-site.xml 檔案中

<configuration>   <property>     <name>hive.metastore.schema.verification</name>     <value>false</value>   </property>   <property>      <name>javax.jdo.option.ConnectionURL</name>      <value>jdbc:postgresql://ubuntu2:5432/metastore</value>      <description>JDBC connect string for a JDBC metastore</description>   </property>   <property>      <name>javax.jdo.option.ConnectionDriverName</name>      <value>org.postgresql.Driver</value>      <description>Driver class name for a JDBC metastore</description>   </property>   <property>      <name>javax.jdo.option.ConnectionUserName</name>      <value>sdbadmin</value>   </property>   <property>      <name>javax.jdo.option.ConnectionPassword</name>      <value>sdbadmin</value>   </property>   <property>      <name>datanucleus.autoCreateSchema</name>      <value>false</value>      <description>creates necessary schema on a startup if one doesn‘t exist. set this to false, after creating it once</description>   </property></configuration>
javax.jdo.option.ConnectionURL 填寫postgresql 的服務地址、連接埠號碼和database
javax.jdo.option.ConnectionUserName 填寫postgresql 使用者名稱
javax.jdo.option.ConnectionPassword 填寫使用者密碼

2 下載 postgresql 的 jdbc 驅動

下載連結   https://jdbc.postgresql.org/download/postgresql-9.3-1103.jdbc41.jar

3 將jar 包放到 spark 的lib 下,並且修改spark-env.sh 檔案

mv postgresql-9.3-1103.jdbc41.jar  /opt/spark-1.3.1-bin-hadoop2.6/lib/

修改spark-env.sh 檔案,由於我之前對接過 SequoiaDB 與 Spark sql 的串連,所以spark_classpath 裡有sequoiadb 相關的jar 包

SPARK_CLASSPATH="/opt/sequoiadb/java/sequoiadb.jar:/opt/sequoiadb/spark/spark-sequoiadb_2.10-1.12.jar:/opt/sequoiadb/hadoop/hadoop-connector-2.2.jar:/opt/spark-1.3.1-bin-hadoop2.6/lib/postgresql-9.3-1103.jdbc41.jar"

4 設定CLASSPATH,添加 postgresql jdbc 驅動路徑

export CLASSPATH=/opt/postgresql-9.3-1103.jdbc4.jar:${CLASSPATH}

如果不設定,會在啟動thriftserver 時,報下面的錯誤

Attempt to invoke the "dbcp-builtin" plugin to create a ConnectionPool gave an error : The specified datastore driver ("org.postgresql.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.

 5 啟動spark thriftserver 服務

/opt/spark-1.3.1-bin-hadoop2.6/sbin/start-thriftserver.sh  --master spark://ubuntu1:7800  --hiveconf "hive.metastore.warehouse.dir=hdfs://ubuntu1:9000/user/hive/warehouse"

通過netstat 命令應該能看到10000 連接埠被啟動

而且在 logs/spark-root-org.apache.spark.sql.hive.thriftserver.HiveThriftServer2-1-ubuntu2.out 能看到

INFO ThriftCLIService: ThriftBinaryCLIService listening on 0.0.0.0/0.0.0.0:10000 證明啟動成功了

 

怎麼操作thriftserver ,可以參考我以前的部落格:

http://www.cnblogs.com/chenfool/p/4502212.html

 

參考文章:

http://www.cloudera.com/content/cloudera/en/documentation/cdh4/v4-2-0/CDH4-Installation-Guide/cdh4ig_topic_18_4.html

http://docs.hortonworks.com/HDPDocuments/Ambari-1.6.1.0/bk_ambari_reference/content/nndb-using-hive-postresql.html

http://www.sequoiadb.com/cn/index.php?p=whitepaper_7

 

spark sql 的metastore 對接 postgresql

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.