如下图,我们需要对大数据分析需要借助一系列的过程,各个过程相互协助配合。 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
1. 通过Hadoop先将原始数据同步到HDFS上;
2. 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到
多张Hive表中;
3. 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
4. 将明细数据进行各种统计分析,得到结果报表信息;
5. 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
image.png

常见工作流调度系统

简单的任务调度:直接使用linux的crontab来定义;
复杂的任务调度:在hadoop领域,常见的工作流调度器有Oozie, Azkaban,Cascading, 等

image.pngAzkaban是什么

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

  • Web用户界面
  • 基于时间的执行任务
  • 方便上传工作流
  • 方便设置任务之间的关系
  • 工作流和任务的日志记录和审计

    安装

    我们这里选用azkaban3.51.0这个版本自己进行重新编译,编译完成之后得到我们需要的
    安装包进行安装 。

    注意:我们这里编译需要使用jdk1.8的版本来进行编译,如果编译服务器使用的jdk版本 是1.7的,记得切换成jdk1.8,我们这里使用的是jdk8u141这个版本来进行编译

  1. cd /export/softwares/
  2. wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
  3. tar zxvf 3.51.0.tar.gz C ../servers/
  4. cd /export/servers/azkaban3.51.0/
  5. yum y install git
  6. yum y install gccc++
  7. ./gradlew build installDist x test
编写完成后,我们会发现当前目录下多了很多文件

azkaban-exec-server

/export/servers/azkaban‐3.51.0/azkaban‐exec‐server/build/distributions

azkaban-web-server

/export/servers/azkaban‐3.51.0/azkaban‐web‐server/build/distributions

azkaban-solo-server(单服务)

/export/servers/azkaban‐3.51.0/azkaban‐solo‐server/build/distributions

execute-as-user.c

/export/servers/azkaban‐3.51.0/az‐exec‐util/src/main/c

数据库文件

/export/servers/azkaban‐3.51.0/azkaban‐db/build/install/azkaban‐db

image.png

单服务模式安装

所需软件 : azkaban-solo-server

解压

azkaban 的solo server使用的是一个单节点的模式来进行启动服务的,只需要一个azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz的安装包即可启动,所有的数据信息都是保存在H2这个azkaban默认的数据当中, 上传我们的压缩包,然后修改配置文件启动即可。

cd /export/softwares tar ‐zxvf azkaban‐solo‐server‐0.1.0‐SNAPSHOT.tar.gz ‐C ../servers/

修改时区配置文件

cd /export/servers/azkaban‐solo‐server‐0.1.0‐SNAPSHOT/conf 
vim azkaban.properties 
#default.timezone.id=Asia/Shanghai

修改commonprivate.properties配置文件

cd /export/servers/azkaban‐solo‐server‐0.1.0‐SNAPSHOT/plugins/jobtypes
vim commonprivate.properties

#添加这一行避免内存检查
memCheck.enabled=false

启动solo-server

输入jps查看进程是否启动

cd /export/servers/azkaban‐solo‐server‐0.1.0‐SNAPSHOT 
bin/start‐solo.sh

浏览器访问 http:node03:8081

用户:azkaban 密码:azkaban
image.png

需求

使用azkaban调度我们的shell脚本,执行linux的shell命令。

创建文本文件foo.job

选择utf-8格式,并且将创建的文件打成zip包

type=command
commond=echo "hello world"

zip包上传到azkaban

通过web界面创建job后,点击上传文件。上传完成后,就可以执行我们的工作流了

双服务器模式安装

需要的工具 Azkaban Web服务安装包 azkaban-web-server-0.1.0-SNAPSHOT.tar.gz Azkaban执行服务安装包 azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
编译之后的sql脚本 create-all-sql-0.1.0-SNAPSHOT.sql

安装并执行sql文件

CREATE DATABASE azkaban; 
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban'; 
GRANT all privileges ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION; 
flush privileges; use azkaban; 
source /export/software/create‐all‐sql‐0.1.0‐SNAPSHOT.sql;

解压软件包

#解压azkaban‐web‐server 
cd /export/softwares 
tar ‐zxvf azkaban‐web‐server‐0.1.0‐SNAPSHOT.tar.gz ‐C ../servers/ 
cd /export/servers 
mv azkaban‐web‐server‐0.1.0‐SNAPSHOT/ azkaban‐web‐server‐3.51.0 

#解压azkaban‐exec‐server 
cd /export/softwares 
tar ‐zxvf azkaban‐exec‐server‐0.1.0‐SNAPSHOT.tar.gz ‐C ../servers/ 
cd /export/servers 
mv azkaban‐exec‐server‐0.1.0‐SNAPSHOT/ azkaban‐exec‐server‐3.51.0

安装ssl安全认证

安装ssl安全认证,允许我们使用https的方式访问我们的azkaban的web服务。密码一定要一个个的字母输入,或者粘贴也行。

cd /export/servers/azkaban-web-server-3.51.0
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

azkban web server配置修改

cd /export/servers/azkaban‐web‐server‐3.51.0/conf
vim azkaban.properties
# Azkaban Personalization Settings 
azkaban.name=Azkaban 
azkaban.label=My Azkaban 

default.timezone.id=Asia/Shanghai
jetty.use.ssl=true

jetty.ssl.port=8443 
jetty.keystore=/export/servers/azkaban‐web‐server‐3.51.0/keystore 
jetty.password=azkaban jetty.keypassword=azkaban 
jetty.truststore=/export/servers/azkaban‐web‐server‐3.51.0/keystore
jetty.trustpassword=azkaban

azkban executor server配置修改

cd /export/servers/azkaban‐exec‐server‐3.51.0/conf 
vim azkaban.properties

# Azkaban Personalization Settings 
azkaban.name=Azkaban 
azkaban.label=My Azkaban 

default.timezone.id=Asia/Shanghai
jetty.use.ssl=true

jetty.ssl.port=8443 
jetty.keystore=/export/servers/azkaban‐web‐server‐3.51.0/keystore 
jetty.password=azkaban jetty.keypassword=azkaban 
jetty.truststore=/export/servers/azkaban‐web‐server‐3.51.0/keystore
jetty.trustpassword=azkaban

azkaban.webserver.url=https://node03:8443

database.type=mysql 
mysql.port=3306 
mysql.host=node03 
mysql.database=azkaban 
mysql.user=azkaban 
mysql.password=azkaban 
mysql.numconnections=100

添加插件

将我们一开始编译的C文件execute-as-user.c上传到目录/export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes。然后执行以下命令生成execute-as-user

yum ‐y install gcc‐c++ 
cd /export/servers/azkaban‐exec‐server‐3.51.0/plugins/jobtypes 
gcc execute‐as‐user.c ‐o execute‐as‐user 
chown root execute‐as‐user 
chmod 6050 execute‐as‐user

修改配置文件

cd /export/servers/azkaban‐exec‐server‐3.47.0/plugins/jobtypes 
vim commonprivate.properties 
execute.as.user=false
memCheck.enabled=false 
azkaban.native.lib=/export/servers/azkaban‐exec‐server‐ 3.51.0/plugins/jobtypes

启动服务

启动azkban exec server
cd /export/servers/azkaban‐exec‐server‐3.51.0 
bin/start‐exec.sh

激活我们的exec-server

node03机器任意目录执行以下命令

curl ‐G "node03:$(<./executor.port)/executor?action=activate" && echo

启动azkaban-web-server
cd /export/servers/azkaban‐web‐server‐3.51.0/ 
bin/start‐web.sh

访问地址:htts://node03:8443