Spark环境搭建(六)-----------sprk源码编译

时间:2022-09-23 18:18:07

想要搭建自己的Hadoop和spark集群,尤其是在生产环境中,下载官网提供的安装包远远不够的,必须要自己源码编译spark才行。

环境准备:

  1,Maven环境搭建,版本Apache Maven 3.3.9,jar包管理工具;

  2,JDK环境搭建,版本1.7.0_51,hadoop由Java编写;

  3 ,Scala 环境搭建,版本 2.11.8,spark是scala编写的;

  4 ,spark 源码包,从官网选择

  Spark环境搭建(六)-----------sprk源码编译

 编译前准备:

  0,Maven ,JDK,Scala解压安装,并加入到环境变量中

  1,wget 源码到~/source 并且 tar -zxvf spark-2.1.0.tgz

  2 , 加入cdh仓库,在spark-2.1.0/pom.xml

    

 <repository>
<id>cloudera-releases</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>

编译:

  1) 根据自己的机器实际情况,合理的分配内存给JVM, 通过命令:export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

  2) 在spark-2.1.0/下通过命令:

    

./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

或者通过mvn方式直接编译(maven编译完成没有一个大的完整的包使用)

  

./build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0-cdh5.7.0 -Phive -Phive-thriftserver -DskipTests clean package

  这个编译过程大约两个小时,更网速有关,有的Jar包需要*下载,所有时间教长

  编译完成会在spark-2.1.0/下产生一个spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz包,将它解压,加入到环境变量就算结束了。

解读编译命令:

./build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -DskipTests clean package

  1)    -Dhadoop.version=2.6.0

      在编译命令上在外部指定(修改)<hadoop.version>2.2.0</hadoop.version> 默认的2.2.0 改为2.6.0

      在spark根目录下的pom.xml文件中,部分源码如下,可以看出默认的hadoop版本是2.2.0

    

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding>
<java.version>1.7</java.version>
<maven.version>3.3.9</maven.version>
<sbt.project.name>spark</sbt.project.name>
<slf4j.version>1.7.16</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<hadoop.version>2.2.0</hadoop.version>
<protobuf.version>2.5.0</protobuf.version>
<yarn.version>${hadoop.version}</yarn.version>
<flume.version>1.6.0</flume.version>
<zookeeper.version>3.4.5</zookeeper.version>
<curator.version>2.4.0</curator.version>
<hive.group>org.spark-project.hive</hive.group>
<!-- Version used in Maven Hive dependency -->
<hive.version>1.2.1.spark2</hive.version>
<!-- Version used for internal directory structure -->
<hive.version.short>1.2.1</hive.version.short>
<derby.version>10.12.1.1</derby.version>
<parquet.version>1.8.1</parquet.version>
<hive.parquet.version>1.6.0</hive.parquet.version>
<jetty.version>9.2.16.v20160414</jetty.version>
<javaxservlet.version>3.1.0</javaxservlet.version>
</properties>
 

  2) -Phadoop-2.6

      在源码pom.xml中,通过外部指定的<profile>的id来选择编译时所用到的<profile>

    源码中,-Phadoop-2.6来选择id为hadoop-2.6的<profile>作为编译条件

      

<profile>
<id>hadoop-2.2</id>
<!-- SPARK-7249: Default hadoop profile. Uses global properties. -->
</profile> <profile>
<id>hadoop-2.3</id>
<properties>
<hadoop.version>2.3.0</hadoop.version>
<jets3t.version>0.9.3</jets3t.version>
</properties>
</profile> <profile>
<id>hadoop-2.4</id>
<properties>
<hadoop.version>2.4.1</hadoop.version>
<jets3t.version>0.9.3</jets3t.version>
</properties>
</profile> <profile>
<id>hadoop-2.6</id>
<properties>
<hadoop.version>2.6.4</hadoop.version>
<jets3t.version>0.9.3</jets3t.version>
<zookeeper.version>3.4.6</zookeeper.version>
<curator.version>2.6.0</curator.version>
</properties>
</profile> <profile>
<id>hadoop-2.7</id>
<properties>
<hadoop.version>2.7.3</hadoop.version>
<jets3t.version>0.9.3</jets3t.version>
<zookeeper.version>3.4.6</zookeeper.version>

  3) -Phive -Phive-thriftserver和-Pyarn,同上面选择hadoop的profile一样,编译时加上对hive和yarn的支持

  4) -DskipTests clean package  编译过程中,跳过测试,实例包等,不进行编译;

./dev/make-distribution.sh Spark环境搭建(六)-----------sprk源码编译--name 2.6.0-cdh5.7.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0

   1)./dev/make-distribution.sh   通过在dev下的make-distribution.sh编译

   2)--name 2.6.0-cdh5.7.0 --tgz  编译后打成一个名为spark-2.1.0-bin-2.6.0-cdh5.7.0.tgz  的tgz包

   2)-Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver  同maven一样,通过id选择<profile>中的内容,进而支持某个模块

   3)-Dhadoop.version=2.6.0-cdh5.7.0   指定hadoop的版本

make-distribution.sh源码阅读

        Spark环境搭建(六)-----------sprk源码编译

        在上图中可以看出,编译脚本已经加入export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m",并且加入了跳过检测包的语句

        Spark环境搭建(六)-----------sprk源码编译

         --mvn 后面添加在编译mvn时选择的版本和<profile>

        Spark环境搭建(六)-----------sprk源码编译

        打包命令,以及报名的命名规则

到此,spark源码记录完毕。


Spark环境搭建(六)-----------sprk源码编译的更多相关文章

  1. Hive On Spark环境搭建

    Spark源码编译与环境搭建 Note that you must have a version of Spark which does not include the Hive jars; Spar ...

  2. Ubantu16&period;04进行Android 8&period;0源码编译

    参考这篇博客 经过测试,8.0源码下载及编译之后,占用100多G的硬盘空间,尽量给ubantu系统多留一些硬盘空间,如果后续需要在编译好的源码上进行开发,需要预留更多的控件,为了防止后续出现文件权限问 ...

  3. 保姆级教程——Ubuntu16&period;04 Server下深度学习环境搭建:安装CUDA8&period;0,cuDNN6&period;0,Bazel0&period;5&period;4,源码编译安装TensorFlow1&period;4&period;0&lpar;GPU版&rpar;

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  4. CentOS6&period;5下搭建LAMP环境&lpar;源码编译方式&rpar;

    CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL) 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP ,WAMP,MAMP等.这里我介 ...

  5. ffmpeg源码编译环境搭建

    ffmpeg是视频开发最常用到的开源软件,FFmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制. FFmpeg: FFmpeg ...

  6. 源码编译搭建LNMP环境

    LNMP源码编译 1.LNMP介绍 LNMP=Linux Nginx Mysql PHP Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器.Ng ...

  7. 搭建LNAMP环境(二)- 源码安装Nginx1&period;10

    上一篇:搭建LNAMP环境(一)- 源码安装MySQL5.6 1.yum安装编译nginx需要的包 yum -y install pcre pcre-devel zlib zlib-devel ope ...

  8. 搭建LNAMP环境(一)- 源码安装MySQL5&period;6

    1.yum安装编译mysql需要的包 yum -y install gcc-c++ make cmake bison-devel ncurses-devel perl 2.为mysql创建一个新的用户 ...

  9. 搭建LNAMP环境(三)- 源码安装Apache2&period;4

    上一篇:搭建LNAMP环境(二)- 源码安装Nginx1.10 1.yum安装编译apache需要的包(如果已经安装,可跳过此步骤) yum -y install pcre pcre-devel zl ...

随机推荐

  1. GPS经纬度换算成XY坐标

    ;        }

  2. onvif规范 中文介绍

    什么是ONVIF ? ONVIF规范描述了网络视频的模型.接口.数据类型以及数据交互的模式.并复用了一些现有的标准,如WS系列标准等. ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产 ...

  3. SUPPORTDIR引用的文件的加入

    上一篇转载了SUPPORTDIR的理论解释,如今截图说明实际操作: 选择依赖的语言,在右面的files框里右键点击,选择Insert Files插入文件,编译.由于安装得时候,压缩包会解压成一个暂时文 ...

  4. Flume使用说明

    关于Flume,官方定义如下: Apache Flume is a distributed, reliable, and available system for efficiently collec ...

  5. js 的DOM操作 2017-03-21

    DOM(document object model) 文档对象模型 BOM(browse object model) 针对浏览器(如:弹出的窗口,滚动条等) 一.操作对象(注意大小写:注意elemen ...

  6. java&period;lang&period;IllegalStateException&colon; attempt to re-open an already-closed object

    attempt to re-open an already-closed object 字面理解,试图再次打开已经关闭的对象.这是我在操作sqlited的时候出现的错误, 我在一个activity里面 ...

  7. Android 数据库框架ormlite

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

  8. python 对excel操作用法详解

    在python中,对excel表格读,写,追加数据,用以下三个模块: 1.wlrd 读取excel表中的数据 2.xlwt 创建一个全新的excel文件,然后对这个文件进行写入内容以及保存. 3.xl ...

  9. Android 编程下的代码混淆之&lpar;android-support-v4&period;jar&rpar;

    项 目在代码混淆过程中如果引用了第三方 Jar 包,需要在混淆的脚本文件中加入第三方 Jar 包的声明.部分第三方 Jar 包虽然在混淆脚本中进行了声明,但是在混淆过程中经常会发现内部类或者引用文件找 ...

  10. 改进意见的答复及bug重现

    各组对本组的互评链接如下 Thunder:http://www.cnblogs.com/vector121/p/7905300.html 王者荣耀交流协会:http://www.cnblogs.com ...