IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Azkaban -> 正文阅读

[大数据]Azkaban

Azkaban

1 Azkaban定义

一个完整的大数据项目,它是由许多不同的任务单元组成;

比如:shell脚本,mapreduce程序,hive脚本,spark程序等

哪些单元先做,哪些单元后做,需要由既定的流程,这个流程的指定就靠Azkaban这样的工作流调度工具来完成。

2 常见的工作流工具

crontab\oozie\azkaban\airflow等

3 Azkaban官网

在这里插入图片描述

  • MySQL:Azkaban使用MySQL来存储项目和执行
  • Azkaban Web服务器:Azkaban使用Jetty作为Web服务器,用作控制器以及提供Web页面
  • Azkaban执行服务器:Azkaban执行服务器执行提交工作流

特点:

  1. 兼容任何版本的Hadoop
  2. 非常容易使用的web ui
  3. 模块化和插件化的功能
  4. 成功和失败都可以做警报
  5. SLA警告之后可以自动杀死任务
  6. 失败的作业可以自动重试

4 安装部署Azkaban

##1. 解压
[root@hadoop scripts]# mkdir /opt/apps/azkaban
[root@hadoop software]# tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C /opt/apps/azkaban/
[root@hadoop opt]# cd /opt/apps/azkaban/
[root@hadoop azkaban]# mv azkaban-solo-server-0.1.0-SNAPSHOT/ soloserver
[root@hadoop azkaban]# cd soloserver/

##2. 配置
[root@hadoop soloserver]# vi conf/azkaban-users.xml
<user password="admin" roles="metrics,admin" username="admin"/>

##3. 启动azkaban的soloserver
##3.1 你如果配置环境变量直接启动azkaban不好使
[root@hadoop soloserver]# bin/start-solo.sh ## 必须在这个目录下启动
##3.2 通过webui
192.168.130.111:8081

5 Azakban实例

5.1 有向无环图进程

在这里插入图片描述

5.2 执行节点脚本

5.2.1 drop_tmp_table.sh

#!/bin/bash
## filename:drop_tmp_table.sh
## author : zxy
## date : 2021-07-28
## desc : 删除临时表
## 建表语句
DROP_TABLE_SQL="drop table if exists dwb_news.user_base_info_tmp;"
## 执行建表语句
beeline -i ~/.hiverc -n root -u jdbc:hive2://hadoop:10000 -e "${DROP_TABLE_SQL}"

5.2.2 histdata_to_temp.sh

#!/bin/bash
## filename:histdata_to_temp.sh
## author : zxy
## date : 2021-07-28
## desc : 将之前的数据先导入到创建的临时表
## 设置时间
exec_date=$1
## 建表语句
MV_TABLE_SQL="create table dwb_news.user_base_info_tmp as with t1 as ( select distinct_id as uid,model,manufacturer,os,ctime,row_number() over(partition by distinct_id order by ctime desc) as rank from ods_news.event_ro where logday = '${exec_date}'),t2 as (select * from t1 where rank = 1),t3 as (select * from dwb_news.user_base_info union all select * from t2),t4 as (select uid,model,manufacturer,os,ctime,row_number() over(partition by uid order by ctime desc) as rank from t3) select * from t4 where rank = 1;"
beeline -i ~/.hiverc -n root -u jdbc:hive2://hadoop:10000 -e "${MV_TABLE_SQL}"

5.2.3 drop_histdata_table.sh

#!/bin/bash
## filename:drop_histdata_table.sh
## author : zxy
## date : 2021-07-28
## desc : 删除原始表
## 建表语句
DROP_TABLE_SQL="drop table if exists dwb_news.user_base_info;"
beeline -i ~/.hiverc -n root -u jdbc:hive2://hadoop:10000 -e "${DROP_TABLE_SQL}"

5.2.4 rename_temp_table.sh

#!/bin/bash
## filename:rename_temp_table.sh
## author : zxy
## date : 2021-07-28
## desc : 更新临时表的名称
## 建表语句
RENAME_TABLE_SQL="alter table dwb_news.user_base_info_tmp rename to dwb_news.user_base_info;"
beeline -i ~/.hiverc -n root -u jdbc:hive2://hadoop:10000 -e "${RENAME_TABLE_SQL}"

5.3 Azkaban调程序

  • dwb_news.flow
#filename:dwb_news.flow
#desc:建立dwb层相关的数据

config:
  param.script_path_prefix: /opt/apps/scripts/azkaban
  param.exec_date: ${exec_date}

nodes:
  # 开始节点声明
  - name: START
    type: noop
  
  # 删除临时表
  - name: DROP_TMP_TABLE
    type: command
    dependsOn:
      - START
    config:
      command: sh ${param.script_path_prefix}/drop_tmp_table.sh
 
  # 将之前的数据先导入到创建的临时表
  - name: HISTDATA_TO_TEMP
    type: command
    dependsOn:
      - DROP_TMP_TABLE
    config:
      command: sh ${param.script_path_prefix}/histdata_to_temp.sh ${param.exec_date}
 
  # 删除原始表
  - name: DROP_HISTDATA_TABLE
    type: command
    dependsOn:
      - HISTDATA_TO_TEMP
    config:
      command: sh ${param.script_path_prefix}/drop_histdata_table.sh

  # 更新临时表的名称
  - name: RENAME_TEMP_TABLE
    type: command
    dependsOn:
      - DROP_HISTDATA_TABLE
    config:
      command: sh ${param.script_path_prefix}/rename_temp_table.sh
 
  # 结束节点的声明
  - name: END
    type: noop
    dependsOn:
      - RENAME_TEMP_TABLE

tips:

这里需要注意的是,在删除临时表的时候,临时表应该已经存在

  • news.project
# filename:news.project
azkaban-flow-version: 2.0

tips:

dwb_news.flow和news.project打包成一个文件夹(new.zip)

5.4 Azkaban WebUI

5.4.1 登录

在这里插入图片描述

在这里插入图片描述

5.4.2 新建项目

在这里插入图片描述

5.4.3 上传文件(zip)

在这里插入图片描述

在上传文件的时候一直报如下的错误

在这里插入图片描述

经查看dwb_news.flow,发现如下代码中的nodes没有顶格写,修改后成功

## 修改前
  nodes:
  # 开始节点声明
  - name: START
    type: noop
## 修改后
nodes:
  # 开始节点声明
  - name: START
    type: noop

5.4.4 上传成功

在这里插入图片描述

5.4.5 执行任务调度

在这里插入图片描述

5.4.6 添加参数

在这里插入图片描述

5.4.7 运行

在这里插入图片描述

5.4.8 定时启动(每天21:00执行一次)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:43:03  更:2021-07-29 11:43:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 19:10:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码