基于Centos7编译spark指定Hadoop版本

基于Centos7编译spark指定Hadoop版本

0 摘要

  主要探究了如何对spark源码进行编译,以及普及了一下Maven中的-P,-D的意义以及我在编译过程中遇到的两个坑。为什么需要编译spark源码呢?官网已经提供了预编译的版本了啊,但是如果你对spark源码进行了修改或者spark提供了相对应的hadoop版本不能满足要求,本人编译是因为需要CDH版本的spark,综上所述,最佳实践是对spark源码进行编译。

1 编译前准备

  本次选择的版本是spark2.2.0,需要准备spark2.2.0文档的编译模块(http://spark.apache.org/docs/2.2.0/building-spark.html),Maven3.3.9或者以上版本,JDK8,Spark2.2.0源码(https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0.tgz)。

  通过上述准备你已经正确配置好JDK和Maven3.3.9以上版本,且下载好源码,解压后文件目录如下:

  可以看到是典型的maven结构:

2 编译开始

  如何编译?查看官网文档,按照步骤一步步来

  2.1 设置的Maven内存

  本人最开始在编译的过程中,使用的一款内存为2G的服务器,编译中间就卡死了,建议:内存一定要大,否则编译不成功,通过下面设置Mavne的内存

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

  2.2 编译参数选择

  如果弄懂了下列的参数,那么编译就简单了,本节,你会知道Maven中编译的一些知识。

    下图是官网提供的一个脚本make-distribution.sh,可以编译成一个可分发的包,便于部署,我们使用这个来部署。

  2.2.1 Maven编译相关

上图中的-Phadoop-2.7,-Phive什么意思?

在Maven中,profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们可以通过操作系统的不同来使用不同的配置信息,比如windows下是一套信息,linux下又是另外一套信息,等等。下图是一个id为:hadoop-2.7的一个profile,

所以,简而言之,可以通过-P+$(profile_id)来显示的指定你需要的profile,本次编译需要hive,hive-thriftserver,yarn等Profile,所在需要指定为:-Phive -Phive-thriftserver -Pyarn

上图中的-D是什么意思?

这是显示的指定的属性值,本次使用的Hadoop版本是:2.6.0-cdh5.7.0,所以通过-Dhadoop.version=2.6.0-cdh5.7.0指定Hadoop版本

2.3 编译指令

最终编译指定为:指定了需要hive,hive-thriftserver,yarn等Profile,指定了Hadoop版本:2.6.0-cdh5.7.0

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

2.4 在源码根目录 下

执行上面的指令

2.5 编译成功

3  编译过程中的坑以及解决办法

3.1 错误了通过-Phadoop-2.6多余指定了Hadoop这个Profile(本人后面指定的Hadoop版本就是2.6,且这个版本在Spark2.2.0是默认的Hadoop版本,不需要显示指定)会出现如下错误:提示hadoop-2.6这个Profile不存在,但是实际编译过程中,并不会让你出现错误。仍然会编译完成,但是编译后的包是不能用的。

3.2 找不到某个包,很普遍的错误,因为Maven仓库中的确没有这个包。如下:

解决办法:在spark.2.2.0中的pom.xml文件中如下仓库地址:

4 小结

  熟悉Maven和一定要看官网,官网什么都是详细的。

原文地址:https://www.cnblogs.com/truekai/p/11703671.html

时间: 2024-10-18 00:48:41

基于Centos7编译spark指定Hadoop版本的相关文章

可直接使用的memcached(基于CentOS7.2.1511的minimal版本)

基于CentOS7.2.1511的minimal版本,memcached需要libevent的支持,主要基于以下版本进行源码编译 libevent-2.0.22-stable.tar.gz memcached-1.4.29.tar.gz 下面相关文件 编译时使用用户组为www,用户为www 相关命令: groupadd -r www useradd -r -g www -M www 解压路径为: /usr/local/nginx   下载:libevent-2.0.22-stable for c

基于mipsel编译Qt4.6.2版本(有具体参数和编译时遇到的问题)

1.使用的configure配置为:./configure -embedded mips -little-endian -xplatform qws/linux-mips-g++ -prefix /opt/qte462-mips -release -opensource -confirm-license -webkit -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -I$QTDIR/include/libz -L$QTDIR/lib -no-qt3support

基于centos7.3安装部署jewel版本ceph集群实战演练

一.环境准备 安装centos7.3虚拟机三台 由于官网源与网盘下载速度都非常的慢,所以给大家提供了国内的搜狐镜像源:http://mirrors.sohu.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso 在三台装好的虚拟机上分别加三块100G的硬盘.如图所示: 3.配置ip ceph-1 ceph-2 ceph-3 192.168.42.200 192.168.42.201 192.168.42.203 修改可参照下面的

Intellij编译Spark on Yarn源码注意事项

默认是1.0.4,需设置指定Hadoop版本: 在${SPARK_HOME}/pom.xml中的<id>yarn</id>改为 <profile> <id>yarn</id> <properties> <hadoop.major.version>2</hadoop.major.version> <hadoop.version>2.2.0</hadoop.version> <yarn

centos7编译安装mysql5.7.20版本

centos7编译安装mysql5.7.20版本 遇到问题: 之前想在线上搭建mysql5.7.20版本找了很多文档都觉得写得不怎么完善,很多需要注意的错误点都提及,所以只好自己写一篇了!个人觉得最主要注意的是mysql的data目录一定不能漏了权限问题,还有的经常遇到mysql.sock文件的错误就是因为编译的时候指定的目录要小心,然后启动前在my.cnf文件里面定义一下问题就解决了.这是我写的时候遇到最多的问题. 一.进入mysql官网下载(www.mysql.org)mysql源安装包:

基于CentOS7搭建mongodb(3.6.6版本)

基于CentOS7搭建mongodb(3.6.6版本) mongodb简介 Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,

(版本定制)第5课:基于案例分析Spark Streaming流计算框架的运行源码

本期内容: 1.在线动态计算分类最热门商品案例回顾与演示 2.基于案例分析Spark Streaming的运行源码 第一部分案例: package com.dt.spark.sparkstreaming import com.robinspark.utils.ConnectionPoolimport org.apache.spark.SparkConfimport org.apache.spark.sql.Rowimport org.apache.spark.sql.hive.HiveConte

centos7下安装指定版本mysql5.7.23

现在mysql版本已经到MySQL 8.0(GA)稳定版本了,所以需求是想简单又快速在centos7下安装指定版本例如MySQL 5.7(GA)版本有下面这种方法 首先需要到mysql官网这里下载对应RPM包来update一下 1.全新安装MySQL的步骤 我这边是想安装5.7.23版本,然后这个rpm包是最新8.0版本的,这边我就需要做点操作了: 首先,将MySQL Yum存储库添加到系统的存储库列表中.按着这些次序: 在http://dev.mysql.com/downloads/repo/

centos7 源码编译安装TensorFlow CPU 版本

一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. 但是在编译之中,发现很多坑,由此记录一下. 环境相关: 系统:centos7 python版本:2.7.5 二.准备 1. 安装相关依赖 # 一般会缺失的依赖 yum -y install java-1.8.0-openjdk-devel automake autoconf libtool libi