• Azkaban-2.5.0-部署与常见案例


    该文章是基于 Hadoop2.7.6_01_部署Hive-1.2.1_01_安装部署 进行的

    1. 前言

           在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:

    2. 工作流调度器azkaban概述

    2.1. 为什么需要工作流调度系统

    •  一个完整的数据分析系统通常都是由大量任务单元组成:

        shell脚本程序,java程序,mapreduce程序、hive脚本等

    • 各任务单元之间存在时间先后及前后依赖关系
    • 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

    例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:

    1、  通过Hadoop先将原始数据同步到HDFS上;

    2、  借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;

    3、  需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;

    4、  将明细数据进行复杂的统计分析,得到结果报表信息;

    5、  需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

    2.2. 工作流调度实现方式

    简单的任务调度:直接使用linux的crontab来定义;

    复杂的任务调度:开发调度平台

            或使用现成的开源调度系统,比如ooize、azkaban等

    2.3. 常见工作流调度系统

    市面上目前有许多工作流调度器

    在hadoop领域,常见的工作流调度器有Oozie, Azkaban,Cascading,Hamake等

    2.4. Azkaban与Oozie对比

           对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。

    详情如下:

    • 功能

           两者均可以调度mapreduce,pig,java,脚本工作流任务

           两者均可以定时执行工作流任务

    • 工作流定义

           Azkaban使用Properties文件定义工作流

           Oozie使用XML文件定义工作流

    • 工作流传参

           Azkaban支持直接传参,例如${input}

           Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}

    • 定时执行

           Azkaban的定时执行任务是基于时间的

           Oozie的定时执行任务基于时间和输入数据

    • 资源管理

           Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作

           Oozie暂无严格的权限控制

    • 工作流执行

           Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)

           Oozie作为工作流服务器运行,支持多用户和多工作流

    • 工作流管理

           Azkaban支持浏览器以及ajax方式操作工作流

           Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流

    3. Azkaban介绍

           Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

    它有如下功能特点:

      Web用户界面

      方便上传工作流

      方便设置任务之间的关系

      调度工作流

      认证/授权(权限的工作)

      能够杀死并重新启动工作流

      模块化和可插拔的插件机制

      项目工作区

      工作流和任务的日志记录和审计

    3.1. Azkaban使用MySQL存储state的信息

    AzkabanWebServer和AzkabanExecutorServer 都是能够访问MySQL的

    web server使用DB的原因如下:

    Project Management     项目,项目的权限以及上传的文件

    Executing Flow State    跟踪执行流,执行程序运行它们

    Previous Flow/Jobs       搜索之前的作业和流程执行,以及访问他们的日志文件

    Scheduler                    保持预定的工作状态

    SLA                            保持所有sla规则

    executor server使用DB的原因如下:

    Access the project         从数据库中检索项目文件

    Executing Flows/Jobs   检索和更新 流和正在执行的数据

    Logs                            将输出日志存储到作业中并流入到db中

    Interflow dependency    如果流在不同的执行器上运行,则它将从DB中获取状态

    4. Azkaban安装部署

           将安装文件上传到集群,最好上传到安装 hive、sqoop的机器上,方便命令的执行

    准备工作

    Azkaban Web服务器

    azkaban-web-server-2.5.0.tar.gz

    Azkaban执行服务器 

    azkaban-executor-server-2.5.0.tar.gz

    MySQL

    azkaban-2.5.0只支持 mysql,需安装mysql服务器,本文档中默认已安装好mysql服务器,下文中会建立 azkaban用户,密码 azkaban.

     1 # 相关信息
     2 [yun@mini01 azkaban]$ pwd
     3 /app/software/azkaban
     4 [yun@mini01 azkaban]$ ll
     5 total 22612
     6 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
     7 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
     8 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz
     9 # 解压缩包
    10 [yun@mini01 azkaban]$ tar xf azkaban-executor-server-2.5.0.tar.gz 
    11 [yun@mini01 azkaban]$ tar xf azkaban-web-server-2.5.0.tar.gz
    12 [yun@mini01 azkaban]$ tar xf azkaban-sql-script-2.5.0.tar.gz
    13 [yun@mini01 azkaban]$ ll
    14 total 22616
    15 drwxrwxr-x 2 yun yun     4096 Jul 29 17:02 azkaban-2.5.0
    16 drwxrwxr-x 7 yun yun       92 Jul 29 17:02 azkaban-executor-2.5.0
    17 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
    18 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
    19 drwxrwxr-x 8 yun yun      103 Jul 29 17:02 azkaban-web-2.5.0
    20 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz

    4.1. MySQL部署

    建库并授权

     1 # 在mini03上操作
     2 # 建库
     3 MariaDB [(none)]> CREATE DATABASE azkaban DEFAULT CHARACTER SET utf8 ;
     4 Query OK, 1 row affected (0.00 sec)
     5 
     6 MariaDB [(none)]> show create database azkaban;
     7 +----------+------------------------------------------------------------------+
     8 | Database | Create Database                                                  |
     9 +----------+------------------------------------------------------------------+
    10 | azkaban  | CREATE DATABASE `azkaban` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    11 +----------+------------------------------------------------------------------+
    12 1 row in set (0.00 sec)
    13 
    14 MariaDB [(none)]> show databases;
    15 +--------------------+
    16 | Database           |
    17 +--------------------+
    18 | information_schema |
    19 | azkaban            |
    20 | hive               |
    21 | mysql              |
    22 | performance_schema |
    23 | test               |
    24 | zhang              |
    25 +--------------------+
    26 7 rows in set (0.00 sec)
    27 
    28 # 授权 
    29 MariaDB [(none)]> grant all on azkaban.* to azkaban@'%' identified by 'azkaban'; 
    30 Query OK, 0 rows affected (0.00 sec)
    31 
    32 MariaDB [(none)]> 
    33 MariaDB [(none)]> flush privileges;
    34 Query OK, 0 rows affected (0.00 sec)
    35 
    36 MariaDB [(none)]> select user,host from mysql.user;
    37 +---------+-----------+
    38 | user    | host      |
    39 +---------+-----------+
    40 | azkaban | %         |
    41 | hive    | %         |
    42 | root    | %         |
    43 | root    | 127.0.0.1 |
    44 | root    | ::1       |
    45 |         | localhost |
    46 | root    | localhost |
    47 |         | mini03    |
    48 | hive    | mini03    |
    49 | root    | mini03    |
    50 +---------+-----------+
    51 10 rows in set (0.00 sec)

    导入数据

     1 # 在有azkaban的SQL语句机器上操作
     2 [yun@mini01 azkaban-2.5.0]$ pwd
     3 /app/software/azkaban/azkaban-2.5.0
     4 [yun@mini01 azkaban-2.5.0]$ ll
     5 total 88
     6 -rwxr-xr-x 1 yun yun  129 Apr 22  2014 create.active_executing_flows.sql
     7 -rwxr-xr-x 1 yun yun  216 Apr 22  2014 create.active_sla.sql
     8 -rwxr-xr-x 1 yun yun 4694 Apr 22  2014 create-all-sql-2.5.0.sql  # 包含所有库信息
     9 -rwxr-xr-x 1 yun yun  610 Apr 22  2014 create.execution_flows.sql
    10 -rwxr-xr-x 1 yun yun  519 Apr 22  2014 create.execution_jobs.sql
    11 -rwxr-xr-x 1 yun yun  358 Apr 22  2014 create.execution_logs.sql
    12 -rwxr-xr-x 1 yun yun  224 Apr 22  2014 create.project_events.sql
    13 -rwxr-xr-x 1 yun yun  227 Apr 22  2014 create.project_files.sql
    14 -rwxr-xr-x 1 yun yun  280 Apr 22  2014 create.project_flows.sql
    15 -rwxr-xr-x 1 yun yun  285 Apr 22  2014 create.project_permissions.sql
    16 -rwxr-xr-x 1 yun yun  294 Apr 22  2014 create.project_properties.sql
    17 -rwxr-xr-x 1 yun yun  380 Apr 22  2014 create.projects.sql
    18 -rwxr-xr-x 1 yun yun  325 Apr 22  2014 create.project_versions.sql
    19 -rwxr-xr-x 1 yun yun  155 Apr 22  2014 create.properties.sql
    20 -rwxr-xr-x 1 yun yun  498 Apr 22  2014 create.schedules.sql
    21 -rwxr-xr-x 1 yun yun  189 Apr 22  2014 create.triggers.sql
    22 -rwxr-xr-x 1 yun yun   22 Apr 22  2014 database.properties
    23 -rwxr-xr-x 1 yun yun  671 Apr 22  2014 update-all-sql-2.1.sql
    24 -rwxr-xr-x 1 yun yun  156 Apr 22  2014 update-all-sql-2.2.sql
    25 -rwxr-xr-x 1 yun yun  395 Apr 22  2014 update.execution_logs.2.1.sql
    26 -rwxr-xr-x 1 yun yun   59 Apr 22  2014 update.project_properties.2.1.sql
    27 [yun@mini01 azkaban-2.5.0]$ ll /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql  # 要导入的SQL文件 
    28 -rwxr-xr-x 1 yun yun 4694 Apr 22  2014 /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
    29 [yun@mini01 azkaban-2.5.0]$ 
    30 [yun@mini01 azkaban-2.5.0]$ mysql -hmini03 -uazkaban -pazkaban
    31 Welcome to the MariaDB monitor.  Commands end with ; or g.
    32 Your MariaDB connection id is 4
    33 Server version: 5.5.56-MariaDB MariaDB Server
    34 
    35 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
    36 
    37 Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    38 
    39 MariaDB [(none)]> use azkaban;  # 使用库
    40 Database changed
    41 MariaDB [azkaban]> source /app/software/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
    42 ………………
    43 MariaDB [azkaban]> show tables;  
    44 +------------------------+
    45 | Tables_in_azkaban      |
    46 +------------------------+
    47 | active_executing_flows |
    48 | active_sla             |
    49 | execution_flows        |
    50 | execution_jobs         |
    51 | execution_logs         |
    52 | project_events         |
    53 | project_files          |
    54 | project_flows          |
    55 | project_permissions    |
    56 | project_properties     |
    57 | project_versions       |
    58 | projects               |
    59 | properties             |
    60 | schedules              |
    61 | triggers               |
    62 +------------------------+
    63 15 rows in set (0.00 sec)

    4.2. azkaban执行服器和web服务器部署

     1 [yun@mini01 azkaban]$ pwd
     2 /app/software/azkaban
     3 [yun@mini01 azkaban]$ ll
     4 total 22616
     5 drwxrwxr-x 2 yun yun     4096 Jul 29 17:02 azkaban-2.5.0
     6 drwxrwxr-x 7 yun yun       92 Jul 29 17:02 azkaban-executor-2.5.0
     7 -rw-r--r-- 1 yun yun 11157302 May 14 00:59 azkaban-executor-server-2.5.0.tar.gz
     8 -rw-r--r-- 1 yun yun     1928 May 14 00:57 azkaban-sql-script-2.5.0.tar.gz
     9 drwxrwxr-x 8 yun yun      103 Jul 29 17:02 azkaban-web-2.5.0
    10 -rw-r--r-- 1 yun yun 11989669 May 14 00:59 azkaban-web-server-2.5.0.tar.gz
    11 # 先创建/app/azkaban/ 目录
    12 [yun@mini01 azkaban]$ cp -a azkaban-executor-2.5.0 /app/azkaban/executor-2.5.0
    13 [yun@mini01 azkaban]$ cp -a azkaban-web-2.5.0 /app/azkaban/web-server-2.5.0
    14 [yun@mini01 azkaban]$ cd /app/azkaban/
    15 [yun@mini01 azkaban]$ ll
    16 total 0
    17 drwxrwxr-x 7 yun yun  92 Jul 29 17:02 executor-2.5.0
    18 drwxrwxr-x 8 yun yun 103 Jul 29 17:02 web-server-2.5.0

    4.3. 为azkaban创建SSL配置

     1 [yun@mini01 azkaban]$ pwd
     2 /app/azkaban
     3 [yun@mini01 azkaban]$ ll
     4 total 4
     5 drwxrwxr-x 7 yun yun   92 Jul 29 17:02 executor-2.5.0
     6 drwxrwxr-x 8 yun yun  103 Jul 29 17:02 web-server-2.5.0 
     7 [yun@mini01 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA  
     8 Enter keystore password:     # 输入123456
     9 Re-enter new password:       # 输入123456
    10 What is your first and last name?
    11   [Unknown]:  
    12 What is the name of your organizational unit?
    13   [Unknown]:  
    14 What is the name of your organization?
    15   [Unknown]:  
    16 What is the name of your City or Locality?
    17   [Unknown]:  
    18 What is the name of your State or Province?
    19   [Unknown]:  
    20 What is the two-letter country code for this unit?
    21   [Unknown]:  CN
    22 Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
    23   [no]:  yes
    24 
    25 Enter key password for <jetty>
    26     (RETURN if same as keystore password):  
    27 # 查看生成的keystore 
    28 [yun@mini01 azkaban]$ ll
    29 total 4
    30 drwxrwxr-x 7 yun yun   92 Jul 29 17:02 executor-2.5.0
    31 -rw-rw-r-- 1 yun yun 2233 Jul 29 17:46 keystore
    32 drwxrwxr-x 8 yun yun  103 Jul 29 17:02 web-server-2.5.0
    33 [yun@mini01 azkaban]$ cp -a keystore  web-server-2.5.0/  # 将keystore拷贝到azkaban的web中
    34 [yun@mini01 azkaban]$ ll web-server-2.5.0/
    35 total 12
    36 -rw-r--r-- 1 yun yun  105 Apr 22  2014 azkaban.version
    37 drwxr-xr-x 2 yun yun  112 Apr 22  2014 bin
    38 drwxr-xr-x 2 yun yun   57 Jul 29 17:02 conf
    39 drwxr-xr-x 2 yun yun    6 Apr 22  2014 extlib
    40 -rw-rw-r-- 1 yun yun 2233 Jul 29 17:46 keystore
    41 drwxr-xr-x 2 yun yun 4096 Jul 29 17:02 lib
    42 drwxr-xr-x 2 yun yun    6 Apr 22  2014 plugins
    43 drwxr-xr-x 6 yun yun   73 Jul 29 17:02 web

    4.4. 配置文件

    注:先配置好服务器节点上的时区

    1、先生成时区配置文件Asia/Shanghai,用交互式命令 tzselect 即可

    2、拷贝该时区文件,覆盖系统本地时区配置

    1 # 也可以是软连接
    2 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  

    4.4.1. web服务器配置

     1 [yun@mini01 conf]$ pwd
     2 /app/azkaban/web-server-2.5.0/conf
     3 [yun@mini01 conf]$ ll
     4 total 8
     5 -rw-r--r-- 1 yun yun 1007 Jul 29 19:29 azkaban.properties
     6 -rw-r--r-- 1 yun yun  266 Apr 22  2014 azkaban-users.xml
     7 #### azkaban.properties 配置
     8 [yun@mini01 conf]$ vim azkaban.properties 
     9 #Azkaban Personalization Settings
    10 azkaban.name=Test  #服务器UI名称,用于服务器上方显示的名字
    11 azkaban.label=My Local Azkaban  #描述
    12 azkaban.color=#FF3601   #UI颜色
    13 azkaban.default.servlet.path=/index
    14 web.resource.dir=web/   #默认根web目录
    15 default.timezone.id=Asia/Shanghai  #时区
    16 
    17 #Azkaban UserManager class
    18 user.manager.class=azkaban.user.XmlUserManager  #用户权限管理默认类
    19 user.manager.xml.file=conf/azkaban-users.xml    #用户配置,具体配置参加下文
    20 
    21 #Loader for projects
    22 executor.global.properties=conf/global.properties  # global配置文件所在位置
    23 azkaban.project.dir=projects
    24 
    25 database.type=mysql
    26 mysql.port=3306
    27 mysql.host=mini03
    28 mysql.database=azkaban
    29 mysql.user=azkaban
    30 mysql.password=azkaban
    31 mysql.numconnections=100   #最大连接数
    32 
    33 # Velocity dev mode
    34 velocity.dev.mode=false
    35 
    36 # Azkaban Jetty server properties.
    37 jetty.maxThreads=25            #最大线程数
    38 jetty.ssl.port=8443            #Jetty SSL端口
    39 jetty.port=8081                #Jetty端口
    40 jetty.keystore=keystore        #SSL文件名
    41 jetty.password=123456          #SSL文件密码
    42 jetty.keypassword=123456       #Jetty主密码 与 keystore文件相同
    43 jetty.truststore=keystore      #SSL文件名
    44 jetty.trustpassword=123456     # SSL文件密码
    45 
    46 # Azkaban Executor settings
    47 executor.port=12321            #执行服务器端口
    48 
    49 # mail settings
    50 mail.sender=                   #发送邮箱
    51 mail.host=                     #发送邮箱smtp地址
    52 job.failure.email=             #任务失败时发送邮件的地址
    53 job.success.email=             #任务成功时发送邮件的地址
    54 
    55 lockdown.create.projects=false
    56 
    57 cache.directory=cache          #缓存目录
    58 
    59 ###### azkaban-users.xml 配置
    60 [yun@mini01 conf]$ vim azkaban-users.xml 
    61 <azkaban-users>
    62         <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
    63         <user username="metrics" password="metrics" roles="metrics"/>
    64         <user username="admin" password="admin" roles="admin,metrics" />
    65 
    66         <role name="admin" permissions="ADMIN" />
    67         <role name="metrics" permissions="METRICS"/>
    68 </azkaban-users>

    4.4.2. executor执行服务器配置

     1 [yun@mini01 conf]$ pwd
     2 /app/azkaban/executor-2.5.0/conf
     3 [yun@mini01 conf]$ vim azkaban.properties 
     4 #Azkaban
     5 default.timezone.id=Asia/Shanghai
     6 
     7 # Azkaban JobTypes Plugins
     8 azkaban.jobtype.plugin.dir=plugins/jobtypes   #jobtype 插件所在位置
     9 
    10 #Loader for projects
    11 executor.global.properties=conf/global.properties
    12 azkaban.project.dir=projects
    13 
    14 database.type=mysql
    15 mysql.port=3306
    16 mysql.host=mini03
    17 mysql.database=azkaban
    18 mysql.user=azkaban
    19 mysql.password=azkaban
    20 mysql.numconnections=100      #最大连接数
    21 
    22 # Azkaban Executor settings
    23 executor.maxThreads=50        #最大线程数
    24 executor.port=12321           #端口号(如修改,请与web服务中一致)
    25 executor.flow.threads=30      #线程数

    4.5. 启动azkaban

           先执行executor,再执行web,避免Web Server会因为找不到执行器启动失败。

    执行服务器

    1 [yun@mini01 executor-2.5.0]$ pwd
    2 /app/azkaban/executor-2.5.0
    3 [yun@mini01 executor-2.5.0]$ ./bin/azkaban-executor-start.sh  
    4 # 或者 nohup ./bin/azkaban-executor-start.sh > azkaban-exec_$(date +%Y%m%d%H%M%S).log & 
    5 # 方便查看日志
    6 ………………

    web服务器

    1 [yun@mini01 web-server-2.5.0]$ pwd
    2 /app/azkaban/web-server-2.5.0
    3 [yun@mini01 web-server-2.5.0]$ ./bin/azkaban-web-start.sh  # 日志会自己记录 
    4 ………………

    查看java进程

    1 [yun@mini01 executor-2.5.0]$ jps 
    2 4083 AzkabanWebServer
    3 3988 AzkabanExecutorServer
    4 4171 Jps

    4.6. 浏览器访问

    1 https://mini01:8443/ 

           使用admin登录之后

    5. Azkaban实战

           Azkaba内置的任务类型支持command、java

    5.1. Command类型单一job示例

    创建job描述文件

    在Windows创建文件 command.job,内容如下

    command.job

    1 #command.job
    2 type=command
    3 # command=sh hello.sh
    4 command=echo 'hello'

    hello.sh

    1 #!/bin/bash
    2 echo 'hello World!' > /tmp/azkaban.info

    将job资源文件打包成zip文件

    zip command.job

    创建project、上传包并执行

    1、通过azkaban的web管理平台创建project并上传job压缩包

    首先创建project

    2、上传zip包

    3、启动执行该job

    5.2. Command类型多job工作流flow

    1、创建有依赖关系的多个job描述

    第一个job:foo.job

    1 # foo.job
    2 type=command
    3 command=echo foo

    第二个job:bar.job依赖foo.job

    1 # bar.job
    2 type=command
    3 dependencies=foo
    4 command=echo bar

    2、将所有job资源文件打到一个zip包中

    3、在azkaban的web管理界面创建工程并上传zip包

    4、启动工作流flow

    5.3. HDFS操作任务

    1、创建job描述文件

    fs_01.job

    1 # fs.job
    2 type=command
    3 command=/app/hadoop/bin/hadoop fs -mkdir -p /azkaban/test03_new

    fs_02.job

    1 # fs.job
    2 type=command
    3 dependencies=fs_01
    4 command=/app/hadoop/bin/hadoop fs -put /app/software/apache-flume-1.8.0-bin.tar.gz /azkaban/test03_new

    2、将job资源文件打包成zip文件

    3、通过azkaban的web管理平台创建project并上传job压缩包

    4、启动执行该job

    5.4. MAPREDUCE任务

    Mr任务依然可以使用command的job类型来执行

    1、创建job描述文件,及mr程序jar包(示例中直接使用hadoop自带的example jar)

    mrwc_01.job

    1 # mrwc.job
    2 type=command
    3 command=/app/hadoop/bin/hadoop fs -mkdir -p /azkaban/wordcount/input

    mrwc_02.job

    1 # mrwc.job
    2 type=command
    3 dependencies=mrwc_01
    4 command=/app/hadoop/bin/hadoop fs -put test.info zhang.info /azkaban/wordcount/input

    mrwc_03.job

    1 # mrwc.job
    2 type=command
    3 dependencies=mrwc_02
    4 command=/app/hadoop/bin/hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /azkaban/wordcount/input /azkaban/wordcount/output

    test.info

    1 111
    2 222
    3 333
    4 444
    5 555
    6 333
    7 222
    8 222
    9 222

    zhang.info

    1 zxcvbnm
    2 asdfghjkl
    3 qwertyuiop
    4 qwertyuiop
    5 111
    6 qwertyuiop

    2、将job资源文件打包成zip文件

    3、通过azkaban的web管理平台创建project并上传job压缩包

    4、启动执行该job

    部分截图如下

     

     

    1 [yun@mini02 ~]$ hadoop fs -cat /azkaban/wordcount/output/part-r-00000
    2 111    2
    3 222    4
    4 333    2
    5 444    1
    6 555    1
    7 asdfghjkl    1
    8 qwertyuiop    3
    9 zxcvbnm    1

    5.5. HIVE脚本任务

    1、创建job描述文件

    hivef_01.job

    1 # hivef.job
    2 type=command
    3 command=/app/hadoop/bin/hadoop fs -mkdir -p /aztest/hiveinput

    hivef_01.job

    1 # hivef.job
    2 type=command
    3 dependencies=hivef_01
    4 command=/app/hadoop/bin/hadoop fs -put azkb.dat /aztest/hiveinput

    hivef_03.job

    1 # hivef.job
    2 type=command
    3 dependencies=hivef_02
    4 command=/app/hive/bin/hive -f 'aztest.sql'

    aztest.sql

    1 CREATE DATABASE IF NOT EXISTS azkaban;
    2 use azkaban;
    3 DROP TABLE IF EXISTS aztest;
    4 DROP TABLE IF EXISTS azres;
    5 create table aztest(id int,name string) row format delimited fields terminated by ',';
    6 load data inpath '/aztest/hiveinput/azkb.dat' into table aztest;
    7 create table azres row format delimited fields terminated by '#' as select * from aztest;
    8 insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

    azkb.dat

    1 1,刘晨晨
    2 2,王敏
    3 3,张立玉
    4 4,刘刚

    2、将job资源文件打包成zip文件

    3、通过azkaban的web管理平台创建project并上传job压缩包

    4、启动执行该job

  • 相关阅读:
    测试JavaScript
    从零开始部署小型企业级虚拟桌面 -- Vmware Horizon View 6 For Linux VDI -- 概念简介
    怎样向IT行业的朋友说明《圣经》的重要性
    关于爱剪辑、会声会影、美图秀秀
    快速登录IRC网络聊天室
    如何写一篇好的搭建教程
    从零开始部署小型企业级虚拟桌面 -- Vmware Horizon View 6 For Linux VDI
    Oracle工程师技能树
    论万金油的悲哀
    自定义地图开发(一)
  • 原文地址:https://www.cnblogs.com/zhanglianghhh/p/9415374.html
Copyright © 2020-2023  润新知