天天看点

Spark 2.2.0下载安装及源码编译

1.官网

2.下载地址

3.所需环境

  1. jdk1.8+ 参考地址
  2. maven3.3.9 参考地址,下载maven后进行环境变量的设置,设置maven的内存使用,在环境变量中加入如下命令

    export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

  3. scala2.11.8 参考地址
  4. git:直接输入命令:

    sudo yum install git

    下载git

4.源码编译

为什么选择源码编译呢,如果直接选择官网下载好的会少一些jar包,重要的时很多组件的版本可能并不是我们想要的

- 官网参考地址

4.1方式一:
mvn -Pyarn -Phive -Phive-thriftserver -Phadoop- -Dhadoop.version=-cdh5 -DskipTests clean package
命令解释:
-Pyarn -Phadoop- -Dhadoop.version=-cdh5:指定Hadoop版本和启用线程
-Phive -Phive-thriftserver:JDBC支持的构建
           

第一次编译的话可能会报错,报错内容如下:

[ERROR] Failed to execute goal on project spark-launcher_2: 
Could not resolve dependencies for project org.apache.spark:spark-launcher_2:jar:: 
Could not find artifact org.apache.hadoop:hadoop-client:jar:-cdh5 in central (https://repo1.maven.org/maven2) -> [Help ]
           

这个错误很明显,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 .-cdh5. \
--tgz \
-Dhadoop.version=.-cdh5. \
-Phadoop- \
-Phive -Phive-thriftserver \
-Pyarn
           

这里可能又会遇到一个情况,编译很慢,所以我们要进行如下修改:

  • make-distribution.sh(修改dev目录下的make-distribution.sh文件)
dev/make-distribution.sh
注释这一段:
#VERSION=$("$MVN" help:evaluate -Dexpression=project.version [email protected] 2>/dev/null | grep -v "INFO" | tail -n 1)
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version [email protected] 2>/dev/null\
#    | grep -v "INFO"\
#    | tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version [email protected] 2>/dev/null\
#    | grep -v "INFO"\
#    | tail -n 1)
#SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive [email protected] 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=
SCALA_VERSION=
SPARK_HADOOP_VERSION=-cdh5
SPARK_HIVE=
           
  • 编译:
Building with...
+ echo -e '$ /opt/sourcecode/spark-2.2.0/build/mvn' -T C clean package -DskipTests --tgz-Dhadoop.version=-cdh5 -Phadoop- -Phive -Phive-thriftserver '-Pyarn\n'
$ /opt/sourcecode/spark-/build/mvn -T C clean package -DskipTests --tgz-Dhadoop.version=-cdh5 -Phadoop- -Phive -Phive-thriftserver -Pyarn

+ /opt/sourcecode/spark-/build/mvn -T C clean package -DskipTests --tgz-Dhadoop.version=-cdh5 -Phadoop- -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-.]$ ll
在该目录下会生成:
-rw-rw-r--.   hadoop hadoop  Jan  : spark-.-bin-.-cdh5..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-.-bin-.-cdh5..tgz
           

5 Spark安装包目录结构说明

  1. bin:存放客户端相关的脚本
  2. conf:存放配置文件
  3. data:存放测试数据
  4. examples:Spark自带的测试用例,里面有很多好的例子**
  5. jars:存放Spark相关的jar包(最佳实践)
  6. sbin:存放服务端相关的脚本,启动停止集群。。。
  7. yarn:存放yarn相关的jar包

继续阅读