背景:已有CDH5.13.1,集成CDS 2.3.4(Apache Spark 2.3.4)。
按照官方文档要求安装好所有的软件:
下载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
拷贝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]#
[root@vm ~]# /opt/cm-5.13.1/etc/init.d/cloudera-scm-server restart
登录CM页面 -> 主机 -> Parcel,已经可以看到多了SPARK2选项,如果没有,点击右上角的检查新Parcel,页面会刷新出来。依次点击SPARK2后面的分配 -> 激活,完成激活。
CM控制台导航 -> 主机 -> 点击Cluster名称 -> 操作 -> 添加服务 -> 给Spark2打勾,继续。
在角色分配时,为每台主机添加gateway角色。
点击Finish之后,按照控制台的提示重启依赖关系服务。
因为我们的集群安装了CDH内置的Spark1,继而集成了Spark2,现在集群上有两个版本的Spark存在。环境变量默认pyspark/spark-shell都是指向Spark1,我们可以直接使用pyspark2/spark2-shell来执行Spark2,使用时注意区分。也可以使用Cloudera官方提供的脚本来修改系统的环境配置默认指向Spark2.
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两种模式。
CM控制台 -> Hive -> Configuration -> 搜索Spark On YARN Service -> 在出来的结果Spark On YARN Service上选择Spark(CDH5.13.1默认为Spark,不需要修改)。
CM控制台 -> Spark2 -> Instances -> 在HiveServer2运行的主机上添加一个Spark gateway角色。之后根据CM页面要求重新部署服务,重启各服务。
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;
其他注意事项: