当前位置: 首页 > news >正文

大数据学习7:Azkaban调度器

1. Azkaban介绍

Azkaban是由linkedin(领英)公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

2. 安装部署

上传安装包/opt/tools,并解压

tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /opt/server

 修改/opt/server/azkaban-solo-server-0.1.0-SNAPSHOT/conf目录中的azkaban.properties文件,修改时区为Asia/Shanghai

vim azkaban.properties
default.timezone.id=Asia/Shanghai

修改/opt/server/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/jobtypes目录中的commonprivate.properties文件,关闭内存检查,azkaban默认需要3G的内存,剩余内存不足则会报异常。  

添加:

memCheck.enabled=false

启动验证,启动/关闭必须进到azkaban-solo-server-0.1.0-SNAPSHOT/目录下  

bin/start-solo.sh

 登录web页面,通过浏览器访问控制台,http://192.168.59.100:8081/, 默认用户名密码azkaban

3. 基本使用

3.1 执行单任务

 创建 job 描述文件,命名为first.job,加入以下内容:

#first.job
type=command
command=echo 'hello world'

将 job 资源文件打包成 zip 文件,Azkaban 上传的工作流文件只支持 zip 文件。zip 应包含 .job 运行作业所需的文件,作业名称在项目中必须是唯一的。

通过 azkaban 的 web 管理平台创建 project 并上传 job 的 zip 包

 

 

 

点击继续

 

执行成功

 点击右侧的Details按钮,可以查看运行日志

3.2 多任务执行

创建有依赖关系的多个任务,首先创建start.job

#start.job
type=command
command=touch /opt/server/web.log

创建a.job,依赖start.job

#a.job
type=command
dependencies=start
command=echo "hello a job"

创建b.job,依赖 start.job

#b.job
type=command
dependencies=start
command=echo "hello b job"

创建end.job 依赖 a.job 和 b.job

#end.job
type=command
dependencies=a,b
command=echo "end job"

将所有 job 资源文件打到一个 zip 包中,在 azkaban 的 web 管理界面创建工程并上传 zip 包,然后按照之前步骤执行

4. 调度Hive 脚本任务

在/opt/data文件夹下创建web_access.sql

vim web_access.sql
use default;
DROP TABLE IF EXISTS access_log_content;
CREATE TABLE access_log_content (content STRING
);
DROP TABLE IF EXISTS ip_content;
CREATE TABLE ip_content (content STRING
);

创建Job 描述文件:hive.job  

#hive job
type=command
command=/opt/server/apache-hive-3.1.2-bin/bin/hive -f /opt/data/web_access.sql

然后按照之前步骤进行 

5. 定时任务调度

 

6. 定时调度Sqoop作业

配置免密执行作业  

在sqoop的/opt/server/sqoop-1.4.7.bin__hadoop-2.6.0/conf目录下修改sqoop-site.xml文件

vim sqoop-site.xml
<property><name>sqoop.metastore.client.record.password</name><value>true</value>
</property>

进入/opt/server/hadoop-3.1.0/bin 文件夹

 将密码输出到mysqlpwd.pwd文件中,并上传至hdfs

cd /opt/server/hadoop-3.1.0/binecho -n "root" > mysqlpwd.pwd
./hadoop dfs -mkdir -p /mysql/pwd
./hadoop dfs -put ./mysqlpwd.pwd /mysql/pwd
./hadoop dfs -chmod 400 /mysql/pwd/mysqlpwd.pwd

创建Sqoop作业 

 创建Sqoop作业,使用–password-file代替–password就是读取之前上传到hdfs上的密码文件来连接mysql

/opt/server/sqoop-1.4.7.bin__hadoop-2.6.0/bin
./sqoop job --create job_test4 \
-- import \
--connect jdbc:mysql://192.168.59.100:3306/mydb \
--username root \
--password-file /mysql/pwd/mysqlpwd.pwd \
--table emp --m 1 \
--target-dir /emp \
--incremental append \
--check-column empno \
--last-value  0

 

上面代码使用的是增量导入,使用sqoop job这种方法,在进行增量导入后就会记忆你的last-value的值,这样你下次运行时就不需要手动更新last-value的值。

创建作业时,如果出现java.lang.NoClassDefFoundError: org/json/JSONObject,是因为sqoop缺少java-json.jar包,将jar包放入sqoop的lib目录下即可

记住先删除之前的任务再重新运行

./sqoop job --delete job_test4

创建sqoop.job

# sqoop.job
type=command
command=/opt/server/sqoop-1.4.7.bin__hadoop-2.6.0/bin/sqoop job --exec job_test4 

http://www.dtcms.com/a/272429.html

相关文章:

  • 记一次Android Studio编译报错:Execution failed for task ‘:app:compileDebugAidl‘
  • Redis数据类型之hash
  • Android 网络开发核心知识点
  • ICML 2025|快手提出了基于残差的超低码率图像压缩方法ResULIC
  • 【Bluedroid】蓝牙协议栈控制器能力解析与核心功能配置机制(decode_controller_support)
  • git中的fork指令解释
  • Linux - firewall 防火墙
  • 强缓存和协商缓存详解
  • 机器学习核心算法:PCA与K-Means解析
  • Java从入门到精通!第三天(数组)
  • Shell 中的重定向
  • C++实习面试题
  • 如何看待java开发和AI的关系?
  • GO启动一个视频下载接口 前端可以边下边放
  • 【PyTorch】PyTorch中的数据预处理操作
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DoubleVerticalSlider(双垂直滑块)
  • 图解LeetCode:79递归实现单词搜索
  • Django+DRF 实战:自定义异常处理流程
  • 20.4 量子安全加密算法
  • 案例分享--福建洋柄水库大桥智慧桥梁安全监测(二)之数字孪生和系统平台
  • 机器学习13——支持向量机下
  • TCP传输控制层协议深入理解
  • 当CCLinkIE撞上Modbus TCP:照明控制系统的“方言战争”终结术
  • VIP可读
  • 线性回归与正则化
  • Django专家成长路线知识点——AI教你学Django
  • 【PTA数据结构 | C语言版】顺序栈的3个操作
  • 【深度学习系列--经典论文解读】Gradient-Based Learning Applied to Document Recognition
  • LINUX710 MYSQL
  • linux-用户与用户组管理