CDH Parcel包制作流程详解

  • 背景介绍

CDH可以很方便的添加一些大数据相关服务,但这仅限于cloudera公司提供。若想将第三方服务(如公司自己开发的组件)添加到CDH集群(托管在CDH上),需要按照一定的规则流程制作相关程序包,最后发布到CDH上。

本文以开源项目dolphinscheduler的master服务打包成parcel包部署为例,详解cdh parcel包的制作详细流程。

  • 相关规则介绍

一个完整的集成到CDH的parcel包应包含如下几个包:

● parcel:以“.parcel”结尾的gz格式的压缩文件。它必须为一个固定规则的文件名。

parcel包内包含了你的服务组件,同时包含一个重要的描述性文件parcel.json;这个文件记录了你的服务信息,如版本、所属用户、适用的CDH平台版本等parcel必须包置于/opt/cloudera/parcel-repo/目录下才可以被CDH发布程序时识别到。

● parcel命名规则必须如下:

文件名称格式为三段,第一段是包名,第二段是版本号,第三段是运行平台。

例如:DSMASTER-1.3.3.dsmaster.p0.5-el7.parcel

包名:DSMASTER

版本号:1.3.3.dsmaster.p0.5

运行环境:el7

el6是代表centos6系统,centos7则用el7表示

● DSMASTER-1.3.3.jar文件是一个jar包,它记录了你的服务在CDH上的管理规则,如你的服务在CDH页面上显示的图标、依赖的服务、暴露的端口、启动规则等。csd的jar包必须置于/opt/cloudera/csd/目录才可以在添加集群服务时被识别到。

  • 相关下载

制作完成的parcel包和csd jar包需要校验其合法性,cdh提供了jar方便我们对制作完成parcel包和csd jar进行校验。下载地址如下:

https://github.com/cloudera/cm_ext

  • 制作步骤

1、制作parcel包

1.1parcel包目录结构

parcel包的目录结构由

parcel包目录结构由你的服务目录(lib/dsmaster)和一个meta目录组成。meta目录组成文件如下:

1.2dsmaster_env.sh

声明你的服务运行时的所需的一些变量环境,可以根据你的服务需要可以自行添加设置。

#!/bin/bashexport DSMASTER_HOME=$PARCELS_ROOT/$PARCEL_DIRNAME

1.3parcel.json

Parcel.json是一个重要性的描述文件,这个文件记录了你的服务信息,如版本、所属用户、适用的CDH平台版本等。

{"schema_version":     1,"name":               "DSMASTER","version":            "1.3.3.dsmaster.p0.5","setActiveSymlink":   true,"depends": "CDH (>= 5.0), CDH (<< 6.0)","provides": ["dsmaster"],"scripts": {"defines": "es_env.sh"},"packages": [{"name": "dsmaster","version": "1.3.3.dsmaster.p0.5"}],"components": [{"name":    "dsmaster","version": "1.3.3","pkg_version": "1.3.3"}],"users": {"dsmaster": {"longname"    : "DSMASTER","home"       : "/var/lib/dsmaster","shell"       : "/bin/bash","extra_groups": []}},"groups": ["dsmaster"]
}

1.4打包parcel包

执行打包命令打成parcel包。

tar -zcvf DSMASTER-1.3.3.dsmaster.p0.5-el7.parcel DSMASTER-1.3.3.dsmaster.p0.5
java -jar /root/github/cloudera/cm_ext/validator/target/validator.jar -f DSMASTER-1.3.3.dsmaster.p0.5-el7.parcel

生成.sha哈希校验文件。

vi DSMASTER-0.0.5.dsmaster.p0.5-el7.parcel.sha
sha1sum DSMASTER-0.0.5.dsmaster.p0.5-el7.parcel

  1. 制作csd jar

2.1目录结构

csd包的目录如下:

● descriptor:放置服务的规则描述文件service.sdl。

● images:放置服务的图标文件,png格式。不放图标文件,则CDH页面不显示图标。

● scripts :放置服务的启停脚本,服务的启停通过该目录下的control.sh脚本来实现。

2.2service.sdl

{"name": "DSMASTER","label": "DS Master","description": "master service","version": 1,"runAs": {"user": "root","group": "root"},"maxInstances": 1,"icon": "images/icon.png","compatibility": {"generation": 1,"cdhVersion": {"min": 5,"max": 5}},"parcel": {"requiredTags": ["cdh"],"optionalTags": ["dsmaster-plugin"]},"commands" : [{"name" : "ForceStop","label" : "Force stop","description" : "Force stop of DSm Nodes","roleCommand" : "ForceStopRole","roleName" : "DSMASTER_NODE","runMode" : "all"}],"roles": [{"name": "DSMASTER_NODE","label": "DSMASTER Node","pluralLabel": "DSMASTER Nodes","jvmBased": true,"startRunner": {"program": "scripts/control.sh","args": ["start"]},"stopRunner" : {"timeout" : "90000","runner" : {"program" : "scripts/control.sh","args" : ["stop"]}},"commands": [{"name": "ForceStopRole","label": "Force Stop Role","description": "Force stop of DSMASTER Node","expectedExitCodes": [0],"requiredRoleState": "stopped","commandRunner": {"program": "scripts/control.sh","args": ["stop"]}}],"configWriter": {"generators": [{"filename": "dsmaster-conf.properties","configFormat": "properties","includeParams": ["dbhost","dhname","username","password","zkQuorum"]}]}}],
"parameters": [{"name": "dbhost","label": "dbhost","description": "dbhost","configName": "dbhost","required": "true","type": "string","configurableInWizard": true,"default": "localhost"},{"name": "dbname","label": "dbname","description": "dbname","configName": "dbname","required": "true","type": "string","configurableInWizard": true,"default": "dolphinscheduler"},{"name": "username","label": "username","description": "username","configName": "username","required": "true","type": "string","configurableInWizard": true,"default": "root"},{"name": "password","label": "password","description": "password","configName": "password","required": "true","type": "string","configurableInWizard": true,"default": "*******"},{"name": "zkQuorum","label": "zkQuorum","description": "zkQuorum","configName": "zkQuorum","required": "true","type": "string","configurableInWizard": true,"default": "server12:2181,server13:2181,server14:2181"}]
}

2.3control.sh

#!/bin/sh
export ES_HOME=/opt/cloudera/parcels/DSMASTER/lib/dsmasterPROGNAME=`basename "$0"`warn() {echo "${PROGNAME}: $*"
}die() {warn "$*"exit 1
}locateJava() {echo# export JAVA_HOME=/usr/java/latestecho "Changing Java Home to: $JAVA_HOME"export JAVA="$JAVA_HOME/bin/java"echo "Changing Java to: $JAVA"echo
}config() {echoecho "Creating config"
}
init() {echo "init"source $CONF_DIR/dsmaster-conf.propertiesecho "dbhost: $dbhost"echo "dbname: $dbname"echo "username: $username"echo "password: $password"echo "zkQuorum: $zkQuorum"sed -i  "s#spring.datasource.url.*#spring.datasource.url=jdbc:mysql://$dbhost/$dbname?characterEncoding=UTF-8\&allowMultiQueries=true#g" $ES_HOME/conf/datasource.propertiessed -i  "s#spring.datasource.username.*#spring.datasource.username=$username#g" $ES_HOME/conf/datasource.propertiessed -i  "s#spring.datasource.password.*#spring.datasource.password=$password#g" $ES_HOME/conf/datasource.propertiessed -i  "s#zookeeper.quorum.*#zookeeper.quorum=$zkQuorum#g" $ES_HOME/conf/zookeeper.properties}start() {echo "Running DSMASTER"sh $ES_HOME/bin/dolphinscheduler-daemon.sh stop master-serverexec sh $ES_HOME/bin/dolphinscheduler-daemon-cdh.sh start master-server
}stop() {echo "stop DSMASTER"exec sh $ES_HOME/bin/dolphinscheduler-daemon-cdh.sh stop master-server
}init
case "$1" instart)start;;stop)stop;;restart)stopstart;;*)echo "Usage DSMASTER {start|stop|restart}";;
esac

2.4打包成csd jar

java -jar /root/github/cloudera/cm_ext/validator/target/validator.jar -s descriptor/service.sdl
jar -cvf DSMASTER-1.3.3.jar *
  • 发布到CDH

1、分发激活parcel包

将parcel包和parcel.sha拷贝到cm节点的/opt/cloudera/parcel-repo/目录下,将csd jar包拷贝到/opt/cloudera/csd目录下。

点击【主机】【Parcel】【检查新Parcel】可以识别出刚放入的parcel包。

点击【分配】【激活】

成功后执行命令重启cloudera-scm-server。

systemctl restart cloudera-scm-server

2、添加服务

首页添加服务。

选择需要添加的服务。

选择服务部署的主机。

更改服务所需的配置。

最后等待执行成功即可。

最后执行成功后在首页可以看到新添加的服务。

CDH Parcel包制作流程详解相关推荐

  1. 《猿族崛起》动作捕捉技术及制作流程详解

    前言: 其实最近两个月发布的原创文章,最初动机都是来自于<猿族崛起>,之前并没有太关注这部片子,后来偶然在火星时代上看到Weta发布的特效制作花絮,然后简介说是启用了<阿凡达> ...

  2. 酒店小程序制作流程详解

    现在市面上有很多种微信小程序,它们的使用方法大同小异.这里以思途酒店小程序为例,分四个步骤讲解主要制作流程及各环节注意事项. 一. 明确需求 微信小程序是2017年1月正式推出的,距今已有三年半.现在 ...

  3. 3d游戏建模制作流程详解 丨漫威宇宙【万磁王】

    点击上方"蓝字",关注我们. 建模干货|巴西3D艺术家的个人作品 漫威宇宙[万磁王] 使用软件zbrush等等,分享给大家,看霸气的万磁王建模作品是如何从草图开始到最终渲染成型的完 ...

  4. 【Cocoa(mac) Application 开发系列之四】动作编辑器(Cocos2dx)制作流程详解及附上响应鼠标滚轴事件、反转坐标系、导入/创建资源目录等知识点代码!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/911.htm ...

  5. p12解析流程_iOS证书及描述文件制作流程详解

    我们在一些iOS应用Windows开发平台,进行打包iOS应用包ipa文件时,需要用到两个iOS证书文件p12及profile文件mobileprovision 下面介绍如何使用工具快速申请! 一.申 ...

  6. 嘉立创电路板制作过程全流程详解(五):测试、锣边、V-CUT、QC、发货

    第1篇文章,点击这里:嘉立创电路板制作过程全流程详解(一):MI.钻孔 第2篇文章,点击这里:嘉立创电路板制作过程全流程详解二:沉铜.线路 第3篇文章,点击这里:嘉立创电路板制作过程全流程详解三:图电 ...

  7. Ubuntu16.04下制作deb包的方法详解

    CSDN GitHub Ubuntu下制作deb包的方法详解 AderXCoding/system/tools/build_deb 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可 ...

  8. 负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解

    负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负载均衡的基 ...

  9. 嘉立创电路板制作过程全流程详解(二):沉铜、线路

    上一篇文章,我们了解了第1道和第2道工序,MI和钻孔,这篇文章,我们将了解第3道工序和第4道工序:沉铜和线路. 看上一篇文章,点击这里: 嘉立创电路板制作过程全流程详解(一):MI.钻孔 第3道工序: ...

最新文章

  1. 地磅称重软件源码_【漯河衡器】浅谈地磅称重的发展趋势
  2. 美团性能分析框架和性能监控平台
  3. 前端学习(2708):重读vue电商网站28之通过axios请求拦截器添加 token
  4. css table设置边框_table布局的一些总结
  5. 6004.ubuntu18.04移植qgroundcontrol地面站
  6. OPPO Reno 3 Pro细节流出:同价位最轻薄的双模5G手机
  7. Jsp+Servlet+Mysql实现的二手物品在线商城源码
  8. 计算机网络中的语法 语义 时序的概念,网络iso协议及语义语法时序详解
  9. 转:五大常用算法——贪心算法详解及经典例子
  10. 论文翻译:2020_Demucs:Real Time Speech Enhancement in the Waveform Domain
  11. 直播预告 | 自监督学习在推荐系统中的应用
  12. 蛋白质翻译后修饰分析简介
  13. java导出繁体字word,word繁体字转换
  14. cf一直连接服务器,玩穿越火线显示连接服务器超时怎么回事?原因分析及解决方法...
  15. 烤仔TVのCCW | 带宽不可能三角(下)
  16. golang go-redis和redigo的不同用法
  17. 软件测试工资一般是多少?
  18. 跨平台比较工具MELD,BCOMPARE
  19. 【微淘百课】微信多群直播服务,微课多群同步转播机器人,微信语音多群同步助手
  20. HP C7000刀片服务器学习三

热门文章

  1. python爬取中国大学_Python 3爬取全国高校基本信息
  2. 使用OleDbParameter来操作Access数…
  3. rtx2080ti什么水平 RTX2080ti显卡什么级别 2080ti属于什么档次的显卡
  4. 推进700M产业链成熟,打响5G专网应用第一枪
  5. linux命令vi使用列操作(删除和添加)
  6. [9i]中国最常见的“叔叔”,“阿姨”称呼,在英语中怎么说?
  7. shanzhi - 学习元组和while循环
  8. C语言实现Json与结构体相互转换——cson
  9. 算法笔记-问题 A: Fibonacci
  10. SNN介绍-来自脉冲神经网络原理