hadoop学习笔记7-Azkaban

一.Azkaban基础

国内翻译成了阿兹卡班

1.为什么使用azkaban

hadoop大数据处理一般具有延迟性,适合定时调度。而azkaban,就是一个定时调度工具

那为什么不用crontab?

简单的定时你是可以用crontab,那复杂的呢?比如我任务a依赖于任务b,任务b又依赖于任务c,你怎么执行?

所以,azkaban就是一个适用于执行工作流的定时调度系统

 2.azkaban执行流程

3.azkaban可以兼容所有版本的hadoop

(反正都是命令执行)type一共就两种,command和javaprocess

二.安装azkaban

前提是,你已经安装了mysql

1.配置webserver

1.1.运行建表sql

 

在mysql中新建azkaban数据库,运行建表sql

source create-all-sql-2.5.0.sql;


1.2.生成密钥

用于在浏览器上通过https访问


1.3.配置azkaban.properties,修改mysql连接信息,时区,密钥信息


1.4.在xml中配置用户

2.关于executor的配置


与配置webserver相似,配置azkaban.properties,修改mysql连接信息,时区


3.分别启动executor和webserver

踩坑记录  之前版本与视频不一致,我的高版本中没有ssl属性,就算我自己添加进去,启动时候也不读,所以不能ssl访问

4.web访问路径


https://ip:8443/

这个8443端口你是可以在webserver启动日志上最后一行看到的

三.azkaban发送邮件

1.25端口的坑

这是一个坑,我找到了方法但是不想去解决了

2021/02/25 15:02:44.380 +0800 ERROR [Emailer] [Azkaban] Email message send failed
javax.mail.MessagingException: Could not connect to SMTP host: imap.qiye.163.com, port: 25;

日志打印了这个错,我在服务器上telnet确实不通,但是在我电脑本地确实是通的,所以不是邮件服务器的问题。

原因: 

我租的阿里云服务器,然后阿里云服务器是禁用25端口的,你想要使用需要提交申请,七个工作日有结果。

我看网上好多说基本上申请了也不会给开通,然后我也不是必须用到他,可能以后都用不到这个,我就没有再去研究。

说一下配置需要注意的地方

扩展:

想让telent命令生效也是需要yum安装依赖包的

457  telnet smtp.qiye.163.com 25 #开始告诉我telnet命令不生效,我还以为linux不支持telent命令
  458   yum install telnet.*
  459  telnet smtp.qiye.163.com 25#

2.在webserver的配置文件中配置邮件发送方

mail.sender=123@qq.com
mail.host=smtp.qq.com
mail.user=123@qq.com
mail.password=Fmb4chLkfvnB25wP#注意这个不是邮箱密码,而是授权码,至于怎么获得授权码,qq和网易不同,自己百度去

3.在页面上配置邮件的接收方

就是点击执行之后出来那个弹框

四.azkaban与多种类型交互

你想在azkaban上运行,那就必须要有.job文件

.job文件的一个属性是type。type又分为两种,command和javaprocess。以下分别举例说明

1.最简单的command型

1.1我创建了一个文件叫1.job  内容如下

type=command
command=echo "xy 1"

1.2将1.job打zip压缩包

 打zip包方式需要注意,直接在当前路径下选中压缩,不要外边再套一层文件夹

1.3通过webserver页面新建project

1.4在project中上传zip压缩包

在上传zip包时,azkaban会校验语法是否有错,如果语法有错,那上传失败

1.5执行

可以选择定时执行也可以选择立即执行

1.6日志查看

 

 2.有依赖关系的工作流

2.1.目标

2.2.编写job文件,增加依赖关系

增加依赖关系是重点

在job文件中增加属性 dependencies=job文件名称

如上图,2和3需要在1执行完在执行,那么2和3就依赖于1.然后4要在2和3执行完再执行,那么4就依赖于2和3.但是最开始的1,谁都不依赖

以下是我的4个job文件

1.job

type=command
command=echo 'xy first'

2.job

type=command
command=echo "xy second"
dependencies=1

3.job

type=command
command=echo "xy third"
dependencies=1

4.job

依赖多个时候用逗号,隔开

type=command
command=echo "xy four"
dependencies=2,3

2.3打zip压缩包

2.4执行结果

这就是前边想实现的效果

2.5查看日志

3. azkaban执行java代码

3.1.需要一个有main方法的类,并且package打成jar包

这是一个现成的特别简单的java程序

https://download.csdn.net/download/qq_35653822/15482966

3.2编写.job文件

.job文件不管什么时候都是必须存在的

type=javaprocess
java.class=com.atguigu.AzkabanTest#类全路径名
classpath=azkabanJob-1.0-SNAPSHOT.jar#可以写绝对路径如/root/java/azkabanJob-1.0-SNAPSHOT.jar
#也可以这样写相对路径,我这是把.job文件和jar包放在同一个路径下了

3.3打zip压缩包

3.4执行

正常执行就行 我这没截图

4.azkaban执行shell脚本

4.1编写shell脚本

由于文化水平不高,我就编写了一个贼简单的

shell.sh

date >> /root/xy/xy.txt

4.2编写.job文件

type=command
command=sh shell.sh#注意需要通过bash或者sh执行这个脚本

4.3打zip压缩包

5.azkaban操作hdfs系统

这个首先要保证hdfs是启动着的

5.1.编写.job文件

type=command
command=hdfs dfs -mkdir azkaban#就直接写hdfs命令就行

5.2打包运行

5.3去hdfs控制台或者通过hdfs命令查看命令是否执行

我这是建立文件夹,我就上控制台上翻一翻就行了

6.azkaban操作mapreduce

这个需要保证hadoop是启动着的

6.1编写.job文件

type=command
command=hadoop jar /root/soft/hadoop/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 2 3

踩坑记录,不要写环境变量${}这种,他不识别

 失败日志

 6.2上传打包运行

感谢这个死慢的mapreduce,我终于能看到运行中是什么样子了

7.azkaban 操作hive

首先要保证你azkaban的executor所在节点,是可以操作hive命令的

比如我当时的本来hive和azkaban不在一台机器上,然后就把hive文件夹整个scp过来就好了,直接就能运行命令行

7.1hive.sql

我想通过hive -f xxx.sql的方式进行测试,所以写了个hive.sql

drop table if exists test.employeeT;
CREATE  TABLE `test.employeeT`(
      `dept_no` int,
      `addr` string,
      `tel` string)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
load data local inpath '/root/soft/azkaban/test.txt' into table test.employeeT;

7.2.job文件

type=command
command=/root/soft/hive/apache-hive-3.1.2-bin/bin/hive -f hive.sql

7.3打包运行

题外:

这个时候我去yarn控制台上,是看不到运行记录的,后来查到,简单的查询不会涉及的mapreduce 比如我写了一个建表语句  就不会在yarn控制台上看到

7.4运行计算类型的hive sql

将hive.job修改如下

type=command
command=/root/soft/hive/apache-hive-3.1.2-bin/bin/hive -e "select count(*) from test.employeeT"

7.5打包上传运行

查看yarn控制台,这次能看到任务了

五.azkaban参数上传

1.azkaban可以直接在web界面修改文件

2.通过${}传参

我使用的时${paramtest},其中paramtest就是需要上传的参数

3.上传参数

执行时通过key:value形式上传参数

4.输出结果

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值