1. 程式人生 > >實現CDH支援Spark SQL功能

實現CDH支援Spark SQL功能

CDH內嵌spark版本不支援spark-sql,可能是因為cloudera在推自己的impala;如果上線spark卻不能使用sql這種結構化語言,對於大部分分析人員其實是很不爽的!so,就手動實現支援spark-sql的功能吧

1.下載spark的包
http://www.apache.org/   -》    右上角download   -》 HTTP  http://apache.fayea.com/  -》 http://apache.fayea.com/spark/ -》http://apache.fayea.com/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz

2.解壓spark包spark-1.6.0-bin-hadoop2.6

3.獲取spark包lib中的spark-assembly-1.6.0-hadoop2.6.0.jar,

4.在cdh叢集中找一個點安裝原生spark,可以放到cdh的安裝目錄/opt/cloudera/parcels/CDH/lib/中

5.將spark包中的conf中的配置檔案替換成其他cdh spark節點中spark的配置(/etc/spark/conf/)

6.在cm管理介面-spark介面-配置中修改spark-defaults.conf(Spark Client Advanced Configuration Snippet (Safety Valve) for spark-conf/spark-defaults.conf),新增spark.yarn.jar屬性,值為spark-assembly-1.6.0-hadoop2.6.0.jar在hdfs上的路徑(spark.yarn.jar=/spark_jars/spark-assembly-1.6.0-hadoop2.6.0.jar);在spark-env.sh中新增

HADOOP_CONF_DIR=$HADOOP_CONF_DIR:/etc/hive/conf
export HADOOP_CONF_DIR。儲存修改,部署客戶端配置,重啟spark叢集,拷貝配置到原生的spark配置中

7.啟動spark sql server:在原生spark節點k3執行---》sh /opt/cloudera/parcels/CDH/lib/spark/sbin/start-thriftserver.sh 

8.在任一安裝spark節點執行beeline -u jdbc:hive2://k3:10000/default 進入spark sql命令列模式。

問題:

後來當在cdh spark節點submit程式時,yarn-client模式會報錯

 Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 0.0 failed 1 times, most recent failure: Lost task 2.0 in stage 0.0 (TID 2, localhost): java.lang.RuntimeException: Stream '/jars/spark-assembly-1.6.0-hadoop2.6.0.jar' was not found.  意思是jar包衝突了,我將cdh中spark lib目錄下jar包全部替換成了原生spark的lib/中jar,再次執行程式就好了。