Spark3与CDH6.1.1的集成
一、编译Spark3.0.3源码
1、源码下载
https://github.com/apache/spark/archive/refs/tags/v3.0.3.zip
2、上传至/opt/soft目录并解压至/opt/module
unzip spark-3.0.3.zip
mv /opt/soft/spark-3.0.3 /opt/module/
3、修改pom文件
vim /opt/module/spark-3.0.3/pom.xml
添加Cloudera maven镜像及hadoop3.0 相关
<repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> <name>Cloudera Repositories</name> <snapshots> <enabled>true</enabled> </snapshots> </repository> <pluginRepository> <id>cloudera</id> <name>Cloudera Repositories</name> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </pluginRepository> <profile> <id>hadoop-3.0</id> <properties> <hadoop.version>3.0.0-cdh6.1.1</hadoop.version> </properties> </profile>
修改maven版本号,我的maven版本号为3.6.3,可以使用mvn -version命令进行查看
<maven.version>3.6.3</maven.version>
4、修改make-distribution.sh
vim /opt/module/spark-3.0.3/dev/make-distribution.sh
将如下内容注释掉:
#VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null\ # | grep -v "INFO"\ # | grep -v "WARNING"\ # | tail -n 1) #SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\ # | grep -v "INFO"\ # | grep -v "WARNING"\ # | tail -n 1) #SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\ # | grep -v "INFO"\ # | grep -v "WARNING"\ # | tail -n 1) #SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\ # | grep -v "INFO"\ # | grep -v "WARNING"\ # | fgrep --count "<id>hive</id>";\ # # Reset exit status to 0, otherwise the script stops here if the last grep finds nothing\ # # because we use "set -o pipefail" # echo -n)
添加如下内容:
#spark的版本 VERSION=3.0.3 #使用的scala版本 SCALA_VERSION=2.11 #使用什么版本hadoop进行打包编译 SPARK_HADOOP_VERSION=3.0.0-cdh6.1.1 #是否使用hive SPARK_HIVE=1
5、编译准备
为防止编译过程中出现内存不足而出现“被杀死“错误,我们设置一下内存大小,必要时打开swap分区:
export MAVEN_OPTS="-Xms10g -Xmx10g"
#启用swap分区
swapon -a
6、执行编译命令
cd /opt/module/spark-3.0.3/
./dev/make-distribution.sh --name 3.0.0-cdh6.1.1 --tgz -Pyarn -Phadoop-3.0 -Phive -Phive-thriftserver -Dhadoop.version=3.0.0-cdh6.1.1
7、查看编译结果
8、参考地址
https://blog.csdn.net/weixin_44641024/article/details/102624086
https://cdn.modb.pro/db/414191
二、集成CDH
1、上传spark-3.0.3-bin-3.0.0-cdh6.1.1.tgz至/opt/soft目录
2、解压至/opt/module
tar -zxvf /opt/soft/spark-3.0.3-bin-3.0.0-cdh6.1.1.tgz -C /opt/module
3、修改文件名称
cd /opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/conf mv spark-defaults.conf.template spark-defaults.conf mv spark-env.sh.template spark-env.sh
4、修改spark-defaults.conf
vim spark-defaults.conf
添加如下内容
#hive metastore的版本设置为 2.1.1 spark.sql.hive.metastore.version=2.1.1 #引用 hive2.1.1 相关的jar包 spark.sql.hive.metastore.jars=/opt/cloudera/parcels/CDH/lib/hive/lib/* #设置spark提交任务默认的yarn队列,这条可以不加 #spark.yarn.queue=root.user #为了从Yarn上关联到Spark历史服务器,需要配置关联路径 spark.yarn.historyServer.address=xxx.xxx.xxx.100:18080 spark.history.ui.port=18080 spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://服务名/spark3.0.3/sparklogs spark.executor.memory 4g spark.driver.memory 4g
5、修改spark-env.sh
vim spark-env.sh
添加如下内容
#添加 hadoop 配置文件的路径 export HADOOP_CONF_DIR=/etc/hadoop/conf export YARN_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop export HIVE_CONF_DIR=/etc/hive/conf #WEBUI访问的端口号为18080, #指定历史服务器日志存储路径为/spark/sparklogs, #retainedApplications指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://服务名/spark/sparklogs -Dspark.history.retainedApplications=1000"
6、获取CDH相关配置文件至conf目录
cp /etc/hadoop/conf/hdfs-site.xml /opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/conf/ cp /etc/hadoop/conf/core-site.xml /opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/conf/ cp /etc/hive/conf/hive-site.xml /opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/conf/
7、在HDFS创建对应的目录
hadoop fs -mkdir -p /spark3.0.3/sparklogs
hadoop fs -mkdir -p /spark/sparklogs
8、在xxx.xxx.xxx.100节点启动/停止历史服务器
/opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/sbin/stop-history-server.sh
/opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/sbin/start-history-server.sh
9、启动spark-shell、pyspark
/opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/bin/spark-shell
/opt/module/spark-3.0.3-bin-3.0.0-cdh6.1.1/bin/pyspark
10、说明
这里没有配置Spark3.0.3版本的环境变量,而是使用全路径的方式使用,主要是避免影响到CDH版本的Spark。