1.官网
2.下载地址
3.所需环境
- jdk1.8+ 参考地址
- maven3.3.9 参考地址,下载maven后进行环境变量的设置,设置maven的内存使用,在环境变量中加入如下命令
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"
- scala2.11.8 参考地址
- git:直接输入命令:
sudo yum install git
下载git
4.源码编译
为什么选择源码编译呢,如果直接选择官网下载好的会少一些jar包,重要的时很多组件的版本可能并不是我们想要的
- 官网参考地址
4.1方式一:
mvn -Pyarn -Phive -Phive-thriftserver -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -DskipTests clean package
命令解释:
-Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0:指定Hadoop版本和启用线程
-Phive -Phive-thriftserver:JDBC支持的构建
第一次编译的话可能会报错,报错内容如下:
[ERROR] Failed to execute goal on project spark-launcher_2.11:
Could not resolve dependencies for project org.apache.spark:spark-launcher_2.11:jar:2.2.0:
Could not find artifact org.apache.hadoop:hadoop-client:jar:2.6.0-cdh5.7.0 in central (https://repo1.maven.org/maven2) -> [Help 1]
这个错误很明显,https://repo1.maven.org/maven2 该连接是默认的中央仓库地址,使用maven下载jar包但是默认的连接着并没有找到,所以我们要修改pom.xml的设置,在pom.xml添加如下内容:
<repositories>
<repository>
<id>cloudera</id>
<name>cloudera Repository</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
- 再次输入编译命令,即可。
4.2方式二:
建议使用该方式,会把源码编译成tar.gz包
./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Dhadoop.version=2.6.0-cdh5.7.0 \
-Phadoop-2.6 \
-Phive -Phive-thriftserver \
-Pyarn
这里可能又会遇到一个情况,编译很慢,所以我们要进行如下修改:
- make-distribution.sh(修改dev目录下的make-distribution.sh文件)
dev/make-distribution.sh
注释这一段:
#VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\
# | grep -v "INFO"\
# | tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\
# | grep -v "INFO"\
# | tail -n 1)
#SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\
# | grep -v "INFO"\
# | 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)
加入下面的内容:
VERSION=2.2.0
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=2.6.0-cdh5.7.0
SPARK_HIVE=1
- 编译:
Building with...
+ echo -e '$ /opt/sourcecode/spark-2.2.0/build/mvn' -T 1C clean package -DskipTests --tgz-Dhadoop.version=2.6.0-cdh5.7.0 -Phadoop-2.6 -Phive -Phive-thriftserver '-Pyarn\n'
$ /opt/sourcecode/spark-2.2.0/build/mvn -T 1C clean package -DskipTests --tgz-Dhadoop.version=2.6.0-cdh5.7.0 -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn
+ /opt/sourcecode/spark-2.2.0/build/mvn -T 1C clean package -DskipTests --tgz-Dhadoop.version=2.6.0-cdh5.7.0 -Phadoop-2.6 -Phive -Phive-thriftserver -Pyarn
exec: curl --progress-bar -L https://downloads.typesafe.com/zinc/0.3.11/zinc-0.3.11.tgz
- spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz的生成
[hadoop@zhangyu spark-2.2.0]$ ll
在该目录下会生成:
-rw-rw-r--. 1 hadoop hadoop 198982482 Jan 22 18:50 spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz
该目录的由来:我们可以查看make-distribution.sh文件中可以查看如下的脚本命令
生成的目标文件由来:
if [ "$MAKE_TGZ" == "true" ]; then
TARDIR_NAME=spark-$VERSION-bin-$NAME
TARDIR="$SPARK_HOME/$TARDIR_NAME"
rm -rf "$TARDIR"
cp -r "$DISTDIR" "$TARDIR"
tar czf "spark-$VERSION-bin-$NAME.tgz" -C "$SPARK_HOME" "$TARDIR_NAME"
rm -rf "$TARDIR"
fi
- 解压
[hadoop@zhangyu software]$ sudo tar -zxvf spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz
5 Spark安装包目录结构说明
- bin:存放客户端相关的脚本
- conf:存放配置文件
- data:存放测试数据
- examples:Spark自带的测试用例,里面有很多好的例子**
- jars:存放Spark相关的jar包(最佳实践)
- sbin:存放服务端相关的脚本,启动停止集群。。。
- yarn:存放yarn相关的jar包