Hadoop生态圈-Azkaban部署实战

                                      作者:尹正杰

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

 一.Azkaban部署流程

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

[yinzhengjie@s101 data]$ pwd
/home/yinzhengjie/data
[yinzhengjie@s101 data]$ ll
total
-rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-exec-server-3.46..tar.gz
-rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-hadoop-security-plugin-3.46..tar.gz
-rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-plugins-master.zip
-rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-solo-server-3.46..tar.gz
-rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-web-server-3.46..tar.gz
-rw-r--r-- yinzhengjie yinzhengjie Nov create-all-sql-3.46..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..tar.gz -C /soft/azkaban/
[yinzhengjie@s101 data]$ tar -xzf azkaban-web-server-3.46..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
Server version: 5.6. MySQL Community Server (GPL) Copyright (c) , , 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, row affected (0.00 sec) mysql> use yinzhengjie_azkaban;
Database changed
mysql> source /home/yinzhengjie/data/create-all-sql-3.46..sql
Query OK, rows affected (0.03 sec) Query OK, rows affected (0.00 sec) Query OK, rows affected (0.01 sec) Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.01 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.01 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.06 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.13 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.22 sec) Query OK, rows affected (0.15 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.18 sec) Query OK, rows affected (0.13 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.17 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.03 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.06 sec) Query OK, rows affected (0.33 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.01 sec) Query OK, rows affected (0.01 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.22 sec) Query OK, rows affected (0.12 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.09 sec) Query OK, rows affected (0.10 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.17 sec) Query OK, rows affected (0.18 sec) Query OK, rows affected (0.14 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.12 sec) Query OK, rows affected (0.04 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.08 sec) Query OK, rows affected (0.17 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.16 sec) Query OK, rows affected (0.13 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.13 sec) Query OK, rows affected (0.10 sec)
Records: Duplicates: Warnings: Query OK, rows affected (0.04 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected, warning (0.00 sec) Query OK, rows affected (0.19 sec) Query OK, rows affected (0.23 sec) Query OK, rows affected (0.08 sec) Query OK, rows affected (0.13 sec) Query OK, rows affected (0.01 sec) Query OK, rows affected (0.06 sec) Query OK, rows affected (0.19 sec) Query OK, rows affected (0.27 sec) Query OK, rows affected (0.18 sec) Query OK, rows affected (0.16 sec) Query OK, rows affected (0.17 sec) Query OK, rows affected (0.00 sec) Query OK, 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-- yinzhengjie yinzhengjie Jun : keystore
[yinzhengjie@s101 data]$

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

[yinzhengjie@s101 data]$ ll | grep keystore
-rw-rw-r-- yinzhengjie yinzhengjie Jun : keystore
[yinzhengjie@s101 data]$ cp keystore /soft/azkaban/azkaban-web-server-3.46./
[yinzhengjie@s101 data]$

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

[yinzhengjie@s101 data]$ more /soft/azkaban/azkaban-web-server-3.46./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./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./conf/azkaban-users.xml #Loader for projects
# global配置文件所在位置
executor.global.properties=/soft/azkaban/azkaban-web-server-3.46./conf/global.properties
azkaban.project.dir=projects
#数据库类型
database.type=mysql
#端口号
mysql.port=
#数据库连接IP
mysql.host=s101
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=root
#数据库密码
mysql.password=yinzhengjie
#最大连接数
mysql.numconnections= # Velocity dev mode
#关闭快速开发模式
velocity.dev.mode=false
# Jetty服务器属性.
#最大线程数
jetty.maxThreads=
#Jetty SSL端口
jetty.ssl.port=
#Jetty端口
jetty.port=
#SSL文件名
jetty.keystore=keystore
#SSL文件密码
jetty.password=yinzhengjie
#Jetty主密码 与 keystore文件相同
jetty.keypassword=yinzhengjie
#SSL文件名
jetty.truststore=keystore
# SSL文件密码
jetty.trustpassword=yinzhengjie
# 执行服务器属性
#执行服务器端口
executor.port= # 邮件设置
#发送邮箱
mail.sender=xxxxxxxx@.com
#发送邮箱smtp地址
mail.host=smtp..com
#发送邮件时显示的名称
mail.user=xxxxxxxx
#邮箱密码
mail.password=**********
#任务失败时发送邮件的地址
job.failure.email=xxxxxxxx@.com
#任务成功时发送邮件的地址
job.success.email=xxxxxxxx@.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./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./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./conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/soft/azkaban/azkaban-web-server-3.46./conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=
mysql.host=s101
mysql.database=yinzhengjie_azkaban
mysql.user=root
mysql.password=yinzhengjie
mysql.numconnections=
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=
jetty.port=
# Azkaban Executor settings
executor.port=
# 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: -> proxy -> localhost:
# 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=
# azkaban.webserver.external_port=
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./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./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./conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/soft/azkaban/azkaban-web-server-3.46./conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=
mysql.host=s101
mysql.database=yinzhengjie_azkaban
mysql.user=root
mysql.password=yinzhengjie
mysql.numconnections=
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=
jetty.port=
# Azkaban Executor settings
executor.port=
# 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: -> proxy -> localhost:
# 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=
# azkaban.webserver.external_port=
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./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./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 ];then
echo "无效参数,用法为: $0 {start|stop}"
exit
fi #获取用户输入的命令
cmd=$
case $cmd in
start)
cd /soft/azkaban
/soft/azkaban/azkaban-web-server-3.46./bin/start-web.sh
;;
stop)
cd /soft/azkaban
/soft/azkaban/azkaban-web-server-3.46./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 ];then
echo "无效参数,用法为: $0 {start|stop}"
exit
fi #获取用户输入的命令
cmd=$
case $cmd in
start)
cd /soft/azkaban
/soft/azkaban/azkaban-exec-server-3.46./bin/start-exec.sh
;;
stop)
cd /soft/azkaban
/soft/azkaban/azkaban-exec-server-3.46./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
Jps
[yinzhengjie@s101 ~]$
[yinzhengjie@s101 ~]$ azweb.sh start
========= azweb start =============
[yinzhengjie@s101 ~]$ azexec.sh start
========= azexec start =============
[yinzhengjie@s101 ~]$ jps
AzkabanExecutorServer
AzkabanWebServer
Jps
[yinzhengjie@s101 ~]$ netstat -untalp | grep
(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 ::: :::* LISTEN /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>.

Hadoop生态圈-Azkaban部署实战的更多相关文章

  1. Hadoop生态圈-Oozie部署实战

    Hadoop生态圈-Oozie部署实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Oozie简介 1>.什么是Oozie Oozie英文翻译为:驯象人.一个基于工作流 ...

  2. Hadoop生态圈-Azkaban实战之Command类型执行指定脚本

    Hadoop生态圈-Azkaban实战之Command类型执行指定脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.服务端测试代码(别忘记添加权限哟!) [yinzh ...

  3. Hadoop生态圈-Azkaban实战之Command类型多job工作流flow

    Hadoop生态圈-Azkaban实战之Command类型多job工作流flow 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Azkaban内置的任务类型支持command.ja ...

  4. Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗

    Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你没有Hadoop集群的话也没有关系,我这里给出当时我 ...

  5. Hadoop生态圈-Azkaban实现hive脚本执行

    Hadoop生态圈-Azkaban实现hive脚本执行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客中在HDFS分布式系统取的数据,而这个数据的是有之前我通过MapRed ...

  6. Hadoop生态圈-Sqoop部署以及基本使用方法

    Hadoop生态圈-Sqoop部署以及基本使用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与 ...

  7. Hadoop生态圈-zookeeper完全分布式部署

    Hadoop生态圈-zookeeper完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客部署是建立在Hadoop高可用基础之上的,关于Hadoop高可用部署请参 ...

  8. Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署

    Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.CAS简介 CAS( ...

  9. Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行

    Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我的CDH5.15.1集群中,默 ...

随机推荐

  1. centos7 RabbitMQ部署

    一.RabbitMQ简单介绍在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务 ...

  2. 批量备份H3C交换机路由器配置

    第一种(使用ftp下载配置文件): #!/bin/bash datetime=`date +%Y%m%d` BAKTIME=`date +%Y%m%d%H%M%S` user="admin& ...

  3. 强化学习算法DQN

    1 DQN的引入 由于q_learning算法是一直更新一张q_table,在场景复杂的情况下,q_table就会大到内存处理的极限,而且在当时深度学习的火热,有人就会想到能不能将从深度学习中借鉴方法 ...

  4. python3与python2使用python原生SimpleHTTPRequestHandler

    python3 使用时如下: #!/usr/bin/env python3 #coding=utf-8 from http.server import SimpleHTTPRequestHandler ...

  5. JAVA每日一旅

    1.关于final关键字 final修饰的成员变量为基本数据类型时,在赋值之后无法改变.当final修饰的成员变量为引用数据类型时,在赋值后其指向地址无法改变,但是对象内容还是可以改变的. final ...

  6. 《Linux内核分析》第四周笔记 扒开系统调用的三层皮(上)

    扒开系统调用的三层皮(上) 一.用户态.内核态和中断 库函数将系统调用封装起来. 1.什么是用户态和内核态 一般现代CPU都有几种不同的指令执行级别. 在高执行级别下,代码可以执行特权指令,访问任意的 ...

  7. 20135202闫佳歆--week5 分析system_call中断处理过程--实验及总结

    week 5 实验:分析system_call中断处理过程 一.使用gdb跟踪分析一个系统调用内核函数(上周选择那一个系统调用)--getpid 复习视频: 如何实现? - 更新menu代码到最新版 ...

  8. spring-boot随笔

    配置了spring-boot-starter-web的依赖后,会自动添加tomcat和spring mvc的依赖,那么spring boot 会对tomcat和spring mvc进行自动配置 < ...

  9. 第二个Sprint冲刺第 八天(燃尽图)

    因为今天停电了,所以我们也休息一天!

  10. JavaMail实现邮箱之间发送邮件功能

    package com.minstone.message.util; import java.util.Date; import java.util.Properties; import javax. ...