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

网友投稿 255 2022-11-19

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

摘要:本文主要介绍如何在华为云上从0-1搭建azkaban并指导用户如何提交作业至MRS。

本文分享自华为云社区《​​开源工作流引擎Azkaban在MRS中的实践​​》,作者:啊喔YeYe。

环境输入

实践版本:Apache azkaban 4.0.0 (以单机版举例,集群版本配置过程类似),MRS 3.1.0 普通集群。

​​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

在浏览器输入“​​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

在浏览器输入“​​WebUI登录界面,输入用户信息登录Azkaban服务单击"HDFS"

plugins-jobtypes hadoop-job 部署运行

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

1、环境准备

​​获取"azkaban-plugins-3.0.0.zip"压缩包​​编译获取azkaban提供的hadoopjava-wordcount实例程序包“az-hadoop-jobtype-plugin.jar”

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/clientc. 执行以下命令配置环境变量 source bigdata_envd. 执行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

在浏览器输入“​​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 部署运行。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微软尝试Windows10为Android应用提供运行支持
下一篇:关于java中线程安全问题详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~