Spark & Zeppelin

daqianmen發表於2021-09-09

zeppelin 為互動式分析查詢提供了視覺化介面。 在zeppelin上使用spark NoteBook,有spark和livy兩種方式。

軟體版本

zeppelin版本:從zeppelin-master編譯(已釋出0.6)

spark版本: 1.6.2

livy版本: livy 0.2.0

一. 編譯部署zeppelin

git clone  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 

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過期後,重新使用時會得到該提示。

這個問題在

中有更具體的描述。

這個時候只有新建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,重新編譯即可。

四. 一些使用介面

圖片描述

這裡寫圖片描述



作者:breeze_lsw
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1727/viewspace-2819001/,如需轉載,請註明出處,否則將追究法律責任。

相關文章