1. 程式人生 > >Carbondata 1.4.0+Spark 2.2.1 On Yarn整合安裝

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獨立模式的整合安裝。具體可參考下面的連結。