Spark & Zeppelin

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.git
cd 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.sh
export HADOOP_CONF_DIR=/usr/install/hadoop
export 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.conf SPARK_SUBMIT_OPTIONS Applicable 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,重新编译即可。

四. 一些使用界面

《Spark & Zeppelin》 这里写图片描述

    原文作者:breeze_lsw
    原文地址: https://www.jianshu.com/p/297c3893d7e7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞