Spark编译(2.3.1)&部署(YARN-Cluster)
前置准备
Maven 3.3.9
Maven需要将内存使用调高(防止编译过程内存超标报错)
export MAVEN_OPTS=”-Xmx2g -XX:ReservedCodeCacheSize=512m”
Java 8+
必须Java 8+,Spark2.2.0开始就已经不支持 Java7 了
Git
最好装上,编译不需要.但做部署包是需要Git的
Scala 准备
Spark本身使用Scala写的,也需要Scala语言的支持. Spark 2.3.1需要的Scala版本是 2.11+.这里我选择的是2.11.8
官网下载:
https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
解压
tar -xzvf ~/software/scala-2.11.8.tgz -C ~/app
写入环境变量:
export SCALA_HOME=/home/hadoop/app/scala-2.11.8
export PATH=$SCALA_HOME/bin:$PATH
编译
下载 Spark 源码
这里选择的当前最新版 spark-2.3.1.tgz 解压
tar -xzvf ~/source/spark-2.3.1.tgz -C ~/source/
Spark pom.xml
Hadoop我使用的CDH版 所以在pom.xml中加入cloudera仓库地址以便正确下载Hadoop.CDH Jar包
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
调制 Spark 版本参数
Spark2.3.1 本身的 Hadoop版本是2.6.5 这里需要调整下,因为我的Hadoop是 2.6.0
hadoop.version=hadoop-2.6.0-cdh5.7.0 (我的YARN与Hadoop版本相同)
hive.version=hive-1.1.0-cdh5.7.0
编译
Maven编译命令
./build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package
部署包
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver
第一次编译耗时比较久,建议科学上网,最后的结果如下
部署
Spark有三种部署模式,选择部署为YARN-cluster模式 部署包拷贝到software(我统一放安装的包的地方)
cp ./spark-2.3.1-bin-2.6.0-cdh5.7.0.tgz ~/software/
解压
tar -xzvf ~/software/spark-2.3.1-bin-2.6.0-cdh5.7.0.tgz -C ~/app
配置环境变量
export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
export SPARK_HOME=/home/hadoop/app/spark-2.3.1-bin-2.6.0-cdh5.7.0
export PATH=$SPARK_HOME/bin:$PATH
启动
启动Spark-Shell
启动服务
测试任务
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
examples/jars/spark-examples*.jar \
10