本文分享自华为云社区《开源工作流引擎Azkaban在MRS中的实践》,作者:啊喔YeYe。
环境输入
实践版本:Apache azkaban 4.0.0 (以单机版举例,集群版本配置 过程类似),MRS 3.1.0 普通集群。 Azkaban 插件地址 Azkaban 官网 Azkaban 源码地址
安装azkaban-solo-server
Azkaban不提供二进制包,需要用户下载源码编译打包,获取到“azkaban-solo-server.zip”和“azkaban-db.zip”。
- 环境准备。
- 在华为云购买Linux弹性云服务器ECS,用于安装运行MRS集群客户端和Azkaban,并绑定弹性公网IP。
- 在弹性云服务器ECS上安装运行MRS集群客户端,例如安装目录为“/opt/client”。
- 准备数据表,参考MySQL教程。
- 安装MySQL并授予本机访问权限。注意:Azkaban 4.0.0版本默认适配MySQL 5.1.28版本。
- 创建Azkaban数据库,解压“azkaban-db.zip”获取“create-all-sql-*.sql”,并初始化。
- 上传安装包并解压
- 修改配置文件“azkaban-solo-server/conf/azkaban.properties”
配置端口根据实际情况修改,“jetty.port”和“mysql.port”端口号可使用默认值 jetty.port=8081
database.type=mysql
mysql.port=3306
mysql.host=x.x.x.x
mysql.database=azkaban
mysql.user=xxx
mysql.password=xxx
- 启动azkaban-solo-server
source /opt/client/bigdata_env
cd /opt/azkaban/azkaban-solo-server
sh bin/start-solo.sh
- 访问Azkaban WEB UI
在浏览器输入“http://ECS弹性IP:port”网址,进入Azkaban WebUI登录界面,输入用户信息登录Azkaban服务。 说明 默认端口(port):8081; 用户名/密码:azkaban/azkaban; 用户账号配置文件: /opt/azkaban/azkaban-solo-server/conf/azkaban-users.xml
azkaban-hdfs-viewer plugin配置指导
连接HDFS需要用户下载源码编译获取“az-hdfs-viewer.zip”,并已完成安装azkaban-solo-server。
- 环境准备
- 配置Azkaban用户,添加supergroup用户组授予访问HDFS权限
- 在HDFS的配置文件“core-stie.xml”中增加Azkaban代理用户
a. 登录Manager页面,选择“集群 > 服务 > HDFS > 配置 > 全部配置 > HDFS(服务) > 自定义” b. 在参数文件“core-site.xml”中添加如下配置项:
名称 | 值 |
---|
hadoop.proxyuser.azkaban.groups | * | hadoop.proxyuser.azkaban.hosts | * | c. 配置完成后,单击左上角“保存” d. 选择“概览 > 更多 > 重启服务”输入密码后重启HDFS服务
- 上传安装包并解压
- 修改并保存配置文件
- 拷贝HDFS插件所需包至"/opt/azkaban/azkaban-solo-server/extlib"目录
cp /opt/client/HDFS/hadoop/share/hadoop/hdfs/*.jar /opt/azkaban/azkaban-solo-server/extlib
cp /opt/client/HDFS/hadoop/share/hadoop/client/hadoop-client-api-3.1.1-mrs-2.0.jar /opt/azkaban/azkaban-solo-server/extlib
cp /opt/client/HDFS/hadoop/share/hadoop/common/*.jar /opt/azkaban/azkaban-solo-server/extlib
不同MRS版本所需Hadoop相关版本不同,通过find /opt/client查询目 - 检查目录结构
目录结构应当为: - azkaban-solo-server
- bin
- conf
- extlib (hadoop相关插件第三方包)
- lib
- logs
- plugins
- jobtypes(job插件目录)
- commonprivate.properties
- hive
- plugin.properties
- private.properties
- hadoopJava
- plugin.properties
- private.properties
- viewer
- hdfs
- conf
- plugin.properties
- lib (az-hdfs-viewer.zip解压后的lib)
- temp
- web
- 重启Azkaban-solo-server服务
cd /opt/azkaban/azkaban-solo-server
sh bin/shutdown-solo.sh
sh bin/start-solo.sh
- 访问HDFS Browser
- 在浏览器输入“http://ECS弹性IP:8081”网址,进入Azkaban WebUI登录界面,输入用户信息登录Azkaban服务
- 单击"HDFS"
plugins-jobtypes hadoop-job 部署运行
安装azkaban-solo-server完成后,再部署验证hadoop-job
- 环境准备
- 上传插件配置文件
- 解压"azkaban-plugins-3.0.0.zip" 获取"azkaban-plugins-3.0.0\plugins\jobtype\jobtypes"下"hadoopJava"文件夹
- 将“hadoopJava”文件夹上传至“/plugin”目录。目录不存在则需新建
- 修改配置文件"azkaban-solo-server/plugins/jobtypes/commonprivate.properties"
# set execute-as-user
execute.as.user=false
hadoop.security.manager.class=azkaban.security.HadoopSecurityManager_H_2_0
azkaban.should.proxy=false
obtain.binary.token=false
proxy.user=azkaban // MRS集群中配置的Azkaban代理用户名
allow.group.proxy=true
// execute-as-user存放目录
azkaban.native.lib=/opt/azkaban/azkaban-solo-server
# hadoop
hadoop.home=/opt/client/HDFS/hadoop //opt/client为MRS集群客户端安装目录
hive.home=/opt/client/Hive/Beeline
spark.home=/opt/client/Spark/spark
hadoop.classpath=${hadoop.home}/etc/hadoop,${hadoop.home}/share/hadoop/common/*,${hadoop.home}/share/hadoop/common/lib/*,${hadoop.home}/share/hadoop/hdfs/*,${hadoop.home}/share/hadoop/hdfs/lib/*,${hadoop.home}/share/hadoop/yarn/*,${hadoop.home}/share/hadoop/yarn/lib/*,${hadoop.home}/share/hadoop/mapreduce/*,${hadoop.home}/share/hadoop/mapreduce/lib/*
jobtype.global.classpath=${hadoop.home}/etc/hadoop,${hadoop.home}/share/hadoop/common/*,${hadoop.home}/share/hadoop/common/lib/*,${hadoop.home}/share/hadoop/hdfs/*,${hadoop.home}/share/hadoop/hdfs/lib/*,${hadoop.home}/share/hadoop/yarn/*,${hadoop.home}/share/hadoop/yarn/lib/*,${hadoop.home}/share/hadoop/mapreduce/*,${hadoop.home}/share/hadoop/mapreduce/lib/*
- 示例程序验证
- 准备测试数据"input.txt"文件,文件内容可参考如下格式进行自定义,存放路径如"/opt/input.txt"
Ross male 33 3674
Julie male 42 2019
Gloria female 45 3567
Carol female 36 2813
- 通过HDFS客户端将测试数据"input.txt"上传至"hdfs /tmp/azkaban_test"
a. 以客户端安装用户,登录安装客户端的节点 b. 执行以下命令,切换到客户端安装目录?cd /opt/client c. 执行以下命令配置环境变量?source bigdata_env d. 执行HDFS Shell命令上传文件?hdfs dfs -put /opt/input.txt /tmp/azkaban_test - 用户在本地编写并保存“wordcount.job”文件,内容如下
type=hadoopJava
job.extend=false
job.class=azkaban.jobtype.examples.java.WordCount
classpath=./lib/*,/opt/azkaban-solo-server-0.1.0-SNAPSHOT/lib/*
force.output.overwrite=true
input.path=/tmp/azkaban_test
output.path=/tmp/azkaban_test_out
- 在浏览器输入“http://ECS弹性IP:port”网址,进入Azkaban WebUI登录界面,输入用户信息登录Azkaban服务,提交job运行验证
Spark command job—参考客户端命令
spark任务有两种运行方式,一种是command方式,另一种是spark jobtype方式。
- Command方式:需要指定spark_home为
/opt/client/Spark/spark/ 在MRS集群客户端节点可以通过echo $SPARK_HOME获取实际Spark安装地址。 设置azkanban所在ECS全局环境变量,添加source {MRS客户端}后需要重启azkaban才可生效 - jobtype方式:参考plugins-jobtypes hadoop-job 部署运行。
?点击关注,第一时间了解华为云新鲜技术~?
|