[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后面的分配 -> 激活,完成激活。

 

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第1张图片

 

2.6 添加SPARK2到集群中

2.6.1 集群添加SPARK2服务

CM控制台导航 -> 主机 -> 点击Cluster名称 -> 操作 -> 添加服务 -> 给Spark2打勾,继续。

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第2张图片

2.6.2 为Spark2服务选择一种依赖:

  • HDFS,Hive,YARN,ZooKeeper:如果集群中有装Hive服务并且希望从Spark应用程序访问Hive表,选这个,将Hive作为依赖加入,同时配置Hive客户端对Spark应用程序永久有效。后面再为Spark2分配角色时,将gateway添加到每台主机。
  • HDFS,YARN,ZooKeeper:如果不需要hive服务,选最后一个

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第3张图片

2.6.3 添加gateway角色

在角色分配时,为每台主机添加gateway角色。

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第4张图片

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第5张图片

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第6张图片

点击Finish之后,按照控制台的提示重启依赖关系服务。

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第7张图片至此,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页面要求重新部署服务,重启各服务。

[CDH] CDH5.13.1集成 Apache Spark2.3.4(CDS 2.3.4)_第8张图片

 

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服务。

你可能感兴趣的:(CDH5,Spark)