[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)

 

背景:已有CDH5.13.1,集成CDS 2.3.4(Apache Spark 2.3.4)

1. 環境:

  • 操作系統:CentOS7.3
  • CM:CM-5.13.1
  • CDH:CDH5.13.1
  • JDK:1.8.0_151
  • Scala:Scala 2.11.12

 

2. 集成步驟:

2.1 環境準備

按照官方文檔要求安裝好所有的軟件:

  • CDH版本CDH 5.9 +
  • CM版本CM 5.11+ 
  • Scala版本Scala-2.11
  • Python版本:python2.7+ or Python3.4+
  • JDK版本:JDK8

 

2.2 下載安裝包

下載CDS包個parcels包:

[root@vm CDS2.3.4]# wget http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.3.0.cloudera4.jar
[root@vm CDS2.3.4]# wget http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera4/manifest.json
[root@vm CDS2.3.4]# wget http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera4/SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel
[root@vm CDS2.3.4]# wget http://archive.cloudera.com/spark2/parcels/2.3.0.cloudera4/SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha1

2.3 拷貝CSD文件包到

拷貝CSD文件包到/opt/cloudera/csd/路徑下,修改文件的屬主爲cloudera-scm:cloudera-scm,屬性644。

[root@vm ~]# cd /opt/cloudera/csd/
[root@vm csd]# ls -ltr
-rw-r--r--. 1 root root     19037 Apr  2 16:37 SPARK2_ON_YARN-2.3.0.cloudera4.jar
[root@vm csd]# 

 拷貝Parcel包到/opt/cloudera/parcel-repo路徑下,修改文件的屬主爲cloudera-scm:cloudera-scm,屬性644。

[root@vm parcel-repo]# pwd
/opt/cloudera/parcel-repo
[root@vm parcel-repo]# ls -ltr
-rw-r--r--. 1 cloudera-scm cloudera-scm  191904064 Apr  2 16:37 SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel
-rw-r--r--. 1 cloudera-scm cloudera-scm         41 Apr  2 16:37 SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha
-rw-r--r--. 1 cloudera-scm cloudera-scm       5171 Apr  2 16:37 manifest.json
[root@vm parcel-repo]# 

2.4 重啓CM Server

[root@vm ~]# /opt/cm-5.13.1/etc/init.d/cloudera-scm-server restart

2.5 激活SPARK2

登錄CM頁面 -> 主機 -> Parcel,已經可以看到多了SPARK2選項,如果沒有,點擊右上角的檢查新Parcel,頁面會刷新出來。依次點擊SPARK2後面的分配 -> 激活,完成激活。

 

 

2.6 添加SPARK2到集羣中

2.6.1 集羣添加SPARK2服務

CM控制檯導航 -> 主機 -> 點擊Cluster名稱 -> 操作 -> 添加服務 -> 給Spark2打勾,繼續。

2.6.2 爲Spark2服務選擇一種依賴:

  • HDFS,Hive,YARN,ZooKeeper:如果集羣中有裝Hive服務並且希望從Spark應用程序訪問Hive表,選這個,將Hive作爲依賴加入,同時配置Hive客戶端對Spark應用程序永久有效。後面再爲Spark2分配角色時,將gateway添加到每臺主機。
  • HDFS,YARN,ZooKeeper:如果不需要hive服務,選最後一個

2.6.3 添加gateway角色

在角色分配時,爲每臺主機添加gateway角色。

點擊Finish之後,按照控制檯的提示重啓依賴關係服務。

至此,Spark2安裝完成。

 

3. 配置CDH集羣環境默認Spark版本爲Spark2

因爲我們的集羣安裝了CDH內置的Spark1,繼而集成了Spark2,現在集羣上有兩個版本的Spark存在。環境變量默認pyspark/spark-shell都是指向Spark1,我們可以直接使用pyspark2/spark2-shell來執行Spark2,使用時注意區分。也可以使用Cloudera官方提供的腳本來修改系統的環境配置默認指向Spark2.

 

4. 配置Hive on Spark

Hive默認使用MapReduce作爲執行引擎,即Hive on mr。實際上,Hive還可以使用Tez和Spark作爲其執行引擎,分別爲Hive on Tez和Hive on Spark。由於MapReduce中間計算均需要寫入磁盤,而Spark是放在內存中,所以總體來講Spark比MapReduce快很多。因此,Hive on Spark也會比Hive on mr快。我們設置Hive的執行引擎設置爲Spark

Spark運行模式分爲三種1、Spark on YARN 2、Standalone Mode 3、Spark on Mesos。
Hive on Spark默認支持Spark on YARN模式,因此我們選擇Spark on YARN模式。Spark on YARN就是使用YARN作爲Spark的資源管理器。分爲Cluster和Client兩種模式。

 

4.1 配置Hive依賴

CM控制檯 -> Hive -> Configuration -> 搜索Spark On YARN Service -> 在出來的結果Spark On YARN Service上選擇Spark(CDH5.13.1默認爲Spark,不需要修改)。

 

 

4.2 修改Spark2配置

CM控制檯 -> Spark2 -> Instances -> 在HiveServer2運行的主機上添加一個Spark gateway角色。之後根據CM頁面要求重新部署服務,重啓各服務。

 

4.3 配置Hive執行引擎

CDH上的Hive支持兩種執行引擎:MapReduce和Spark。要配置Hive的執行引擎,有兩種方法:

① 在Hive 客戶端執行命令前設置執行引擎

Beeline - 在每個查詢前設置執行引擎:set hive.execution.engine=engine(spark/mr,默認是mr)。例如:

#設置Hive執行引擎爲spark
set hive.execution.engine=spark;

# 查看現在在run的執行引擎
set hive.execution.engine;

通過CM控制檯全局修改Hive的執行引擎,會全局修改Hive的執行引擎(官方不推薦)

CM控制檯 -> Hive -> Configuration -> Default Execution Engine -> Spark

 

 

 

配置Hive on Spark2:

https://www.cloudera.com/documentation/enterprise/5-14-x/topics/admin_hos_oview.html

https://www.cloudera.com/documentation/enterprise/5-14-x/topics/admin_hive_configure.html#concept_i3p_2lv_cv

 

2. 配置屬性

3. 配置Hive

4. 配置Executor Memory Size

 

爲了讓Hive工作在spark上,你必須在HiveServer2所在機器上部署spark gateway角色。另外,hive on spark不能讀取spark的配置,也不能提交spark作業。

在使用過程中,需要手動設置如下命令,以便讓之後的查詢都能使用spark引擎。

 

set hive.execution.engine=spark;

 

其他注意事項:

  1. CSD(Apache Spark)只支持使用parcel機制安裝,且CM不支持在同一集羣中同時使用parcels和packages。如果CDH是基於packages安裝的,則無法安裝CDS;
  2. CM管理的同一cluster支持內置的Spark1.0和集成的Spark2.X同時運行,但不能存在多個版本的Spark2.X(CDS);
  3. CDS Maven倉庫:CDS Maven Repository
  4. SPARK2 History Server端口號是18089(CDH內置的Spark1端口爲18088);
  5. 配置spark用戶組可以訪問hive metastore:CM -> Hive -> Confguration -> 搜索hadoop.proxyuser.hive.groups -> 點擊+號,輸入sparkers組名並保存 -> 重啓Hive服務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章