Linux平台spark-cdh源码编译

  1. 下载spark源码,这里版本用的是2.1.0,下载后解压即可
    官方下载地址
  2. 安装并配置maven
    2.1 设置MAVEN_HOME
export MAVEN_HOME=maven的安装目录
export PATH=$PATH:$MAVEN_HOME/bin

2.2 设置阿里云镜像地址,这样maven编译打包速度会快很多,在maven的conf文件夹下的setting.xml文件中添加

<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>
</mirror>
  1. 设置spark的make-distribution.sh,待会用这个脚本打包成可执行的程序。make-distribution.sh的路径在spark解压文件下的dev目录下
    修改MVN路径,默认spark自带maven的,这里修改成自己的maven
MVN="$MAVEN_HOME/bin/mvn"
  1. 修改pom.xml,由于hadoop,hive的版本都是cdh的,这里需要配置一下pom中镜像仓库地址,否则编译的时候下载不了对应cdh的版本。打开spark解压文件下的pom.xml,直接搜索 /repositor 即可找到对应配置位置
<repositories>
   <repository>
     <id>central</id>
     <!-- This should be at top, it makes maven try the central repo first and then others and hence faster dep resolution -->
     <name>Maven Repository</name>
    <url>https://repo1.maven.org/maven2</url>
     <releases>
       <enabled>true</enabled>
     </releases>
     <snapshots>
       <enabled>false</enabled>
     </snapshots>
   </repository>
 </repositories>

首先修改默认的镜像仓库地址为阿里云地址

<!-- <url>https://repo1.maven.org/maven2</url> -->
 <url>https://maven.aliyun.com/nexus/content/groups/public/</url>

然后添加一个镜像仓库地址,注意这里是http的,https的话,编译报如下错误

Remote host closed connection during handshake: SSL peer shut down incorrectly
 <repository>
      <id>clouders</id>
      <name>clouders Repository</name>
      <url>http://repository.cloudera.com/artifactory/cloudera-repos/</url>
 </repository>
  1. 编译并生成tgz可执行文件,在spark目录下执行如下命令,首先这里设置你的scala版本
./dev/change-scala-version.sh 2.11

然后执行./dev/make-distribution.sh命令

./dev/make-distribution.sh \
--name 2.6.0-cdh5.7.0 \
--tgz \
-Pyarn -Phadoop-2.6 \
-Phive -Phive-thriftserver \
-Dhadoop.version=2.6.0-cdh5.7.0

命令解释:

--name 2.6.0-cdh5.7.0 指定编译出来的spark名字,最终名字如下
spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz
--tgz  压缩成tgz格式
-Pyarn 支持yarn平台
-Phadoop-2.6 \  -Dhadoop.version=2.6.0-cdh5.7.0 \ 支持hadoop并指定hadoop版本为2.6.0-cdh5.7.0
-Phive -Phive-thriftserver \ 支持hive
  1. 最后就等maven编译打包即可,第一次这个过程会很长,因为需要下载的依赖很多,等最后出现如下提示就打包编译完成,并且在spark当前目录下,会有一个spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz的文件出现
+ TARDIR_NAME=spark-2.1.0-bin-2.6.0-cdh5.7.0
+ TARDIR=/home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
+ rm -rf /home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
+ cp -r /home/vagrant/source/spark-2.1.0/dist /home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
+ tar czf spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz -C /home/vagrant/source/spark-2.1.0 spark-2.1.0-bin-2.6.0-cdh5.7.0
+ rm -rf /home/vagrant/source/spark-2.1.0/spark-2.1.0-bin-2.6.0-cdh5.7.0
发布了92 篇原创文章 · 获赞 34 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/fanxl10/article/details/104549796
今日推荐