zoukankan      html  css  js  c++  java
  • Hadoop生态圈-Azkaban部署实战

                        Hadoop生态圈-Azkaban部署实战

                                          作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。      

     一.Azkaban部署流程

    1>.上传azkaban程序并创建解压目录

    [yinzhengjie@s101 data]$ pwd
    /home/yinzhengjie/data
    [yinzhengjie@s101 data]$ ll
    total 401716
    -rw-r--r-- 1 yinzhengjie yinzhengjie  16664491 Apr 16 15:37 azkaban-exec-server-3.46.0.tar.gz
    -rw-r--r-- 1 yinzhengjie yinzhengjie     24333 Apr 16 15:18 azkaban-hadoop-security-plugin-3.46.0.tar.gz
    -rw-r--r-- 1 yinzhengjie yinzhengjie 349929173 Apr 16 15:11 azkaban-plugins-master.zip
    -rw-r--r-- 1 yinzhengjie yinzhengjie  23819895 Apr 16 15:18 azkaban-solo-server-3.46.0.tar.gz
    -rw-r--r-- 1 yinzhengjie yinzhengjie  20899667 Apr 16 15:37 azkaban-web-server-3.46.0.tar.gz
    -rw-r--r-- 1 yinzhengjie yinzhengjie     11194 Nov 30  2017 create-all-sql-3.46.0.sql
    [yinzhengjie@s101 data]$ 
    [yinzhengjie@s101 data]$ mkdir /soft/azkaban
    [yinzhengjie@s101 data]$ 

    2>.分别解压文件到/soft/azkaban中

    [yinzhengjie@s101 data]$ tar -xzf azkaban-exec-server-3.46.0.tar.gz -C /soft/azkaban/
    [yinzhengjie@s101 data]$ tar -xzf azkaban-web-server-3.46.0.tar.gz -C /soft/azkaban/
    [yinzhengjie@s101 data]$ 

     3>.进入到mysql命令行并创建数据库

    [yinzhengjie@s101 data]$ mysql -uroot -pyinzhengjie
    Warning: Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 2
    Server version: 5.6.38 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> create database yinzhengjie_azkaban;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use yinzhengjie_azkaban;
    Database changed
    mysql> source /home/yinzhengjie/data/create-all-sql-3.46.0.sql
    Query OK, 0 rows affected (0.03 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.01 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.00 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.06 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.13 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.22 sec)
    
    Query OK, 0 rows affected (0.15 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.18 sec)
    
    Query OK, 0 rows affected (0.13 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.17 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.06 sec)
    
    Query OK, 0 rows affected (0.33 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.01 sec)
    
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.22 sec)
    
    Query OK, 0 rows affected (0.12 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.09 sec)
    
    Query OK, 0 rows affected (0.10 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.17 sec)
    
    Query OK, 0 rows affected (0.18 sec)
    
    Query OK, 0 rows affected (0.14 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.12 sec)
    
    Query OK, 0 rows affected (0.04 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.08 sec)
    
    Query OK, 0 rows affected (0.17 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.16 sec)
    
    Query OK, 0 rows affected (0.13 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.13 sec)
    
    Query OK, 0 rows affected (0.10 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    Query OK, 0 rows affected (0.04 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    Query OK, 0 rows affected (0.19 sec)
    
    Query OK, 0 rows affected (0.23 sec)
    
    Query OK, 0 rows affected (0.08 sec)
    
    Query OK, 0 rows affected (0.13 sec)
    
    Query OK, 0 rows affected (0.01 sec)
    
    Query OK, 0 rows affected (0.06 sec)
    
    Query OK, 0 rows affected (0.19 sec)
    
    Query OK, 0 rows affected (0.27 sec)
    
    Query OK, 0 rows affected (0.18 sec)
    
    Query OK, 0 rows affected (0.16 sec)
    
    Query OK, 0 rows affected (0.17 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.19 sec)
    
    mysql> exit;
    Bye
    [yinzhengjie@s101 data]$ 

    4>.创建SSL配置(完成下述工作后,将在当前目录生成 keystore 证书文件,需要输出初始密码,选择国家,在输入确认字母y其他按回车即可)

    [yinzhengjie@s101 data]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    Enter keystore password:  
    Re-enter new password: 
    What is your first and last name?
      [Unknown]:  
    What is the name of your organizational unit?
      [Unknown]:  
    What is the name of your organization?
      [Unknown]:  
    What is the name of your City or Locality?
      [Unknown]:  
    What is the name of your State or Province?
      [Unknown]:  
    What is the two-letter country code for this unit?
      [Unknown]:  CN
    Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
      [no]:  y
    
    Enter key password for <jetty>
        (RETURN if same as keystore password):  
    [yinzhengjie@s101 data]$ 
    [yinzhengjie@s101 data]$ ll | grep keystore
    -rw-rw-r-- 1 yinzhengjie yinzhengjie      2232 Jun 24 02:48 keystore
    [yinzhengjie@s101 data]$ 

    5>.将keystore文件拷贝到web文件夹下

    [yinzhengjie@s101 data]$ ll | grep keystore
    -rw-rw-r-- 1 yinzhengjie yinzhengjie      2232 Jun 24 02:48 keystore
    [yinzhengjie@s101 data]$ cp keystore /soft/azkaban/azkaban-web-server-3.46.0/
    [yinzhengjie@s101 data]$ 

    6>.编辑配置文件【azkaban.properties

    [yinzhengjie@s101 data]$ more /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties
    #Azkaban Personalization Settings
    #服务器UI名称,用于服务器上方显示的名字
    azkaban.name=yinzhengjie
    #描述
    azkaban.label=My Local Azkaban
    #UI颜色
    azkaban.color=#FF3601
    #指定首页路径
    azkaban.default.servlet.path=/index
    #默认根web目录
    web.resource.dir=/soft/azkaban/azkaban-web-server-3.46.0/web/
    #默认时区,已改为亚洲/上海 默认为美国
    default.timezone.id=Asia/Shanghai
     
    #Azkaban UserManager class
    #用户权限管理默认类
    user.manager.class=azkaban.user.XmlUserManager
    #用户配置,具体配置参加下文
    user.manager.xml.file=/soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban-users.xml
    
    #Loader for projects
    # global配置文件所在位置
    executor.global.properties=/soft/azkaban/azkaban-web-server-3.46.0/conf/global.properties
    azkaban.project.dir=projects
    #数据库类型
    database.type=mysql
    #端口号
    mysql.port=3306
    #数据库连接IP                                                                   
    mysql.host=s101
    #数据库实例名
    mysql.database=azkaban
    #数据库用户名                                                   
    mysql.user=root
    #数据库密码                                                          
    mysql.password=yinzhengjie
    #最大连接数                                                  
    mysql.numconnections=100
     
    # Velocity dev mode
    #关闭快速开发模式
    velocity.dev.mode=false
    # Jetty服务器属性.
    #最大线程数 
    jetty.maxThreads=25
    #Jetty SSL端口                                                        
    jetty.ssl.port=8443
    #Jetty端口                                           
    jetty.port=8081
    #SSL文件名                                                                      
    jetty.keystore=keystore
    #SSL文件密码                                                       
    jetty.password=yinzhengjie
    #Jetty主密码 与 keystore文件相同                                                  
    jetty.keypassword=yinzhengjie
    #SSL文件名                                              
    jetty.truststore=keystore
    # SSL文件密码                                                       
    jetty.trustpassword=yinzhengjie
    # 执行服务器属性
    #执行服务器端口
    executor.port=12321
     
    # 邮件设置
    #发送邮箱
    mail.sender=xxxxxxxx@163.com
    #发送邮箱smtp地址                                  
    mail.host=smtp.163.com
    #发送邮件时显示的名称                                            
    mail.user=xxxxxxxx
    #邮箱密码                                 
    mail.password=**********
    #任务失败时发送邮件的地址                                                
    job.failure.email=xxxxxxxx@163.com
    #任务成功时发送邮件的地址                          
    job.success.email=xxxxxxxx@163.com
    lockdown.create.projects=false
    #缓存目录                                         
    cache.directory=cache
    
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban JobTypes 插件配置
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    [yinzhengjie@s101 data]$

      以上代码只是对该配置文件的一个详细说明,不建议在这个配置文件中写中文!在实际配置中,需要将这个文件拷贝两份,分别放在web和exec目录中,实际使用配置如下:

    [yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties
    # Azkaban Personalization Settings
    azkaban.name=yinzhengjie
    azkaban.label=My Local Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    web.resource.dir=/soft/azkaban/azkaban-web-server-3.46.0/web/
    default.timezone.id=Asia/Shanghai
    # Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager
    user.manager.xml.file=/soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban-users.xml
    # Loader for projects
    executor.global.properties=/soft/azkaban/azkaban-web-server-3.46.0/conf/global.properties
    azkaban.project.dir=projects
    database.type=mysql
    mysql.port=3306
    mysql.host=s101
    mysql.database=yinzhengjie_azkaban
    mysql.user=root
    mysql.password=yinzhengjie
    mysql.numconnections=100
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=false
    jetty.maxThreads=25
    jetty.port=8081
    # Azkaban Executor settings
    executor.port=12321
    # mail settings
    mail.sender=
    mail.host=
    # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
    # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
    # when this parameters set then these parameters are used to generate email links. 
    # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
    # azkaban.webserver.external_hostname=myazkabanhost.com
    # azkaban.webserver.external_ssl_port=443
    # azkaban.webserver.external_port=8081
    job.failure.email=
    job.success.email=
    lockdown.create.projects=false
    cache.directory=cache
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban plugin settings
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    [yinzhengjie@s101 ~]$ 
    [yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties
    [yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-exec-server-3.46.0/conf/azkaban.properties 
    # Azkaban Personalization Settings
    azkaban.name=yinzhengjie
    azkaban.label=My Local Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    web.resource.dir=/soft/azkaban/azkaban-web-server-3.46.0/web/
    default.timezone.id=Asia/Shanghai
    # Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager
    user.manager.xml.file=/soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban-users.xml
    # Loader for projects
    executor.global.properties=/soft/azkaban/azkaban-web-server-3.46.0/conf/global.properties
    azkaban.project.dir=projects
    database.type=mysql
    mysql.port=3306
    mysql.host=s101
    mysql.database=yinzhengjie_azkaban
    mysql.user=root
    mysql.password=yinzhengjie
    mysql.numconnections=100
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=false
    jetty.maxThreads=25
    jetty.port=8081
    # Azkaban Executor settings
    executor.port=12321
    # mail settings
    mail.sender=
    mail.host=
    # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
    # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
    # when this parameters set then these parameters are used to generate email links. 
    # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
    # azkaban.webserver.external_hostname=myazkabanhost.com
    # azkaban.webserver.external_ssl_port=443
    # azkaban.webserver.external_port=8081
    job.failure.email=
    job.success.email=
    lockdown.create.projects=false
    cache.directory=cache
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban plugin settings
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    [yinzhengjie@s101 ~]$ 
    [yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-exec-server-3.46.0/conf/azkaban.properties

    7>.修改用户配置文件【azkaban-users.xml】

    [yinzhengjie@s101 data]$ more /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban-users.xml 
    <azkaban-users>
        <user username="azkaban" password="yinzhengjie" roles="admin" groups="azkaban" />
        <user username="metrics" password="yinzhengjie" roles="metrics"/>
        <user username="admin" password="yinzhengjie" roles="admin,metrics" />
        <role name="admin" permissions="ADMIN" />
        <role name="metrics" permissions="METRICS"/>
    </azkaban-users>
    [yinzhengjie@s101 data]$ 

    8>.创建global.properties

    [yinzhengjie@s101 data]$ touch /soft/azkaban/azkaban-web-server-3.46.0/conf/global.properties
    [yinzhengjie@s101 data]$ 

    9>.编写启动脚本

    [yinzhengjie@s101 ~]$ more /usr/local/bin/azweb.sh 
    #!/bin/bash
    #@author :yinzhengjie
    #blog:http://www.cnblogs.com/yinzhengjie
    #EMAIL:y1053419035@qq.com
    
    #判断用户是否传参
    if [ $# -ne 1 ];then
        echo "无效参数,用法为: $0  {start|stop}"
        exit
    fi
    
    #获取用户输入的命令
    cmd=$1
    case $cmd in
        start)  
            cd /soft/azkaban
            /soft/azkaban/azkaban-web-server-3.46.0/bin/start-web.sh 
            ;;
        stop)  
            cd /soft/azkaban
            /soft/azkaban/azkaban-web-server-3.46.0/bin/shutdown-web.sh 
            ;;
        *) 
            echo "无效参数,用法为: $0  {start|stop}"
            exit 
            ;;
    esac
    echo ========= azweb $cmd =============
    [yinzhengjie@s101 ~]$ 
    web端启动脚本(/usr/local/bin/azweb.sh)
    [yinzhengjie@s101 ~]$ more /usr/local/bin/azexec.sh 
    #!/bin/bash
    #@author :yinzhengjie
    #blog:http://www.cnblogs.com/yinzhengjie
    #EMAIL:y1053419035@qq.com
    
    #判断用户是否传参
    if [ $# -ne 1 ];then
        echo "无效参数,用法为: $0  {start|stop}"
        exit
    fi
    
    #获取用户输入的命令
    cmd=$1
    case $cmd in
        start)  
            cd /soft/azkaban
            /soft/azkaban/azkaban-exec-server-3.46.0/bin/start-exec.sh 
            ;;
        stop)  
            cd /soft/azkaban
            /soft/azkaban/azkaban-exec-server-3.46.0/bin/shutdown-exec.sh 
            ;;
        *) 
            echo "无效参数,用法为: $0  {start|stop}"
            exit 
            ;;
    esac
    echo ========= azexec $cmd =============
    [yinzhengjie@s101 ~]$ 
    exec端启动脚本(/usr/local/bin/azexec.sh)

    10>.启动服务(启动web和executor)

    [yinzhengjie@s101 ~]$ jps
    4970 Jps
    [yinzhengjie@s101 ~]$ 
    [yinzhengjie@s101 ~]$ azweb.sh start
    ========= azweb start =============
    [yinzhengjie@s101 ~]$ azexec.sh start
    ========= azexec start =============
    [yinzhengjie@s101 ~]$ jps
    5024 AzkabanExecutorServer
    4993 AzkabanWebServer
    5044 Jps
    [yinzhengjie@s101 ~]$ netstat -untalp | grep 8081
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    tcp6       0      0 :::8081                 :::*                    LISTEN      4993/java           
    [yinzhengjie@s101 ~]$ 

    11>.测试azkaban连接

      输入用户名和密码信息:

     

      登录成功会有以下页面:

     二. Azkaban防坑小技巧

    1>.job文件有空格

      解决方案:

          修改command.job配置文件,将里面多余的空格删除掉!然后重新上传job任务。

    2>.Missing required property 'azkaban.native.lib'

     

      解决方案:

    [yinzhengjie@s101 ~]$ grep azkaban.jobtype.plugin.dir /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties 
    azkaban.jobtype.plugin.dir=/soft/azkaban/azkaban-exec-server-3.46.0/plugins/jobtypes/
    [yinzhengjie@s101 ~]$ 
    [yinzhengjie@s101 ~]$ grep azkaban.jobtype.plugin.dir  /soft/azkaban/azkaban-exec-server-3.46.0/conf/azkaban.properties
    azkaban.jobtype.plugin.dir=/soft/azkaban/azkaban-exec-server-3.46.0/plugins/jobtypes/
    [yinzhengjie@s101 ~]$ 
    编辑“azkaban.properties” 配置文件,然后需要重启Azkaban服务!

    3>.

    4>.

  • 相关阅读:
    [one day one question] safari缓存太厉害
    对工厂方法模式的一些思考(2)
    对工厂方法模式的一些思考(java语法表示)
    [选译]MySQL5.7以上Zip版官方安装文档
    clojure 使用阿里云仓库
    对jbox2d引擎的一些回顾与思考(swing实现demo)
    定位
    空白空间及溢出的处理
    BFC
    高度自适应
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/9221131.html
Copyright © 2011-2022 走看看