zoukankan      html  css  js  c++  java
  • Azkaban简介及使用

    一、Azkaban概述
        Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性问题。
        我们有需要按顺序运行的工作,从ETL工作到数据分析产品。
        特点:
        1)给用户提供了一个非常友好的可视化界面->web界面
        2)非常方便的上传工作流-》打成压缩包
        3)设置任务间的关系
        4)权限设置-》删库到跑路
        5)模块化
        6)随时停止和启动任务
        7)可以查看日志记录
        
    二、与Oozie对比
        和Oozie相对比,azkaban是一个轻量级调度工具。
        企业应用的功能并非小众的功能可以使用Azkaban。
        1)功能
        两个任务流调度器可以调度使用mr,java,脚本工作流任务
        都可以进行定时调度...
        2)使用
        az直接传参
        Oozie直接传参,支持EL表达式...
        3)定时
        az定时执行任务基于时间
        Oozie任务基于时间和数据
        4)资源
        az有严格的权限控制
        Oozie无严格权限控制
        
    三、Azkaban安装部署
        1、准备工作
        1)快照
        2)上传安装包
        Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz
        Azkaban Excutor 执行服务器:azkaban-executor-server-2.5.0.tar.gz
        Azkaban 初始化脚本文件:azkaban-sql-script-2.5.0.tar.gz
        
        cd /root/hd
        mkdir azkaban
        上传安装包到/root/hd/azkaban目录下
        3)解压重命名
        cd /root/hd/azkaban/
        解压
        tar -zxvf azkaban-web-server-2.5.0.tar.gz 
        tar -zxvf azkaban-executor-server-2.5.0.tar.gz 
        tar -zxvf azkaban-sql-script-2.5.0.tar.gz 
        删除安装包
        rm -f azkaban-executor-server-2.5.0.tar.gz 
        rm -f azkaban-web-server-2.5.0.tar.gz 
        rm -f azkaban-sql-script-2.5.0.tar.gz 
        重命名
        mv azkaban-executor-2.5.0/ executor
        mv azkaban-web-2.5.0/ server
        4)mysql中azkaban脚本导入
        create database azkaban;
        use azkaban;
        source /root/hd/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
        
        2、安装部署
        1)创建SSL(安全连接)配置
        服务器需要一个证书
        cd /root/hd/azkaban/server
        keytool -keystore keystore -alias jetty -genkey -keyalg RSA
        
        [root@hd09-1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
        输入密钥库口令:  123456(密码是看不见的)
        再次输入新口令:  123456
        您的名字与姓氏是什么?
          [Unknown]:  
        您的组织单位名称是什么?
          [Unknown]:  
        您的组织名称是什么?
          [Unknown]:  
        您所在的城市或区域名称是什么?
          [Unknown]:  
        您所在的省/市/自治区名称是什么?
          [Unknown]:  
        该单位的双字母国家/地区代码是什么?
          [Unknown]:  CN
        CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正确?
          [否]:  是
    
        输入 <jetty> 的密钥口令 123456
            (如果和密钥库口令相同, 按回车):  
        [root@hd09-1 server]#    
        
        2)时间同步设置
        生成时区文件
        tzselect生成
        5->9->1->yes
    
        拷贝时区文件
        cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
        集群时间同步
        crt中开启交互窗口 发送
        sudo date -s '2018-11-29 20:22:39'
        
        3)修改配置文件    azkaban.properties
        cd /root/hd/azkaban/server/conf    
        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=/root/hd/azkaban/server/web/    #默认根 web 目录
        default.timezone.id=Asia/Shanghai    #默认时区,已改为亚洲/上海 默认为美国
    
        #Azkaban UserManager class
        user.manager.class=azkaban.user.XmlUserManager    #用户权限管理默认类
        user.manager.xml.file=/root/hd/azkaban/server/conf/azkaban-users.xml    #用户配置
    
        #Loader for projects    # global 配置文件所在位置
        executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
        azkaban.project.dir=projects
    
        database.type=mysql    #数据库类型
        mysql.port=3306    #端口号
        mysql.host=hd09-1    #数据库连接 IP
        mysql.database=azkaban    #数据库实例名
        mysql.user=root    #数据库用户名
        mysql.password=root    #数据库密码
        mysql.numconnections=100    #最大连接数    
    
        # Velocity dev mode
        velocity.dev.mode=false    # Jetty 服务器属性
    
        # Azkaban Jetty server properties.
        jetty.maxThreads=25    #最大线程数
        jetty.ssl.port=8443    #Jetty SSL 端口
        jetty.port=8081    #Jetty 端口
        jetty.keystore=/root/hd/azkaban/server/keystore    #SSL 文件名
        jetty.password=123456    #SSL 文件密码
        jetty.keypassword=123456    #Jetty 主密码 与 keystore 文件相同
        jetty.truststore=/root/hd/azkaban/server/keystore    #SSL 文件名
        jetty.trustpassword=123456    # SSL 文件密码
    
        # Azkaban Executor settings    # 执行服务器属性
        executor.port=12321    #执行服务器端口
    
        # mail settings
        mail.sender=    #发送邮箱
        mail.host=    #发送邮箱 smtp 地址
        job.failure.email=    #任务失败时发送邮件的地址
        job.success.email=    #任务成功时发送邮件的地址
    
        lockdown.create.projects=false
    
        cache.directory=cache    #缓存目录
    
        4)修改配置文件    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>
        
        5)修改配置文件    azkaban.properties
        cd /root/hd/azkaban/executor/conf
        vi azkaban.properties
        
        #Azkaban
        default.timezone.id=Asia/Shanghai    #时区
    
        # Azkaban JobTypes Plugins    #插件配置,插件所在位置
        azkaban.jobtype.plugin.dir=/root/hd/azkaban/executor/plugins/jobtypes
    
        #Loader for projects
        executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
        azkaban.project.dir=projects
        #数据库设置
        database.type=mysql    #数据库类型(目前只支持 mysql)
        mysql.port=3306    #数据库端口号
        mysql.host=hd09-1    #数据库 IP 地址
        mysql.database=azkaban    #数据库实例名
        mysql.user=root    #数据库用户名
        mysql.password=root    #数据库密码
        mysql.numconnections=100    #最大连接数
    
        # Azkaban Executor settings    # 执行服务器配置
        executor.maxThreads=50    #最大线程数
        executor.port=12321    #端口号(如修改,请与 web 服务中一致)
        executor.flow.threads=30    #线程数
        
        6)启动web服务器
        cd /root/hd/azkaban/server
        bin/azkaban-web-start.sh
        
        7)启动执行器
        cd /root/hd/azkaban/executor
        bin/azkaban-executor-start.sh
        
        8)访问web
        https://hd09-1:8443
        打开谷歌或是火狐浏览器输入https://IP:8443,此处测试的地址是https://hd09-1:8443,此时可能会打不开界面,点击高级
        点击继续前往hd09-1(不安全)
        此时会跳到登录界面,输入在配置文件azkaban-users.xml,中配置的用户名密码admin/admin,点击登录即可
        
        9)配置环境变量
        vi /etc/profile 在最后面加上
        #Azkaban
        export AZKABAN_WEB_HOME=/root/hd/azkaban/server
        export AZKABAN_EXE_HOME=/root/hd/azkaban/executor
        export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin
        
        执行 source /etc/profile 声明环境变量
        此时就可以直接输入
        azkaban-web-start.sh
        azkaban-executor-start.sh
        启动azkaban了。
    
    四、应用
        下面的#后面的是文件名,把每个任务的文件打成zip压缩包后传到azkaban页面中的project中即可执行任务。
        1、command类型单一任务案例
        # command.job
        type=command
        command=echo 'hello world'
        
        2、command类型多个任务案例
        # f.job
        type=command
        command=echo 'hello'
        
        # b.job
        type=command
        dependencies=f
        command=echo 'world'
        
        3、azkaban操作HDFS任务
        # hdfs.job
        type=command
        command=/root/hd/hadoop-2.8.4/bin/hdfs dfs -mkdir /azkaban
        
        4、azkaban启动集群任务
        # start.job
        type=command
        command=/root/hd/hadoop-2.8.4/sbin/start-dfs.sh
        
        5、azkaban启动MapReduce程序
        # wc.job
        type=command
        command=/root/hd/hadoop-2.8.4/bin/hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /azwc/in /azwc/out
        
        6、azkaban启动Hive程序
        # hive.job
        type=command
        command=/root/hd/hive/bin/hive -f 'azhive.sql'
    
        # azhive.sql
        use default;
        drop table aztest;
        create table aztest(id int,name string) row format delimited fields terminated by ',';
        load data inpath '/azdata/user.txt' into table aztest;
        create table azres as select * from aztest;
        insert overwrite directory '/azdata/userout' select count(1) from aztest;
    
  • 相关阅读:
    JavaScript 本地对象、内置对象、宿主对象
    数据交换格式
    网页设计之内容、结构、表现分离
    Web前端浏览器兼容初探
    javascript call()与apply()
    天气API
    display:inline,display:inline-block,display:block 区别
    javascript sort()与reverse()
    The Primo ScholarRank Technology: Bringing the Most Relevant Results to the Top of the List
    IOS ——OC—— NSMutableDictionary的使用总结
  • 原文地址:https://www.cnblogs.com/areyouready/p/10050705.html
Copyright © 2011-2022 走看看