Spark 2.1.1 源码编译

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 [email protected] 2>/dev/null | grep -v "INFO" | tail -n 1)??????? 指的是spark2.1.1这个版本
#SCALA_VERSION=$("$MVN" help:evaluate -Dexpression=scala.binary.version [email protected] 2>/dev/null\??? 指的是scala 2.11
#??? | grep -v "INFO"#??? | tail -n 1)
#SPARK_HADOOP_VERSION=$("$MVN" help:evaluate -Dexpression=hadoop.version [email protected] 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 [email protected] 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 主目录下,

原文地址:https://www.cnblogs.com/hit-zb/p/10884225.html

时间: 2024-12-20 00:03:00

Spark 2.1.1 源码编译的相关文章

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

欢迎转载,转载请注明出处,徽沪一郎. 概要 本来源码编译没有什么可说的,对于java项目来说,只要会点maven或ant的简单命令,依葫芦画瓢,一下子就ok了.但到了Spark上面,事情似乎不这么简单,按照spark officical document上的来做,总会出现这样或那样的编译错误,让人懊恼不已. 今天闲来无事,又重试了一把,居然o了,做个记录,以备后用. 准备 我的编译机器上安装的Linux是archlinux,并安装后如下软件 scala 2.11 maven git 下载源码 第

1、Spark 2.1 源码编译支持CDH

目前CDH支持的spark版本都是1.x, 如果想要使用spark 2x的版本, 只能编译spark源码生成支持CDH的版本. 一.准备工作 找一台Linux主机, 由于spark源码编译会下载很多的第三方类库包, 因此需要主机能够联网. 1.安装Java, 配置环境变量, 版本为JDK1.7或者以上 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261

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

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/IVN4EuFlmKk/优酷:http://v.youku.com/v_show/id_

Spark1.0源码编译

编译方式一:mavenexport MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"mvn -Pyarn -Phive -Dhadoop.version=2.3.0-cdh5.0.0 -Dyarn.version=2.3.0-cdh5.0.0 -DskipTests clean package 参数说明:-Pyarn:支持yarn -Phive:Spark SQL中支持Hive-Dhadoop

源码编译MYSQL遇到的几个小问题

闲来无聊,顺手练习一下好久没碰过的MYSQL,于是决定源码编译安装MYSQL-5.7.11,练习不打紧,出了好多问题,于是乎赶紧在这里总结一下: 先下载的编译器:cmake-2.8.12.2-4.el6.x86_64.rpm   MYSQL源码包:mysql-boost-5.7.11.tar.gz 接下来进行配置,编译,安装三部曲:(区别是我把数据目录单独放在了另外一张虚拟硬盘上-DMYSQL_DATADIR=/mydata/data   -DMYSQL_UNIX_DATA=/mydata/da

马哥linux学习笔记:源码编译安装

由于rpm包在作者制作封装的时候已经把程序的一些特性固定了,如果我们根据自己的需求,需要运用程序的一些没有普适性相关特性,就需要下载程序的源码手动编译安装了,这里只是简单的介绍一下C代码的程序包编译安装方法. 为了能更直观的看到源码编译安装的过程,我演示一下在centos7.2环境中编译安装httpd2.2: 首先,编译的前提是得有称手的工具及环境了,编译c源代码就需要用到开发工具,make,gcc了,环境就需要开发库跟头文件了,如果系统中没有这些,就需要yum安装了. 这里我运行yum gro

烂泥:mysql5.0数据库源码编译安装

本文首发于烂泥行天下. 本次实验的mysql.OS相关信息如下: Mysql:5.0.96 OS:centos 32 bit 最近公司要上新的业务,指明数据库使用的是mysql5.0版本.如果是使用rpm包安装的话,那就很简单了.直接使用yum安装即可,命令如下: yum –y install mysql mysql-server Yum方式安装完毕后,直接启动mysql数据库服务即可.如下图: 这样基本上就可以了. 但是这样安装mysql数据库,没有进行定制.比如mysql数据库的数据文件存储

ubuntu 源码编译安装最新的vim 8.0

为什么要源码编译安装VIM? 因为我要安装ycm,ycm要求vim版本为8.0 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 1,核对系统版本 [email protected]:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: tr

详解LAMP源码编译安装

实战:LAMP源码编译安装 家住海边喜欢浪:zhang789.blog.51cto.com 目录 详解LAMP源码编译安装 LAMP简介 一.准备工作 二.编译安装 Apache 三.编译安装 MySQL 四.编译安装 PHP 测试LAMP搭建开源数据web管理程序phpMyadmin 详解LAMP源码编译安装 LAMP简介 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装L