Carbondata 1.4.0+Spark 2.2.1 On Yarn整合安裝
微信公眾號(SZBigdata-Club):後續部落格的文件都會轉到微信公眾號中。 1、公眾號會持續給大家推送技術文件、學習視訊、技術書籍、資料集等。 2、接受大家投稿支援。 3、對於各公司hr招聘的,可以私下聯絡我,把招聘資訊發給我我會在公眾號中進行推送。
技術交流群:59701880 深圳廣州hadoop好友會
由於專案需要,近期一直在研究華為開源的carbondata專案,目前carbondata已經成為apache的頂級專案,專案活躍程度也比較高。
Carbondata介紹
縱觀目前的大資料生態圈,針對於ad-hoc查詢並沒有什麼好的解決方案,且查詢效率不高。Carbondata針對ad-hoc給出瞭解決方案,但是目前版本這個方案並不完善。為什麼說並不完善,後續會給大家解答,我們先來說下carbondata的優點
查詢
- 兩級索引,減少IO:適合ad-hoc查詢,任意維度組合查詢場景
- 第一級:檔案索引,用於過濾hdfs block,避免掃描不必要的檔案
- 第二級:Blocklet索引,用於過濾檔案內部的Blocklet,避免騷烤不必要的Blocklet
- 延遲解碼,向量化處理:適合全表掃描、彙總分析場景
資料管理
- 資料增量入庫,多級排序可調:有使用者權衡入庫時間和查詢效能
- 字典編碼配置(Dictionary Encoding Configuration)
- 反向索引配置(Inverted Index Configuration)
- 排序列配置(Sort Columns Configuration)
- 增量更新,批量合併:支援快速更新事實表或維表,閒時做Compaction合併
大規模
- 計算與儲存分離:支援從GB到PB大規模資料,萬億資料秒級響應
部署
- Hadoop Native格式:與大資料生態無縫整合,利用已有hadoop叢集資產
- 與Spark2.x版本整合 carbondata 1.4.0新增了挺多強大的功能,主要關注的點是在datamap上,不過目前datamap對於單表的支援是比較好的,但是對於多表join的datamap支援還不夠完善,還是有蠻多問題的。
單表的datamap目前包括:preaggregate、timeseries、bloomfilter、lucene
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#建立datamap CREATE DATAMAP [IF NOT EXISTS] ${dataMapName} ON TABLE '${tableName}' USING "datamap_provider" #preaggregate,timeseries,bloomfilter,lucene DMPROPERTIES ('key'='value', ...) AS SELECT statement #刪除datamap DROP DATAMAP ${dataMapName} ON TABLE ${tableName} #查詢datamap SHOW DATAMAP ON TABLE '${tableName}' |
多表datamap目前1.4.0官方文件並沒有給出,我是通過carbondata jira的問題找到其建立方式的,多表的datamap預計在1.5.0版本才能使用,目前問題較多,這裡暫時不建議使用,等1.5.0版本出來之後再試試看。1.5.0版本官方等版本計劃是8-9月份完成。
1 2 3 4 |
CREATE DATAMAP [IF NOT EXISTS] ${dataMapName} USING 'mv' AS SELECT statement |
與Spark2.2.1+Hadoop2.7.2 On Yarn整合
前置條件
- Hadoop HDFS 和 Yarn 需要安裝和執行。
- Spark 需要在所有的叢集節點上安裝並且執行。
- CarbonData 使用者需要有許可權訪問 HDFS.
下載apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar
1 |
wget https://dist.apache.org/repos/dist/release/carbondata/1.4.0/apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar |
依賴包拷貝
1 2 3 4 5 6 |
# 替換jersey-client、jersey-core包 cp jersey-client-1.9.jar jersey-core-1.9.jar $SPARK_HOME/jars rm jersey-client-2.x.jar jersey-core-2.x.jar # 拷貝apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar到$SPARK_HOME/jars cp apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar $SPARK_HOME/jars |
建立carbonlib目錄且生成tar.gz壓縮包
1 2 3 4 5 6 7 8 9 10 |
#1、建立carbonlib目錄 mkdir $SPARK_HOME/carbonlib #2、拷貝carbondata jar包到carbonlib cp apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar $SPARK_HOME/carbonlib #3、生成tar.gz包 cd $SPARK_HOME tar -zcvf carbondata.tar.gz carbonlib/ mv carbondata.tar.gz carbonlib/ |
[注]:如果想要測試多表的datamap mv功能,需要編譯carbondata-apache-carbondata-1.4.0-rc2/datamap/mv下的core和plan兩個工程,生成carbondata-mv-core-1.4.0.jar以及carbondata-mv-plan-1.4.0.jar並拷貝到SPARKHOME/jars和SPARKHOME/jars和SPARK_HOME/carbonlib,並重新執行上述第三步的內容。
拷貝carbondata.properties
拷貝carbon.properties.template到$SPARK_HOME/conf目錄且命名為carbon.properties
1 |
cp ./conf/carbon.properties.template $SPARK_HOME/conf/carbon.properties |
配置spark-default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
spark.master yarn-client spark.yarn.dist.files /usr/hdp/2.6.2.0-205/spark2/conf/carbon.properties spark.yarn.dist.archives /usr/hdp/2.6.2.0-205/spark2/carbonlib/carbondata.tar.gz spark.executor.extraJavaOptions -Dcarbon.properties.filepath=carbon.properties -XX:+OmitStackTraceInFastThrow -XX:+UseGCOverheadLimit spark.executor.extraClassPath carbondata.tar.gz/carbonlib/*:/home/hadoop/hive/lib/* spark.driver.extraClassPath /usr/hdp/2.6.2.0-205/spark2/carbonlib/* spark.driver.extraJavaOptions -Dcarbon.properties.filepath=/usr/hdp/2.6.2.0-205/spark2/conf/carbon.properties -Dhdp.version=current spark.yarn.executor.memoryOverhead 1024 spark.yarn.driver.memoryOverhead 1024 spark.yarn.am.extraJavaOptions -Dhdp.version=current spark.yarn.scheduler.heartbeat.interval-ms 7200000 spark.executor.heartbeatInterval 7200000 spark.network.timeout 300000 |
驗證
啟動thrift server服務
1 |
$SPARK_HOME/bin/spark-submit --class org.apache.carbondata.spark.thriftserver.CarbonThriftServer --num-executors 5 --driver-memory 6g --executor-memor^C10g --executor-cores 5 carbonlib/apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar hdfs://hacluster/user/hive/warehouse/carbon.store |
執行後,任務會提交到yarn上,可以通過8088埠的web介面檢視到。
如果在不配置spark-default.conf的情況下,其實也是可以執行的,不過是以單機模式執行,不會提交成yarn任務,通過4040埠可以檢視到spark任務的執行情況
使用beeline連結
1 |
$SPARK_HOME/bin/beeline -u jdbc:hive2://<thriftserver_host>:10000 -n hdfs |
以上就是基於Spark on yarn模式的carbondata整合,carbondata同時也支援Spark獨立模式的整合安裝。具體可參考下面的連結。