zoukankan      html  css  js  c++  java
  • azkaban(安装配置加实战)

    为什么需要工作流调度系统
     一个完整的数据分析系统通常都是由大量任务单元组成:
    shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等
     各任务单元之间存在时间先后及前后依赖关系
     为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
    例如,我们可能有这样一个需求,某个业务系统每天产生 20G 原始数据,我们每天都要对
    其进行处理,处理步骤如下所示:
    1、 通过 Hadoop 先将原始数据同步到 HDFS 上;
    2、 借助 MapReduce 计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多
    张 Hive 表中;
    3、 需要对 Hive 中多个表的数据进行 JOIN 处理,得到一个明细数据 Hive 大表;
    4、 将明细数据进行复杂的统计分析,得到结果报表信息;
    5、 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

    工作流调度实现方式
    简单的任务调度:直接使用 linux 的 crontab 来定义;
    复杂的任务调度:开发调度平台
    或使用现成的开源调度系统,比如 ooize、azkaban 等

    常见工作流调度系统
    市面上目前有许多工作流调度器
    在 hadoop 领域,常见的工作流调度器有 Oozie, Azkaban,Cascading,Hamake 等

     Azkaban 介绍

    Azkaban 是由 Linkedin 开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定
    的顺序运行一组工作和流程。Azkaban 定义了一种 KV 文件格式来建立任务之间的依赖关系,
    并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。
    它有如下功能特点:
     Web 用户界面
     方便上传工作流
     方便设置任务之间的关系
     调度工作流
     认证/授权(权限的工作)
     能够杀死并重新启动工作流
     模块化和可插拔的插件机制
     项目工作区
     工作流和任务的日志记录和审计

    (好了不废话直接干!)

    Azkaban 安装部署
    准备工作
    Azkaban Web 服务器
    azkaban-web-server-2.5.0.tar.gz
    Azkaban 执行服务器
    azkaban-executor-server-2.5.0.tar.gz
    MySQL
    目前 azkaban 只支持 mysql,需安装 mysql 服务器,本文档中默认已安装好 mysql 服务器,并建
    立了 root 用户,密码 root.导入脚本
    下载地址:http://azkaban.github.io/downloads.html

    链接: https://pan.baidu.com/s/1qZNKqXQ 密码: 3wsz用这几个就行
    1.上传到机器上

    2.解压

    3.这一步随便,只是重命名之后看着舒服而已...

     

     

    完成后显示如下表

    创建 SSL 配置
    参考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
    命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    运行此命令后,会提示输入当前生成 keystor 的密码及相应信息,输入的密码请劳记,信息如下:
    输入 keystore 密码:
    再次输入新密码:
    您的名字与姓氏是什么?
    [Unknown]:
    您的组织单位名称是什么?
    [Unknown]:
    您的组织名称是什么?
    [Unknown]:
    您所在的城市或区域名称是什么?
    [Unknown]:
    您所在的州或省份名称是什么?
    [Unknown]:
    该单位的两字母国家代码是什么
    [Unknown]: CN
    CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
    [否]: y
    输入<jetty>的主密码
    (如果和 keystore 密码相同,按回车):
    再次输入新密码:
    完成上述工作后,将在当前目录生成 keystore 证书文件,将 keystore 考贝到 azkaban web 服务
    器根目录中.如:cp keystore azkaban/server

     

     

     

    注:先配置好服务器节点上的时区
    1、先生成时区配置文件 Asia/Shanghai,用交互式命令 tzselect 即可


    依次输入5 - 9 -1 


    2、拷贝该时区文件,覆盖系统本地时区配置
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime (这个直接复制进去运行就行了不用修改)


    azkaban web 服务器配置
    进入 azkaban web 服务器安装目录 conf 目录
     修改 azkaban.properties 文件
    命令 vi azkaban.properties


    内容说明如下:
    #Azkaban Personalization Settings
    azkaban.name=Test #服务器 UI 名称,用于服务器上方显示的名字
    azkaban.label=My Local Azkaban #描述
    azkaban.color=#FF3601 #UI 颜色
    azkaban.default.servlet.path=/index #
    web.resource.dir=web/ #默认根 web 目录
    default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
    #Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
    user.manager.xml.file=conf/azkaban-users.xml #用户配置,具体配置参加下文(这个路径好像是要绝对路径不然会报错)


    #Loader for projects
    executor.global.properties=conf/global.properties # global 配置文件所在位置
    azkaban.project.dir=projects #
    database.type=mysql #数据库类型
    mysql.port=3306 #端口号
    mysql.host=localhost #数据库连接 IP
    mysql.database=azkaban #数据库实例名
    mysql.user=root #数据库用户名
    mysql.password=root #数据库密码
    mysql.numconnections=100 #最大连接数
    # Velocity dev mode
    velocity.dev.mode=false
    # Jetty 服务器属性.
    jetty.maxThreads=25 #最大线程数
    jetty.ssl.port=8443 #Jetty SSL 端口
    jetty.port=8081 #Jetty 端口
    jetty.keystore=keystore #SSL 文件名
    jetty.password=123456 #SSL 文件密码
    jetty.keypassword=123456 #Jetty 主密码 与 keystore 文件相同
    jetty.truststore=keystore #SSL 文件名
    jetty.trustpassword=123456 # SSL 文件密码
    # 执行服务器属性
    executor.port=12321 #执行服务器端口
    # 邮件设置(不用改就行)
    mail.sender=xxxxxxxx@163.com #发送邮箱
    mail.host=smtp.163.com #发送邮箱 smtp 地址
    mail.user=xxxxxxxx #发送邮件时显示的名称
    mail.password=********** #邮箱密码
    job.failure.email=xxxxxxxx@163.com #任务失败时发送邮件的地址
    job.success.email=xxxxxxxx@163.com #任务成功时发送邮件的地址
    lockdown.create.projects=false #
    cache.directory=cache #缓存目录


     azkaban 执行服务器 executor 配置
    进入执行服务器安装目录 conf,修改 azkaban.properties
    vi azkaban.properties
    #Azkaban
    default.timezone.id=Asia/Shanghai #时区
    # Azkaban JobTypes 插件配置
    azkaban.jobtype.plugin.dir=plugins/jobtypes #jobtype 插件所在位置
    #Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
    #数据库设置
    database.type=mysql #数据库类型(目前只支持 mysql)
    mysql.port=3306 #数据库端口号
    mysql.host=192.168.20.200 #数据库 IP 地址
    mysql.database=azkaban #数据库实例名
    mysql.user=root #数据库用户名
    mysql.password=root #数据库密码
    mysql.numconnections=100 菜单 #最大连接数
    # 执行服务器配置
    executor.maxThreads=50 #最大线程数
    executor.port=12321 #端口号(如修改,请与 web 服务中一致)
    executor.flow.threads=30 #线程数
     用户配置
    进入 azkaban web 服务器 conf 目录,修改 azkaban-users.xml
    vi azkaban-users.xml 增加 管理员用户
    <azkaban-users>
    <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
    <user username="metrics" password="metrics" roles="metrics"/>
    <user username="admin" password="admin" roles="admin,metrics" />(直接复制进去就行)


    <role name="admin" permissions="ADMIN" />
    <role name="metrics" permissions="METRICS"/>
    </azkaban-users>

     配置完毕之后

    启动
    web 服务器
    在 azkaban web 服务器目录下执行启动命令
    bin/azkaban-web-start.sh


    注:在 web 服务器根目录运行
    或者启动到后台
    nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &(后台运行,把日志发送到相应的文件夹下就是/tmp/azstd.out的文件夹)
    执行服务器
    在执行服务器目录下执行启动命令
    bin/azkaban-executor-start.sh


    注:只能要执行服务器根目录运行

     

    启动完成后,在浏览器(建议使用谷歌浏览器)中输入 https://服务器 IP 地址:8443 ,即可访问
    azkaban 服务了.在登录中输入刚才新的户用名及密码,点击 login.
    在 URL 前加 https://前缀表明是用 SSL 加密的。 你的电脑与服务器之间收发的信息传输将更
    加安全。
    Web 服务器启用 SSL 需要获得一个服务器证书并将该证书与要使用 SSL 的服务器绑定。
    http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。http
    的连接很简单,是无状态的,...
    HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议
    要比 http 协议安全

     

     之后会进入.

     

     

     用户密码登录.

    为什么是admin呢,因为别忘了我们配置过

    进入后:

     

     

     

     

    Azkaban 实战
    Azkaba 内置的任务类型支持 command、java
    Command 类型单一 job 示例
    1、创建 job 描述文件
    vi command.job
    #command.job
    type=command
    command=echo 'hello'


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

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


    首先创建 project

    名字和描述都不能用中文

     

     执行:

     

     

    HIVE 脚本任务
     创建 job 描述文件和 hive 脚本
    Hive 脚本: test.sql
    use default;
    drop table aztest;
    create table aztest(id int,name string) row format delimited fields terminated by ',';
    load data inpath '/aztest/hiveinput' into table aztest;
    create table azres as select * from aztest;
    insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;
    Job 描述文件:hivef.job
    # hivef.job
    type=command
    command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'
    2、将所有 job 资源文件打到一个 zip 包中
    3、在 azkaban 的 web 管理界面创建工程并上传 zip 包
    4、启动 job

     凄凉的结局....

  • 相关阅读:
    BZOJ 1040 (ZJOI 2008) 骑士
    BZOJ 1037 (ZJOI 2008) 生日聚会
    ZJOI 2006 物流运输 bzoj1003
    ZJOI 2006 物流运输 bzoj1003
    NOI2001 炮兵阵地 洛谷2704
    NOI2001 炮兵阵地 洛谷2704
    JLOI 2013 卡牌游戏 bzoj3191
    JLOI 2013 卡牌游戏 bzoj3191
    Noip 2012 day2t1 同余方程
    bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配
  • 原文地址:https://www.cnblogs.com/wzlbigdata/p/8372604.html
Copyright © 2011-2022 走看看