spark-2.2.0-bin-2.6.0-cdh5.12.1.tgz 编译方法总结!

xiaoxiao2021-02-28  4

菜鸡一只,如果有说错的地方,还请见谅和指出批评!!

事情是这样的,想在自己本地部署一个hadoop2.6.0-cdh5.12.1,hive1.1.0-cdh5.12.1,spark-2.2.0-bin-2.6.0-cdh5.12.1的环境,前两个还是很好找到哪里下载和部署的!

cdh版本下载点:http://archive.cloudera.com/cdh5/cdh/5/

apache版本下载点:http://archive.apache.org/dist/

不要说什么不会下载,找那种以.tar.gz的格式,点击下去就自动下载了(这要是不会,私聊我。。。)

但是其实问题是在spark上面,因为spark其实不依赖hadoop,所以你会发现spark的版本和hadoop的版本搭配很多元化,导致老版本(比如:spark-1.6.1-bin-2.5.0-cdh5.3.6)其实是找得到的,甚至官网帮你编译好了,你直接下载就可以了,但是你自己肯定满脑子骚操作想要有自己的版本,因此你就需要下载源码编译!

下载源码方式:

1、官网下载tgz

下载好了,直接copy到linux里,然后解压,这就是源码咯! 2、通过git命令去spark的git上clone

你要是用过git,那你就知道这个的原理是什么,如果没用过。。。出门右拐找git教程

这里我用的是第一种,这样省的去linux上安装一个git,反正两种都可以,看个人选择~

1、编译方式:

如果你英文够棒棒,那就直接去这种英文网站上看:http://spark.apache.org/docs/2.2.0/building-spark.html

反正据我所知,大体上是这几种

1、maven编译方式

但是这种编译方式好像最后会把你的spark编译成一个jar包(不,我并不喜欢这样)

2、SBT编译方式

这个应该和maven差不多,但是我也没有选择这种方式,因为我发现选这种方式的人不多,个人觉得只要最后能得到编译结果,用什么方式都可以嘛~

3、使用./dev/make-distribution.sh命令

这个是官网提供的编译脚本,其实也是用maven编译(因此也要配置maven),但是最后可以得到tgz,或者tar.gz这样的压缩包(我就是想要这种),因此本文讲的是这种方式,如果读者想要采用如上的两种方式,那。。。。可以出门右拐去其他帖子了

2、准备的环境:

1、机器:

一台linux服务器,或者一台linux虚拟机(我是在一台6G内存的虚拟机上做的,内存少会根本执行不了,如果少于4G,那基本上也是可以放弃了)

2、java,scala,maven环境:

一个jdk1.8的版本!别问我为什么要1.8的,你要强行全部用低版本(比如1.7,1.6,甚至1.5)我也不拦你,反正我试过会报错(甚至根本执行不了)

注意:这里有个坑,装好jdk,你一定要rpm -qa | grep java ,然后用rpm -e --nodeps XXXX 把rpm包的java相关的东西全部卸载,因为有可能系统自带了乱七八糟的jdk影响了你自己装的JDK,切记!!

然后scala,我选择2.11.8的版本。

然后maven就比较随意了(但是也不能太低,官网会有提示),我选的版本是apache-maven-3.5.2(读者就不要选比我低的版本就好了)

最后配置环境变量(不要问我为什么要配置!)

vi /etc/profile 在最下面的一行开始往下写

到这里,基本环境就配置好了

3、修改spark的配置:

可能不同版本他的文件结构目录会有区别,因此最好先看看对应版本的building spark,因为上文说过了用spark提供的make-distribution.sh脚本,其实也是maven编译,所以要修改pom等配置

1、spark源码根目录下的pom(改和你本地相等的环境)

图中画箭头的地方,原来是没有的是,是我后来手动添加的,因为不添加报如下错误:

No goals have been specified for this build,详细报错我还原不出来了,但是我是看了一位大神的文章(id:yiluoak_47)解决这个错的,文章链接如下:https://blog.csdn.net/yiluoak_47/article/details/16940303

再次感谢他的分享,否则我进行不下去了!!

第二个错:不好意思我没有截图报错,但是错误就是他在spark的pom里提供的默认仓库中,找不到hadoop的cdh版本,因此添加镜像源就好了

2、脚本中修改参数make-distribution.sh

其实如何编译,版本依赖,编译出来是什么样子(文件名等)都在脚本里写好了,你只要传入对应参数,脚本里会做判断。。。。。(吧啦吧啦一大堆废话,还不如你好好看看脚本里面怎么写的)

-1.如下图,这一串东西,其实是在判断你的spark,scala,hadoop,hive版本

改成如下图,直接写死就好了,最后SPARK_HIVE=1的意思是支持hive,0就是不支持

-2.执行哪个maven脚本,默认是spark的build目录下的,但是你自己已经有配置好的maven了

改成如下:

4、执行编译命令

./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn

官网给出的是这样的命令,但是我直接运行是报错的。。。(这里我很想骂粗话,因为这里我智障了很久)

其实报错,要看具体信息的,动动小手,把窗口往上移动!!

这个报错就看得懂了吧,就是官网默认的参数,会添加上sparkR的支持,但是我不会R,所以本地也没有R语言的环境,所以编译sparkcore的代码的时候,就报错了!!!

./dev/make-distribution.sh --tgz -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn我把--name custom-spark(这个值会影响编译出来的tar的文件名称,老版本是没有这个参数的,不写也行),-Psparkr,--r,--pip(这个应该是python的东西)参数都去掉了

然后我的编译就顺利运行了下去,如果中途有报错,注意看报错信息,很多情况是网络不好,或者内存不够下载不下来jar包!!

编译成功就会在根目录下生成一个压缩文件!!

这个包,解压了就能用了

到这里就算搞定了,大家如果还有什么疑问,或者失败,报错,可以给我留言,相互学习提高下!!~本人以后会写更多关于代码的测试等等的文章,挖个坑,提醒自己以后记得来填坑!!

好的,老话,菜鸡一只,如果有什么说的不对的,还请大佬指出批评,多谢指教~~!

转载请注明原文地址: https://www.6miu.com/read-2350255.html

最新回复(0)