spark 2.0.1 和zeppelin 0.6.2 编译及与hadoop yarn关联

以下是工作学习过程中对spark 2.0.1 和zeppeline 0.6.2的编译和关联的步骤及踩到的坑。

####1、spark2.0.1 编译过程

1)从官网下载源码编译

提前准备JDK 1.7+

./dev/change-scala-version.sh 2.11

./build/mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -Phive -Pspark-ganglia-lgpl -Pkinesis-asl -Phive-thriftserver -Dscala-2.11 -DskipTests clean package -X

2)可能出现的报错

1、java Permheap OutOfMemory
原因:maven堆内存不足,编译前执行:export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

2、Unsupported major.minor version 51.0
原因: java版本过低,使用java 1.7及以上版本,编译前执行: export JAVA_HOME=**/jdk1.7.0_71; export PATH =\ J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

3、Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (scala-compile-first) on project spark-tags_2.11: Caused by: Compile failed via zinc server
因为使用zinc出的原因,因而可以禁用zinc server加速功能,在spark目录下的pom.xml中找到true, 将该参数改成false即可

3)配置文件,将spark关联到yarn(不需要在所以节点都复制spark,spark on yarn模式中spark就是客户端)
需要在spark-env.sh文件中添加 HADOOP_CONF_DIR 或 YARN_CONF_DIR参数指向hadoop配置文件目录如/opt/hadoop/etc/hadoop,这个目录中的配置文件描述了写hdfs和连接resourcemanager的配置项。

好了这个时候spark已经关联到yarn,为了测试是否关联成功,执行如下命令:
bin/spark-shell --master yarn-client --executor-memory 1G --num-executors 10
或bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster lib/spark-examples*.jar 10

这个时候查看resourcemanager的web UI查看任务是否提交。

可能遇到的问题:spark 2.0.1出现jersy版本比hadoop 的高,导致不兼容
解决方法:执行命令时添加参数–conf spark.hadoop.yarn.timeline-service.enabled=false,或把该参数写入spark-defaults.conf文件中就可以

####2、zeppelin 0.6.2编译过程
1)从官网下载源码编译
提前下载好maven 3.1+, npm,然后去官网下载源码,在zeppelin项目下执行编译命令:
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=1024m"
./dev/change_scala_version.sh 2.11
zeppelin-0.6.2/mvn clean package -Pyarn -Pspark-2.0 -Dspark.version=2.0.1 -Phadoop-2.6 -Dhadoop.version=2.6.0 -Pscala-2.11 -Ppyspark -DskipTests -X

2)可能遇到问题
1、[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (download-and-zip-pyspark-files) on project zeppelin-spark-dependencies: An Ant BuildException has occured: Warning: Could not find file /opt/zeppelin/spark-dependencies/target/spark-dist/spark-1.6.0/python/lib/py4j-0.8.2.1-src.zip to copy.

原因:查看zeppelin-0.6.2/spark-dependencies/pom.xml发现该问题本质是下载的jar包与需要的jar包版本不一致,发现zeppelin-0.6.2/spark-dependencies/pom.xml中没有spark 2.0.1的描述,只有spark 2.0.0的依赖描述,如修改编译命令:将 -Dspark.version=2.0.1 修改为 -Dspark.version=2.0.0

2、[INFO] Downloading Node.js from http://nodejs.org/dist/v0.12.13/node-v0.12.13-linux-x64.tar.gz to /tmp/zeppelin-0.6.2/zeppelin-web/node_tmp/node.tar.gz
[INFO] No proxy was configured, downloading directly

原因:查看编译日志,执行到这里,说没有代理直接下载,但是经过很久没有动静,查进程发现都已经结束,后来查资料,选择去单个模块编译,进入/zeppelin-0.6.2/zeppelin-web/目录,先查看pom有没有对应的版本,查看没有,则直接执行mvn install,发现执行成功,然后回到parent根pom.xml,编译/zeppelin-0.6.2/下的pom.xml,最后成功,泪奔~~o(>_<)o ~~

3)配置zeppelin关联yarn

在conf目录,在zeppelin-env.sh中添加:

export JAVA_HOME=**/jdk1.7.0_71

export MASTER=yarn-client

就可以,现在配置完成。可以运行bin/zeppelin-daemon.sh start启动zeppelin server,在localhost:8080查看结果

可能遇到的问题:
1、进入web UI后,发现没有内容,右上角是红色小点,显示anonymous,这个时候问题很可能就是端口8081被占用,因为web端口默认8080,websocket端口默认+1 就是8081,这时候检查8081有什么服务占用端口,关掉该端口对应服务,再启动zeppelin server,就可以了!

为了让后面的同学少走坑,在这里分享给大家。

新文章会同步到公众号,关注公众号,交流更方便?:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值