一.准备
从官网下载官方编译好的0.7.1包.并从maven下载如下文件:
jackson-core-2.6.3.jar
jackson-databind-2.6.3.jar
jackson-annotations-2.6.3.jar
使用上面三个jackson 包替换$zeppelin-home/lib中的jackson
按照github livy页面下载并编译livy:
mvn package -X -e -DskipTests -Dspark-2.0 package
二.部署
解压相关安装包,按如下步骤设置
1)ldap登录支持已经权限设置
在conf/shiro.ini中配置ldap验证服务器相关的设置
activeDirectoryRealm= org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
activeDirectoryRealm.systemUsername =
activeDirectoryRealm.systemPassword =
activeDirectoryRealm.searchBase =
activeDirectoryRealm.url=
同 一文件中可以设置admin管理员权限,管理员权限可以实现去除特定interpreter,例如去除spark interpreter,强制用户使用livy 等等,只需在
[roles] 中配置,例如:
[roles]
admin=admin
2)代理用户,user impersonation支持
虽然按照官网文档0.7.1已经支持代理用户,但是会按照默认登录的用户来代理,但是登录之后的用户名是xxx@ucarinc.com,由于存在特殊字符@,所以在zeppelin-env.sh中添加如下代码,将代理的用户名前缀切割下来
export ZEPPELIN_IMPERSONATE_CMD='echo ${ZEPPELIN_IMPERSONATE_USER} | cut -d \@ -f 1 |xargs -I {} sudo -H -u {} bash -c '
同时需要修改bin/interpreter.sh文件,使得上面的shell指令生效
修改第50行:
ZEPPELIN_IMPERSONATE_RUN_CMD=$(eval "echo ${ZEPPELIN_IMPERSONATE_CMD} ")
为:
ZEPPELIN_IMPERSONATE_RUN_CMD=$ZEPPELIN_IMPERSONATE_CMD
修改的原因在于原本的echo叠加上指令中的echo,会导致指令被提前执行而报错,具体分析已经向官方jira提了.
除上面的修改外,由于登录后的用户不一定存在于zeppelin 服务器,需要在bin/interpreter.sh 文件中46行开始的部分添加下面的代码:
id $ZEPPELIN_IMPERSONATE_USER
if [ "$(echo $?)" != "0" ];then
sudo useradd -r -s /bin/nologin $ZEPPELIN_IMPERSONATE_USER
fi
(需要启动zeppelin服务器的用户具有sudo权限)
3)其他设置
conf/zeppelin-env.sh中可以配置spark interpreter的默认提交设置,例如
export SPARK_SUBMIT_OPTIONS="--driver-memory 4096M --num-executors 3 --executor-cores 1 --executor-memory 2G".
其他基础配置例如spark,hadoop,以及spark任务默认提交模式也需要设定,如下
export SPARK_HOME=/usr/local/spark-2.0.0-bin-hadoop2.6
export MASTER=yarn-client
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/
livy提交任务时的相关默认设置可以在 livy.conf 中设置,livy.conf设置不了的设置也可以在¥SPARK_HOME/conf/spark_default.conf 中设置
4)修改权限
由于代理用户之后会以代理用户的身份向logs文件夹记日志,需要如下操作
cd $ZEPPELIN_HOME
mkdir logs
chmod -R 777 logs
5.livy log的设置
livy使用log4j记录log,默认只向console输出log,需要在conf/log4j.properties 中加入记录log到文件的设置。
6.在livy中使用hive和livy.sql 的使用设置
conf/livy.conf 中的livy.repl.enableHiveContext = true
复制hive-site.xml到livy/conf
升级spark 版本,使用高于2.01的版本。会遇到类似下面的错误:
java.io.FileNotFoundException: Added file file:/data/livy-hive/livy/conf/hive-site.xml does not exist.
原因在于spark cluster模式提交任务有bug.