在CDH上用外部Spark2.2.1安裝和配置 CarbonData

在CDH上用外部Spark2.2.1 (hadoop free版本)standalone 模式安裝和配置 CarbonData
 
 
 
 
 
1、cdh中外部spark(standalone模式安裝)
 
一、把安裝包和配置文件拷貝到其餘機器
 
1.1複製hdfs、hive等配置文件到spark的conf目錄
 
spark-env.sh文件最後新增的配置
 
export SPARK_HOME=/opt/cloudera/parcels/spark2.2.1/lib/spark2
export SPARK_DAEMON_CLASSPATH=$SPARK_HOME/jars/*:$SPARK_HOME/carbonlib/*
# - 這裏的dsd爲spark的master主機
export SPARK_MASTER_HOST=dsd
export JAVA_HOME=/usr/java/jdk1.8.0_112
export HADOOP_CONF_DIR=/etc/hadoop/conf
export YARN_CONF_DIR=/etc/hadoop/conf.cloudera.yarn/
# Passing a Hadoop configuration directory
export SPARK_DIST_CLASSPATH=$(hadoop --config /etc/hadoop/conf classpath)
--------------------------------------------------------------------------
spark-defaults.conf文件最後新增的配置
 
spark.driver.extraJavaOptions="-Dcarbon.properties.filepath = /opt/cloudera/parcels/spark2.2.1/lib/spark2/conf/carbon.properties"
spark.executor.extraJavaOptions="-Dcarbon.properties.filepath = /opt/cloudera/parcels/spark2.2.1/lib/spark2/conf/carbon.properties"
--------------------------------------------------------------------------
1.二、slaves文件最後新增的配置(把全部的spark節點都加入,包括master)
 
dsf
dse
dsd
dsb
ddf
--------------------------------------------------------------------------
1.三、分發安裝包:
scp -r /opt/cloudera/parcels/spark2.2.1 root@192.168.101.217:/opt/cloudera/parcels/
 
 
 
 
 
 
 
 
2、編譯須要版本的carbondata
 
參考:
中文文檔
 
 
一、遇到的問題
 
1.一、編譯carbondata的cdh版本安裝包:直接用官網的apache版本,裝上去啓動不了。
到安裝目錄下去看一下spark的版本 #不要看cloudera manager的包管理上面的版本,那個是錯誤的
 
 
1.二、直接在centos上編譯、在window上編譯不知道有沒有區別。2種都試了。都不行,最終發現不是編譯的carbondata有問題。是cdh集成的spark有問題。怎麼試都不行。
最終換成原版的spark2.2.1(hadoop free版本的)
 
 
 
二、解決maven倉庫默認不支持cdh
 
目前maven倉庫中沒有支持cdh的相關依賴。cloudera本身創建了一個相關的倉庫。要想利用maven添加相關依賴,則必須單獨添加cloudera倉庫。
 
2.一、項目的pom.xml文件裏面, 添加倉庫配置
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
 
2.二、在國內使用maven中央倉庫通常會有網絡問題,因此大部分人會使用aliyun倉庫或者其餘開源的倉庫。
因此須要修改setting.xml (如下配置中 *,!cloudera 表示除了aliyun倉庫還使用cloudera倉庫)
 
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!cloudera</mirrorOf>
<name>Nexus aliyun</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
</mirror>
 
2.三、若未設置自動更新maven項目,則需更新maven項目,而後等待下載相關依賴。完成以後即可以使用cdh進行開發啦
 
 
 
 
三、在centos下編譯
 
3.一、安裝thrift-0.9.3,此步驟較爲繁瑣,須要其餘庫的支持。沒有詳細記錄。
yum install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config
下載thrift-0.9.3
tar -xzvf thrift-0.9.3.tar.gz
 
 
3.一、安裝mvn
 
tar zxvf apache-maven-3.5.3-bin.tar.gz -C /root/ssss/
vim /etc/profile #添加mvn的配置信息
export M2_HOME=/root/ssss/apache-maven-3.5.3/ export PATH=$PATH:$M2_HOME/bin
 
source /etc/profile
mvn -version
 
 
mvn -Pwindows -Dmaven.test.skip=true -Pspark-2.2 -Dspark.version=2.2.1 clean package
 
 
下載了好幾回才完整的下載了全部依賴jar包。
 
 
 
 
 
 
 
 
 
4、spark集成carbondata
 
 
 
一、編譯 CarbonData 工程,而且從 carbondata-parent-1.4.0\assembly\target\scala-2.11路徑獲取 apache-carbondata-1.4.0-bin-spark2.2.0.cloudera2-hadoop2.7.2.jar。
最後將這個 jar 複製到 $SPARK_HOME/carbonlib 文件夾。
注意: 若是 $SPARK_HOME 路徑下不存在 carbonlib 文件夾,請事先建立它。
壓縮 carbonlib 文件夾的內容到tar.gz 文件中,並將這個壓縮文件移到 carbonlib 文件夾下面。
cd /opt/cloudera/parcels/spark2.2.1/lib/spark2/ tar -zcvf carbonlib.tar.gz carbonlib/ mv carbonlib.tar.gz carbonlib/
 
 
 
 
二、到carbondata的源碼當中找到carbon.properties配置文件,並拷貝到spark的配置文件目錄
三、將下面的配置添加到 $SPARK_HOME/conf/carbon.properties 文件中:
carbon.storelocation=hdfs://nameservice1/ddhome/carbondata
carbon.badRecords.location=hdfs://nameservice1/ddhome/carbondata/badRecords
 
 
四、在hdfs中創建上面配置的hdfs://nameservice1/ddhome/carbondata目錄。
hadoop fs -mkdir -p /ddhome/carbondata
hadoop fs -mkdir -p /ddhome/carbondata_badRecords
hadoop fs -mkdir -p /ddhome/carbondata_data
授予訪問目錄的權限,不然文件寫入不了
hadoop fs -chmod -R 777 /ddhome/carbondata
hadoop fs -chmod -R 777 /ddhome/carbondata_badRecords
hadoop fs -chmod -R 777 /ddhome/carbondata_data
 
 
 
 
 
5、啓動:驗證安裝
 
一、啓動:standalone集羣:有效
/opt/cloudera/parcels/spark2.2.1/lib/spark2/sbin/start-all.sh
 
二、關閉:standalone集羣:有效
/opt/cloudera/parcels/spark2.2.1/lib/spark2/sbin/stop-all.sh
 
 
三、spark-submit提交普通任務jar進行測試
 
成功 --supervise(出現錯誤重啓driver)提交做業的端口是6066(restful接口)
/opt/cloudera/parcels/spark2.2.1/lib/spark2/bin/spark-submit --class com.ziyun.DpiGet2Hiveparquet --master spark://192.168.101.218:6066 --deploy-mode cluster --supervise /home/usr/sparkjob/zy-just-spark-1.0.0.jar first --conf spark.network.timeout=300
 
這種用7077端口也能夠提交成功
/opt/cloudera/parcels/spark2.2.1/lib/spark2/bin/spark-submit --class com.ziyun.DpiGet2Hiveparquet --master spark://192.168.101.218:7077 --deploy-mode client /root/zy-just-spark-1.0.0.jar first --conf spark.network.timeout=300
 
 
四、目前配置standalone模式的spark是否支持hive(spark任務提示一些錯誤:須要給sparksession添加一些配置
.enableHiveSupport() //開啓hive支持
.config("spark.sql.warehouse.dir", "/user/hive/warehouse"))
hadoop fs -chmod -R 777 /user/hive/warehouse #給配置的目錄加入權限
/opt/cloudera/parcels/spark2.2.1/lib/spark2/bin/spark-submit --class com.ziyun.MRecKqmj --master spark://192.168.101.217:7077 --deploy-mode client /root/zy-just-spark-1.0.0.jar first --conf spark.network.timeout=300
 
 
五、測試普通任務可否寫入hdfs:新spark(standalone) ##按照後面添加了jar以後,能夠正常寫入的
/opt/cloudera/parcels/spark2.2.1/lib/spark2/bin/spark-submit --class com.ziyun.MRecKqmjTest --master spark://192.168.101.217:7077 --deploy-mode client /root/zy-just-spark-1.0.0.jar first --conf spark.network.timeout=300
 
獨立模式提示找不到hive的classes。須要拷貝這2個jar到spark的jars目錄下
 
六、最後是把cloudera manager上集成的spark2.2.0.cloudera2版本中相關hive和spark的jar複製到新裝的spark的jar目錄。
把mysql的驅動jar也拷貝過去。在hive裏面也是有的。
後面又提示缺失thriftserver。最終是解壓了一個spark自帶hadoo2.6(cm版本的hadoop也是基於2.6)版本的jar,把它裏面的jar也拷貝到新裝的spark的jars目錄下。
跑普通spark任務就能夠了。
相關文章
相關標籤/搜索