Spark 2.1.1 源码编译

标签(空格分隔): Spark


Spark 源码编译

环境准备与起因

由于线上Spark On Yarn Spark Streaming程序在消费kafka 写入HDFS table 使用Partition by 和 Savemode.append,在一定条件下导致写入HDFS 超过了处理批次。经过排查应该与 Spark 写入parquet 文件追加时候元数据检查所导致,修改源码后需要对其进行编译。

参考Spark的官方文档
根据Spark官方文档编译模块的介绍(http://spark.apache.org/docs/2.1.1/building-spark.html)的介绍:
环境:centos/ubuntu 软件准备:
spark-2.2.1.tgz源码
jdk-8u144-linux-x64.tar.gz   JDK1.8以上  
apache-maven-3.5.0-bin.tar.gz
scala-2.11.8.tgz
hadoop-2.7.3.tar.gz

注意点

yum -y install git
环境变量更改maven 默认内存
export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"(官网建议)

pom.xml

修改pom.xml 中属于自己使用的一些hadoop 版本,zookeeper 版本等信息

编译

手动自定义编译

# Apache Hadoop 2.7.X and later(指定hadoop版本)
mvn -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package # With Hive 1.2.1 support(指定hive的版本)
mvn -Pyarn -Phive -Phive-thriftserver -DskipTests clean package 指定scala版本
./dev/change-scala-version.sh 2.10
mvn -Pyarn -Dscala-2.10 -DskipTests clean package 由于我们生产上的CDH的版本如下: hadoop-2.7.3.tar.gz
mvn -Pyarn -Phive -Phive-thriftserver -Phadoop-2.7 -Dhadoop.version=2.7.3 -DskipTests clean package  (采用这种方式编译出来的不是tar.gz的格式)

官方脚本编译

./dev/make-distribution.sh --name 2.7.3   --tgz   -Phadoop-2.7 -Dhadoop.version=2.7.3 -Phive -Phive-thriftserver  -Pyarn   (这种方法编译出来的就是tgz形式,但是速度不快)

注意事项:

官方脚本自带一些环境变量检查,会导致编译检查耗时,直接强制修改make-distribution.sh脚本

1.将VERSION ,SCALA_VERSION ,SPARK_HADOOP_VERSION ,SPARK_HIVE 注释掉,直接写上自己的版本

#VERSION=$("$MVN" help:evaluate -Dexpression=project.version $@ 2>/dev/null | grep -v "INFO" | tail -n 1)        指的是spark2.1.1这个版本
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version $@ 2>/dev/null\    指的是scala 2.11
#    | grep -v "INFO"\
#    | tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version $@ 2>/dev/null\  指的是hadoop.version=2.7.3
#    | grep -v "INFO"\
#    | tail -n 1)
#SPARK_HIVE=$("$MVN" help:evaluate -Dexpression=project.activeProfiles -pl sql/hive $@ 2>/dev/null\    SPARK_HIVE为1表示支持
#    | 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.1.1
SCALA_VERSION=2.11
SPARK_HADOOP_VERSION=2.7.3
SPARK_HIVE=1
if [ "$MAKE_TGZ" == "true" ]; then
TARDIR_NAME=spark-$VERSION-bin-$NAME #打包的文件名spark-2.1.1-bin-2.7.3
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

编译完成

编译完成后包在Spark src 主目录下,

Spark 2.1.1 源码编译的更多相关文章

  1. 基于cdh5.10.x hadoop版本的apache源码编译安装spark

    参考文档:http://spark.apache.org/docs/1.6.0/building-spark.html spark安装需要选择源码编译方式进行安装部署,cdh5.10.0提供默认的二进 ...

  2. Apache Spark源码走读之9 -- Spark源码编译

    欢迎转载,转载请注明出处,徽沪一郎. 概要 本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了.但到了Spark上面,事情似乎不这么简单 ...

  3. Spark源码编译

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3822995.html spark源码编译步骤如下: cd /home/hdpusr/workspace ...

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

    想要搭建自己的Hadoop和spark集群,尤其是在生产环境中,下载官网提供的安装包远远不够的,必须要自己源码编译spark才行. 环境准备: 1,Maven环境搭建,版本Apache Maven 3 ...

  5. Spark记录-源码编译spark2.2.0(结合Hive on Spark/Hive on MR2/Spark on Yarn)

    #spark2.2.0源码编译 #组件:mvn-3.3.9 jdk-1.8 #wget http://mirror.bit.edu.cn/apache/spark/spark-2.2.0/spark- ...

  6. spark源码编译记录

    spark在项目中已经用了一段时间了,趁现在空闲,下个源码编译在IDEA里面阅读下,特此记录过程. 前提已经安装maven和git 1.上官网下载源码的包: 2.然后解压到一个文件夹 3.编译,编译的 ...

  7. 1、Spark 2.1 源码编译支持CDH

    目前CDH支持的spark版本都是1.x, 如果想要使用spark 2x的版本, 只能编译spark源码生成支持CDH的版本. 一.准备工作 找一台Linux主机, 由于spark源码编译会下载很多的 ...

  8. Scala 深入浅出实战经典 第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

  9. Scala 深入浅出实战经典 第60讲:Scala中隐式参数实战详解以及在Spark中的应用源码解析

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

随机推荐

  1. centos7搭建单机redis5.0

    目录 1. redis初步安装 2. 配置 3. 设置开机启动(centos6) 3.1 编写启动脚本 3.2 设置权限 3.3 启动测试 3.4 设置开机自启动 4. 设置开机启动(centos7) ...

  2. Exchange 2010的部署

    实验拓扑: 实验准备条件:计算机基本配置的准备:DC (vbers):配置IP地址.子网掩码.网关EX (vbers2):配置IP地址.子网掩码.网关.指定DNS 域环境搭建的准备1.在计算机名为vb ...

  3. 在Ueditor的内容区添加一个下拉选框改变事件

    <script>html='';html=html+` <select name="" onchange='this.appendChild(document.g ...

  4. C++ 内联函数 inline关键字

    inline 关键字主要功能是为了 代替掉 宏代码片段. 在C++中使用关键字inline关键字声明内联函数. inline int fun(int a,int b) { return a < ...

  5. MySQL数据库入门备份数据库

    MySQL数据库入门——备份数据库   一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...

  6. webpack常用的插件

    webpack常用的开发插件 1.clean-webpack-plugin 运行webpack build时先把打包进入的文件夹清空 注意,它是以对象的方式去接收的 const { CleanWebp ...

  7. mysql5.7.26做主主配置

    一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.在 ...

  8. TCP/IP的网络客户端和服务器端程序

    服务器端的过程可以分为以下几个步骤: (1)  初始化套接字的版本信息WSAStartup (2)创建套接字 ,需要两个套接字及客户端和服务器端的套接字 (3)绑定服务器(bind),该函数用于绑定服 ...

  9. Js中JSON.stringify()与JSON.parse()

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...

  10. 502 bad gateway nginx 的错误的解决方案

    总结 一般是php问题居多,也需要调整相应的nginx参数,最后也可能是mysql假死 nginx问题 查看日志中的报错error.log一般设置路径/usr/local/nginx/logs/ngi ...