CDH使用CM安装整合livy和zepplin(已攻略)


2021-08-17 实践可用,大多数坑都遇到了,分享下。

安装的步骤分为 前提准备制作parcel和csd包使用CM安装livy和zepplin

版本信息:

CentOS7CDH 6.3.2livy 0.5.0zepplin 0.8.2

前提准备

  1. 首先你需要JDK1.8及以上、maven3、git。我这里linux系统里没装maven和git,就先使用已经安装好上述工具的windows操作了一下。需要从livy、zepplin官网上下载我们安装的软件包:livy-0.5.0-incubating-bin.zipzeppelin-0.8.2-bin-all.tgz。链接:livy官网下载地址
    zeppelin官网下载地址

  2. 找个目录,使用git下载一个项目:
    git clone https://github.com/alexjbush/livy_zeppelin_cdh_csd_parcels.git
    注意,我clone的时候发现clone下来的项目中丢了很多文件,导致后面出错。于是我去github:livy_zeppelin_cdh_csd_parcels上去下载了它的zip文件。这才正常。

  3. 继续下载一个项目:git clone https://github.com/cloudera/cm_ext.git。把文件包扔到上述2中的livy_zeppelin_cdh_csd_parcels目录中去。

制作parcel和csd包

  主要我们是要去执行livy_zeppelin_cdh_csd_parcels项目中的build.sh文件,在这个文件目录下。

步骤一:我们需要编辑下build.sh

  把下面几行的版本更新了,LIVY_MD5、ZEPPELIN_MD5校验比较烦,直接注释掉,略过。

CM_EXT_BRANCH=cm5-5.12.0
LIVY_URL=http://apache.mirror.anlx.net/incubator/livy/0.5.0-incubating/livy-0.5.0-incubating-bin.zip
#LIVY_MD5="cc9dc5518e8c178808707eaa68b7672a"
LIVY_VERSION=0.5.0

ZEPPELIN_URL=http://apache.mirror.anlx.net/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-all.tgz
#ZEPPELIN_MD5="d87a285c0640ed02ad74bea219525364"
ZEPPELIN_VERSION=0.8.2

#需要注释的代码:
#livy_md5="$( md5sum $livy_archive | cut -d' ' -f1 )"
 # if [ "$livy_md5" != "$LIVY_MD5" ]; then
   # echo ERROR: md5 of $livy_archive is not correct
   # exit 1
  #fi
 #zeppelin_md5="$( md5sum $zeppelin_archive | cut -d' ' -f1 )"
 # if [ "$zeppelin_md5" != "$ZEPPELIN_MD5" ]; then
   # echo ERROR: md5 of $zeppelin_archive is not correct
   # exit 1
 # fi
步骤二:把下载文件放进去

  由于之前我们已经下载了livy-0.5.0-incubating-bin.zip和zeppelin-0.8.2-bin-all.tgz,直接放到livy_zeppelin_cdh_csd_parcels目录下。cm_ext也放下,这样脚本里的下载就不会执行了,节约时间。
build.sh这个脚本的可选参数为 parcel和csd我们都需要执行下,我们windows下可以使用git工具执行命令:

#首先先给个权限
chmod 755 build.sh

sh build.sh parcel
sh build.sh csd

执行后肯定是报错啦,主要是下面几个坑:

  1. wget 找不到命令,我们可以安装一个windows版本的wget.exe,然后配置好环境变量,不会配也行,直接build.sh中找到wget代码,改成你下载wget的存放地址如:D:\wget\wget.exe
  2. 顺利的情况你会执行到这一步:
tar zcvhf ./$zeppelin_built_folder/$zeppelin_parcel_name $zeppelin_parcel_folder --owner=root --group=root

  此时LIVY-0.5.0_build目录已经有了,也有LIVY-0.5.0-el7.parcel文件了,但是下面这个命令会出错,原因是我使用windows是处理不了LIVY-0.5.0-el7.parcel的,因此我直接把livy_zeppelin_cdh_csd_parcels压缩扔到我们Linux系统中。

 java -jar cm_ext/validator/target/validator.jar -f ./$zeppelin_built_folder/$zeppelin_parcel_name
步骤三:在linux系统中再次执行build.sh脚本

  这时候执行基本就不会报错了。
  此时还缺一个文件:LIVY-0.5.0-el7.parcel.sha,可以用如下命令在LIVY-0.5.0_build目录下执行。zepplin同样操作即可

sha1sum ./LIVY-0.5.0-el7.parcel |awk '{print $1}' > ./LIVY-0.5.0-el7.parcel.sha

最后生成的需要文件如下:
livy:
LIVY-0.5.0-el7.parcelLIVY-0.5.0-el7.parcel.shamanifest.jsonLIVY-0.5.0.jar
zepplin:
ZEPPELIN-0.8.2-el7.parcelZEPPELIN-0.8.2-el7.parcel.sha
manifest.jsonZEPPELIN-0.8.2.jar

步骤四:部署parcel和csd

  接下来我们找到安装cm的目录假设是/opt/cloudera/

  1. 把parcel、parcel.sha 文件cp到/opt/cloudera/parcel-repo目录下
  2. 把jar、manifest.json 文件cp到/opt/cloudera/csd目录下,上述两个文件manifest.json可以合成一个,自己编辑下,放parcels这个数组里就好。
步骤五:重启下cm-server
# cdh 6.3.2版本重启
systemctl restart cloudera-scm-server
# cdh 5.16.2/版本
#/opt/cm-5.16.2/etc/init.d/cloudera-scm-server start

报错:
   这个错是cm-server重启的时候日志里的,可以观察下日志,如果有错,在添加服务的时候是不会出现livy的。

  Could not install csd [LIVY-0.5.0]. Skipping java.lang.IllegalArgumentException: Could not read source file [aux/client/livy-env.sh]

解决
  LIVY-0.5.0.jar包里的文件aux找不到了,也不知道为啥livy_csd_build 里面是 _aux ,需要把livy_csd_build 里的_aux目录重命名改成aux目录重新打LIVY-0.5.0.jar包
jar -cvf ./$JARNAME -C ${livy_csd_build_folder} .

步骤六:CM添加服务配置文件
  1. 在cm里 集群parcel – 找到 LIVY - 分配 激活

在这里插入图片描述

  1. 在cm里添加服务 livy 配置数据存储地址,如:/opt/cdh/livy/lvy 选择节点。
  2. Livy配置文件 关键字搜Livy Superusers增加 livy 和 hue
  3. zeppelin配置文件:
    关键字搜:Zeppelin Java Options zeppelin_java_options Zeppelin Server Default Group
    -Xmx1g -Xms1g
    在这里插入图片描述
启动报错信息

一、启动失败报错:Error found before invoking supervisord: 'getpwnam(): name not found: livy'
解决:
1去选择的节点增加用户、组、权限

groupadd -r zeppelin
useradd -r -g zeppelin zeppelin
groupadd -r livy
useradd -r -g livy livy
cd /var/log
mkdir  livy
chown livy:livy /var/log/livy
mkdir -p /var/log/zeppelin
chown zeppelin:zeppelin /var/log/zeppelin

2在HDFS的core-site.xml 中添加一下配置:

<property>
    <name>hadoop.proxyuser.livy.groups</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.livy.hosts</name>
    <value>*</value>
</property>

在这里插入图片描述

二、启动报错没有权限Permission deny
解决:把/opt/cloudera/parcels/LIVY-0.5.0/bin 下 chmod 755

三、启动报错Non-zero error code running command: hdfs dfs -put -f /var/run/cloudera-scm-agent/process/645-zeppelin-ZEPPELIN_SERVER/zeppelin-conf/interpreter.json file:///opt/cdh/zeppelin/conf

解决:
把opt/cdh/zeppelin/目录的所属用户组修改为zeppelin就好了 chown zeppelin:zeppelin /opt/cdh/zeppelin/

步骤七:访问zepplin

  xxx.xxx.xxx.xxx:port 端口默认8080,可以自己在cm配置中改下。
访问不了:
  配置zeppelin-conf/zeppelin-site.xml 的 Zeppelin Server 高级配置代码段(安全阀):(配置好就可以访问啦)

<property>
  <name>zeppelin.server.addr</name>
  <value>0.0.0.0</value>
  <description>Server binding address</description>
</property>

重启cm服务

搞定

在这里插入图片描述
在这里插入图片描述
好,后面使用有问题再看,莫莫绵~,溜了溜了。

更新问题:
  1. 上述方法完成后发现,cm服务重启后会导致配置文件重置,我们希望重启后保留自定义配置
    解决:
    找到:livy_zeppelin_cdh_csd_parcels-master\zeppelin_csd_build\scripts\control.py 文件,打开找到如图的代码。
    在这里插入图片描述
    修改这部分为图中所示即可:
        
    if not os.path.exists(os.environ["ZEPPELIN_CONF_FS_DIR"][7:]):
           run_command("hdfs dfs -mkdir -p %s" % (os.environ["ZEPPELIN_CONF_FS_DIR"]))
    if not os.path.exists("%s/interpreter.json" %(os.environ["ZEPPELIN_CONF_FS_DIR"][7:])):
           run_command("hdfs dfs -put -f %s %s" % (completed_filename, os.environ["ZEPPELIN_CONF_FS_DIR"]))
    if not os.path.exists(os.environ["ZEPPELIN_NOTEBOOK_DIR"][7:]):
           run_command("hdfs dfs -mkdir -p %s" % (os.environ["ZEPPELIN_NOTEBOOK_DIR"]))
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值