为了账号安全,请及时绑定邮箱和手机立即绑定

Spark & Zeppelin

标签:
Spark

zeppelin 为交互式分析查询提供了可视化界面。 在zeppelin上使用spark NoteBook,有spark和livy两种方式。

软件版本

zeppelin版本:从zeppelin-master编译(已发布0.6)

spark版本: 1.6.2

livy版本: livy 0.2.0

一. 编译部署zeppelin

git clone https://github.com/apache/zeppelin.gitcd zeppelin-master
mvn clean package -Pspark-1.6 -Dhadoop.version=2.4.1 -Pyarn -Ppyspark -DskipTests -Pbuild-distr

编译后的包在 zeppelin-distribution/target 目录下

二. Spark Interpreter for Apache Zeppelin

1. 配置

设置spark Home

vim conf/zeppelin-env.shexport HADOOP_CONF_DIR=/usr/install/hadoopexport SPARK_HOME=/usr/install/spark

启动zeppelin

bin/zeppelin-daemon.sh start

默认通过8080端口访问zeppelin。可以在conf/zeppelin-env.shconf/zeppelin-site.xml中进行修改

2. 设置Spark Interpreter

主要就是master的设置。

在zeppelin interpreter中设置spark master的参数,目前支持所有的spark master :

  • mesos模式中使用mesos://zk://zk1:2181,zk2:2182,zk3:2181/mesosmesos://host:5050

  • standalone模式中使用spark://master:7077

  • yarn模式中使用yarn-client

  • local模式中使用local[*]

默认参数会从 SPARK_HOME/conf/spark-default.conf中读取

3. 常见错误解决:

spark notebook运行报错

sc.makeRDD(1 to 100)

com.fasterxml.jackson.databind.JsonMappingException: Could not find creator property with name 'id' (in class org.apache.spark.rdd.RDDOperationScope)

jackson版本冲突导致,zepplin中的版本为2.5,spark使用的为2.4,更换zepplin/lib下jackson-databind的版本重启即可。

ls zeppelin-0.6.0-bin-all/lib/ | grep jackson
jackson-annotations-2.5.0.jar
jackson-core-2.5.3.jar
jackson-databind-2.5.3.jar

获取jackson-databind-2.4.4

wget http://central.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.4.4/jackson-databind-2.4.4.jar

4. 添加外部依赖

spark的外部依赖可以通过 zeppelin-env.sh添加。
spark-default.conf以及zeppelin-env.sh中一些参数的对应关系。

spark-defaults.confSPARK_SUBMIT_OPTIONSApplicable Interpreter
spark.jars--jars%spark
spark.jars.packages--packages%spark
spark.files--files%pyspark

eg.

export SPARK_SUBMIT_OPTIONS="--jars /usr/install/libs/mysql-connector-java-5.1.34.jar,/usr/install/spark/lib/influxdbSink-byHost.jar"

5. spark Interpreter 目前存在的一些坑

不支持user proxy,意味着所有在notebook上运行的任务提交到集群中的权限都是启动zeppelin 服务的用户,存在安全问题。

三. Livy Interpreter for Apache Zeppelin

1. livy的使用

Impersonation机制

livy为多用户使用同一server提供了代理服务(相当于spark-submit--user-proxy),
需要开启zeppelin的authentication机制来实现

livy的配置

一般只需要在Interpreters中配置livy.urllivy.spark.master

livy支持所有spark的配置参数,只需要在配置前加入livy前缀即可。

2. livy Interpreter 目前存在的一些坑

1. 404 bad request

每个session存在空闲过期时间(默认为1小时),session过期后,重新使用时会得到该提示。

这个问题在
https://github.com/apache/zeppelin/pull/1184
中有更具体的描述。

这个时候只有新建notebook使用或是重启livy interpreter解决。

2. %livy.spark%livy.sql默认使用的是sqlContext,%livy.pyspark默认使用的是HiveContext

因此直接使用%livy.sql查询hive表将会提示

org.apache.spark.sql.AnalysisException: Table not found:

可以通过修改源码LivyHelperinitializeSpark方法,将初始化的SQLContext改为HiveContext,重新编译即可。

四. 一些使用界面

webp

这里写图片描述



作者:breeze_lsw
链接:https://www.jianshu.com/p/297c3893d7e7


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消