以下是工作学习过程中对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,就可以了!
为了让后面的同学少走坑,在这里分享给大家。
新文章会同步到公众号,关注公众号,交流更方便?: