学习 Livy(一):初识 Livy

除了 Apache Spark 本身提供的 spark-submitspark-shellThriftServer 之外, Apache Livy 提供了另一种与 Spark 集群交互的方式,通过 REST 接口。

此外,Apache Livy 支持同时维护多个会话。

可以通过 REST 接口、Java/Scala 库和 Apache Zeppelin 访问 Apache Livy。

Apache Livy Architecture

部署

下载

进入下载页面下载最新版本的 Apache Livy 分发包,当前最新版本为 0.5.0。下载成功,执行 unzip 解压缩。

配置

进入 conf 目录,执行 cp livy-env.sh.template livy-env.sh,编辑 livy-env.sh 文件配置环境变量:

export HADOOP_CONF_DIR=/etc/hadoop/conf  
export SPARK_HOME=/var/lib/spark_2.1.3  

其它可选的环境变量有:

  • SPARK_CONF_DIR Spark 环境变量目录,默认为 ${SPARK_HOME}/conf
  • LIVY_PID_DIR Livy pid 文件存储目录,默认为 /tmp

执行 cp livy.conf.template livy.conf,编辑 livy.conf 文件配置 Livy:

livy.spark.master = yarn  
livy.spark.deploy-mode = cluster  
livy.repl.enable-hive-context = true  

其它可选的配置有:

  • livy.server.host 主机地址,默认为 0.0.0.0;
  • livy.server.port 端口号,默认为 8998;
  • livy.server.session.timeout-check 是否检测会话超时,默认为 true;
  • livy.server.session.timeout 会话超时时间,默认为 1h;
  • livy.server.session.state-retain.sec 已完成会话保留时间,默认为 600s;
  • livy.rsc.jars RSC JAR 包位置,缓存在 HDFS 上,可以加速会话的启动速度;
  • livy.repl.jars REPL JAR 包位置,缓存在 HDFS 上,可以加速会话的启动速度;
  • livy.server.yarn.poll-interval YARN 状态刷新频率,默认为 5s;
  • livy.ui.enabled 是否启动 UI 界面,默认为 true;

服务启停

启动服务:

bin/livy-server start  

停止服务:

bin/livy-server stop  

Trouble Shooting

启动会话报错 livy java.lang.NoSuchMethodException: org.apache.spark.ui.SparkUI.appUIAddress()

Apache Livy 0.5.0 + Apache Spark 2.2.0

产生这个问题的原因是 Apache Spark 版本过高,该方法已经作废,降级到 Apache Spark 2.1.3 及之前的版本即可。