写点什么

探索开源工作流引擎 Azkaban 在 MRS 中的实践

  • 2022 年 5 月 18 日
  • 本文字数:3652 字

    阅读完需:约 12 分钟

本文分享自华为云社区《开源工作流引擎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”。

1、环境准备。

  • 在华为云购买 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”,并初始化。

2、上传安装包并解压

  • 上传“azkaban-solo-server.zip”至“/opt/azkaban”目录

  • 执行以下命令解压并删除安装包

unzip azkaban-solo-server.ziprm -f unzip azkaban-solo-server.zip
复制代码

3、修改配置文件“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
复制代码

4、启动 azkaban-solo-server

source /opt/client/bigdata_envcd /opt/azkaban/azkaban-solo-serversh bin/start-solo.sh
复制代码

5、访问 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。

1、环境准备

  • 配置 Azkaban 用户,添加 supergroup 用户组授予访问 HDFS 权限

  • 在 HDFS 的配置文件“core-stie.xml”中增加 Azkaban 代理用户


a. 登录 Manager 页面,选择“集群 > 服务 > HDFS > 配置 > 全部配置 > HDFS(服务) > 自定义”

b. 在参数文件“core-site.xml”中添加如下配置项:

c. 配置完成后,单击左上角“保存”d. 选择“概览 > 更多 > 重启服务”输入密码后重启 HDFS 服务

2、上传安装包并解压

  • 上传“az-hdfs-viewer.zip”至“/opt/azkaban/azkaban-solo-server/plugins/viewer”目录

  • 执行以下命令解压并删除安装包

unzip az-hdfs-viewer.ziprm -f az-hdfs-viewer.zip
复制代码
  • 重命名解压后的文件名为"hdfs"

    mv az-hdfs-viewer hdfs

3、修改并保存配置文件

  • 修改"azkaban-solo-server/plugins/viewer/hdfs/conf/plugin.properties"文件中的代理用户为步骤 1 中配置的 Azkaban 代理用户。修改"execute-as-user"的存放目录为 Azkaban 安装目录,如"opt/azkaban/azkaban-solo-server"。


viewer.name=HDFS viewer.path=hdfs viewer.order=1 viewer.hidden=false viewer.external.classpaths=extlib/* viewer.servlet.class=azkaban.viewer.hdfs.HdfsBrowserServlet hadoop.security.manager.class=azkaban.security.HadoopSecurityManager_H_2_0 azkaban.should.proxy=false proxy.user=azkaban   // mrs集群中配置的azkaban代理用户名 allow.group.proxy=true file.max.lines=1000 #Specifying the error message we want user to get when they don't have permissionsviewer.access_denied_message=The folder you are trying to access is protected. execute.as.user=false // execute-as-user存放目录 azkaban.native.lib=/opt/azkaban/azkaban-solo-server
复制代码

若不存在该文件需手动创建并配置以上内容

4、拷贝 HDFS 插件所需包至"/opt/azkaban/azkaban-solo-server/extlib"目录

cp /opt/client/HDFS/hadoop/share/hadoop/hdfs/*.jar /opt/azkaban/azkaban-solo-server/extlibcp /opt/client/HDFS/hadoop/share/hadoop/client/hadoop-client-api-3.1.1-mrs-2.0.jar /opt/azkaban/azkaban-solo-server/extlibcp /opt/client/HDFS/hadoop/share/hadoop/common/*.jar /opt/azkaban/azkaban-solo-server/extlib
复制代码

不同 MRS 版本所需 Hadoop 相关版本不同,通过 find /opt/client 查询目

5、检查目录结构

目录结构应当为:

- 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
复制代码

6、重启 Azkaban-solo-server 服务

cd /opt/azkaban/azkaban-solo-serversh bin/shutdown-solo.shsh bin/start-solo.sh
复制代码

7、访问 HDFS Browser

  • 在浏览器输入“http://ECS弹性 IP:8081”网址,进入 Azkaban WebUI 登录界面,输入用户信息登录 Azkaban 服务

  • 单击"HDFS"

plugins-jobtypes hadoop-job 部署运行

安装 azkaban-solo-server 完成后,再部署验证 hadoop-job

1、环境准备

2、上传插件配置文件

  • 解压"azkaban-plugins-3.0.0.zip" 获取"azkaban-plugins-3.0.0\plugins\jobtype\jobtypes"下"hadoopJava"文件夹

  • 将“hadoopJava”文件夹上传至“/plugin”目录。目录不存在则需新建

3、修改配置文件"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/*
复制代码

4、示例程序验证

  • 准备测试数据"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 方式。

  1. Command 方式:需要指定 spark_home 为/opt/client/Spark/spark/

  2. 在 MRS 集群客户端节点可以通过 echo $SPARK_HOME 获取实际 Spark 安装地址。

    设置 azkanban 所在 ECS 全局环境变量,添加 source {MRS 客户端}后需要重启 azkaban 才可生效

  3. jobtype 方式:参考 plugins-jobtypes hadoop-job 部署运行。


点击关注,第一时间了解华为云新鲜技术~​

发布于: 刚刚阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
探索开源工作流引擎Azkaban在MRS中的实践_开源_华为云开发者社区_InfoQ写作社区