Apach Zeppelin和Apach Livy搭配使用配置

一.准备

从官网下载官方编译好的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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值