CDH5.14集成Spark-sql,並用2種方式運行sql。附案例


本篇文章主要講述如何在CDH中啟動Spark Thrift。

本次測試的版本:

CDH版本:5.14.2

spark:1.6.0

文中主要用root來部署,但是啟動的時候用的spark用戶,中間會有一些權限方面的問題。大家可以根據提示自行添加權限。我這邊權限不夠默認都給了777,方便測試。

文中的spark服務器與hive元數據的服務器不在同一台服務器上。所以不會涉及端口沖突的錯誤。(spark Thrift默認端口10000)

一:部署主要分以下幾步:

1.下載原生的spark的編譯好的包

http://archive.apache.org/dist/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz

2.替換spark-assembly 的jar包,並上傳到hdfs節點上,上傳Spark Thrift的啟動、停止腳本,上傳spark-sql腳本

從下載的包中,找到如下幾個文件:

sbin/start-thriftserver.sh
sbin/stop-thriftserver.sh
bin/spark-sql
lib/spark-assembly-1.6.0-hadoop2.6.0.jar

並將前3個上傳到對應的目錄中

第四個有點特殊:spark-assembly-1.6.0-hadoop2.6.0.jar,上傳至:/opt/cloudera/parcels/CDH/lib/spark/lib,刪除原有的軟連接,注意做好備份

#cd /opt/cloudera/parcels/CDH/lib/spark/lib
#rm -rf spark-assembly-1.6.0-cdh5.13.0-hadoop2.6.0-cdh5.13.0.jar
#ln -s ../../../jars/spark-assembly-1.6.0-hadoop2.6.0.jar spark-assembly-1.6.0-hadoop2.6.0.jar
#ln -s ../../../jars/spark-assembly-1.6.0-hadoop2.6.0.jar spark-assembly.jar

 

 

在hive的數據節點上操作:

#sudo -u spark hadoop fs -put /opt/cloudera/parcels/CDH/jars/spark-assembly-1.6.0-hadoop2.6.0.jar /user/spark/share/lib
#sudo -u spark hadoop fs -chmod 755 /user/spark/share/lib/spark-assembly-1.6.0-hadoop2.6.0.jar

3.在cdh的spark中配置相關信息

 

 

 

 保存配置,並重啟Spark

4.修改/etc/spark/conf/classpath.txt文件,在最后添加如下內容

/opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/jars/spark-lineage_2.10-1.6.0-cdh5.14.2.jar

由於CDH5.11以后版本,Navigator2.10增加了Spark的血緣分析,所以這里需要添加spark-lineage_2.10-1.6.0-cdh5.13.0.jar包,否則連接Spark會報錯找不到com.cloudera.spark.lineage.ClouderaNavigatorListener類

 5.修改修改 load-spark-env.sh 腳本,這個腳本是啟動 spark 相關服務時加載環境變量信息的

需要將注釋掉exec "$SPARK_HOME/bin/$SCRIPT""$@",因為在start-thriftserver.sh腳本中會執行這個命令

# cd /opt/cloudera/parcels/CDH/lib/spark/bin
# vi load-spark-env.sh

 

 

5.啟動Spark ThriftServer腳本

#sudo -u spark ./start-thriftserver.sh  #啟動腳本
#netstat -ano|grep 10000  #查看是否啟動,並監控10000端口

 

 啟動之后,在yarn上會有一個常駐進程,如下圖:

 

 二:運行SQL語句,並測試是否能成功運行

1.通過beeline鏈接spark 來運行sql

#beeline
beeline> !connect jdbc:hive2://192.168.58.178:10000

 

 

2.運行sql

0: jdbc:hive2://192.168.58.178:10000> use dim;
0: jdbc:hive2://192.168.58.178:10000> select product_code from dim.dim_product_d limit 2;

 

 3.查看yarn上的任務情況

 三:用bin/spark-sql來運行SQL

# sudo -u spark ./spark-sql

 

 

 

 spark-sql 需要在有yarn上的機器上運行,不然會報一個錯:

 

 

運行sql語句

spark-sql> select product_code from dim.dim_product_d limit 2;

 

 

總結:

  • CDH默認不支持Spark Thrift,需要使用Spark原生的spark-assembly jar包替換CDH自帶的jar包
  • CDH5.11版本以后,Navigator2.10增加了Spark的血緣分析,所以需要將spark-lineage的jar加載的Spark的運行環境。否則連接Spark會報錯找不到com.cloudera.spark.lineage.ClouderaNavigatorListener類。CDH5.10或之前版本不用加載這個jar包

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM