centos7下制作livy0.7.0的parcel包和csd文件

制作livy的parcel包和csd文件

Livy是一个基于Spark的开源REST服务,它能够通过REST的方式将代码片段或是序列化的二进制代码提交到Spark集群中去执行。Cloudera Manager 添加livy服务需要制作parcel包及csd文件。最新版本为0.7.0,github上3年没更新了
我的环境为CDH6.3.2,CM6.3.1平台。

官网:http://livy.incubator.apache.org/

  1. 配置java,maven等环境 (略)

  2. 下载cm_ext工具。

    可以不用下载,后面的 livy_zeppelin_cdh_csd_parcels,build脚本中含有下载的部分。

  3. 下载 livy_zeppelin_cdh_csd_parcels

    [root@cdh1 cloudera]# cd /opt/soft/cloudera/
    [root@cdh1 cloudera]#git clone https://github.com/alexjbush/livy_zeppelin_cdh_csd_parcels.git
    [root@cdh1 cloudera]# cd livy_zeppelin_cdh_csd_parcels/
    

4.修改build脚本:
因为默认的build livy版本为0.5.0,但是我想要用0.7.0的最新版本,而且不需要zepplin,所以对build脚本修改如下。
JAR_PATH:我在官网手动下载了apache-livy-0.7.0-incubating-bin.zip 所以不需要单独LIVY_URL在线下载。
LIVY_MD5:这个md加密的也是根据运行build后报错一次后填写的
其他的根据自己环境修改

# !/bin/bash

set -x
set -e

JAR_PATH=/opt/package/apache-livy-0.7.0-incubating-bin.zip
DEST_PATH=/opt/soft/cloudera/livy_zeppelin_cdh_csd_parcels

# 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_URL=http://apache.mirror.anlx.net/incubator/livy/0.7.0-incubating/apache-livy-0.7.0-incubating-bin.zip
LIVY_MD5="2c5b63757414af16da308e63749e1ae6"  #不知道哪来的加密,但是报错一次后就知道这填什么了
LIVY_VERSION=0.7.0

livy_service_name="LIVY"
livy_service_name_lower="$( echo $livy_service_name | tr '[:upper:]' '[:lower:]' )"
livy_archive="$( basename $LIVY_URL )"
livy_folder="$( basename $livy_archive .zip )"
livy_parcel_folder="${livy_service_name}-${LIVY_VERSION}"
livy_parcel_name="$livy_parcel_folder-el7.parcel"
livy_built_folder="${livy_parcel_folder}_build"
livy_csd_build_folder="livy_csd_build"

function build_cm_ext {

# Checkout if dir does not exist

  if [ ! -d cm_ext ]; then
    git clone https://github.com/cloudera/cm_ext.git
  fi
  if [ ! -f cm_ext/validator/target/validator.jar ]; then
    cd cm_ext
    #git checkout "$CM_EXT_BRANCH"
    mvn package
    cd ..
  fi
}

function get_livy {
  if [ ! -f "$livy_archive" ]; then
    #wget $LIVY_URL
    cp $JAR_PATH $DEST_PATH
  fi
  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
  if [ ! -d "$livy_folder" ]; then
    unzip $livy_archive
  fi
}

function build_livy_parcel {
  if [ -f "$livy_built_folder/$livy_parcel_name" ] && [ -f "$livy_built_folder/manifest.json" ]; then
    return
  fi
  if [ ! -d $livy_parcel_folder ]; then
    get_livy
    mv $livy_folder $livy_parcel_folder
  fi
  cp -r livy-parcel-src/meta $livy_parcel_folder
  sed -i -e "s/%VERSION%/$LIVY_VERSION/" ./$livy_parcel_folder/meta/parcel.json
  sed -i -e "s/%SERVICENAME%/$livy_service_name/" ./$livy_parcel_folder/meta/parcel.json
  sed -i -e "s/%SERVICENAMELOWER%/$livy_service_name_lower/" ./$livy_parcel_folder/meta/parcel.json
  java -jar cm_ext/validator/target/validator.jar -d ./$livy_parcel_folder
  mkdir -p $livy_built_folder
  tar zcvhf ./$livy_built_folder/$livy_parcel_name $livy_parcel_folder --owner=root --group=root
  java -jar cm_ext/validator/target/validator.jar -f ./$livy_built_folder/$livy_parcel_name
  python cm_ext/make_manifest/make_manifest.py ./$livy_built_folder
}

function build_livy_csd {
  JARNAME=${livy_service_name}-${LIVY_VERSION}.jar
  if [ -f "$JARNAME" ]; then
    return
  fi
  rm -rf ${livy_csd_build_folder}
  cp -rf ./livy-csd-src ${livy_csd_build_folder}
  sed -i -e "s/%SERVICENAME%/$livy_service_name/" ${livy_csd_build_folder}/descriptor/service.sdl
  sed -i -e "s/%SERVICENAMELOWER%/$livy_service_name_lower/" ${livy_csd_build_folder}/descriptor/service.sdl
  sed -i -e "s/%SERVICENAMELOWER%/$livy_service_name_lower/" ${livy_csd_build_folder}/scripts/control.sh
  java -jar cm_ext/validator/target/validator.jar -s ${livy_csd_build_folder}/descriptor/service.sdl -l "SPARK_ON_YARN SPARK2_ON_YARN"

  jar -cvf ./$JARNAME -C ${livy_csd_build_folder} .
}

case $1 in
parcel)
  build_cm_ext
  build_livy_parcel
  ;;
csd)
  build_livy_csd
  ;;
*)
  echo "Usage: $0 [parcel|csd]"
  ;;
esac

5.build livy parcel

[root@cdh1 livy_zeppelin_cdh_csd_parcels]# ./build.sh parcel

​6. build liby csd

[root@cdh1 livy_zeppelin_cdh_csd_parcels]# ./build.sh csd

build后生成livy的parcel,manifest 文件,csd文件如下 在这里插入图片描述

7.开启httpd情况下,移动parcel 到httpd 对应目录下

[root@cdh1 livy_zeppelin_cdh_csd_parcels]# mkdir /var/www/html/livy0.7.0
[root@cdh1 livy_zeppelin_cdh_csd_parcels]# cp LIVY-0.7.0_build/
LIVY-0.7.0-el7.parcel  manifest.json
[root@cdh1 livy_zeppelin_cdh_csd_parcels]# cp LIVY-0.7.0_build/* /var/www/html/livy0.7.0/ -r

外部浏览器验证
在这里插入图片描述

  1. 移动csd到cloudera/csd下
  [root@cdh1 livy_zeppelin_cdh_csd_parcels]# cp LIVY-0.7.0.jar /opt/cloudera/csd/

上面已经制作完成livy的parcel,及csd文件

8.CM部署livy0.7.0的服务参考
https://cloud.tencent.com/developer/article/1349537
在这里插入图片描述

错误1:启动livy报错
Error found before invoking supervisord: ‘getpwnam(): name not found: livy’

在这里插入图片描述解决:
1.在Livy REST Server所在服务器上增加livy用户及用户组

[root@cdh3 ~]# groupadd livy
[root@cdh3 ~]# useradd livy -g livy
[root@cdh3 ~]# chown livy:livy /var/log/livy
chown: cannot access ‘/var/log/livy’: No such file or directory
[root@cdh3 ~]# mkdir /var/log/livy
[root@cdh3 ~]# chown livy:livy /var/log/livy
  1. 在HDFS的core-site.xml 中添加一下配置:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值