azkaban调度python,azkaban调度spark
chanong
|阿兹卡班
工作流程调度系统
由多个任务单元组成
Shell脚本程序、Java程序、mapreduce程序、hive脚本等。
每个任务单元之间存在时间序列和依赖性。
· 为了正确组织如此复杂的执行计划,需要工作流调度系统来调度执行。
- 某业务系统每天产生20G的原始数据,每天需要处理,处理流程如下。
· 1)首先将原始数据通过Hadoop上传到HDFS(HDFS操作)。
· 2)使用MapReduce清理原始数据(MapReduce操作)。
· 3)将清洗后的数据导入到hive表中(hive导入操作)。
· 4)对Hive中多个表的数据进行JOIN操作,得到Hive中的明细表(创建中间表)。
· 5)通过详细的表统计和分析,获取结果报告信息(Hive查询操作)。
·
·
适用场景
(2) 任务取决于(1) 任务的结果,(3) 任务取决于(2) 任务的结果,(4) 任务取决于(3) 任务的结果,( 5)任务(3)取决于任务的结果。 (4)任务结果。常见的方法是首先执行(1),然后执行(2),然后再次执行(3) (4) (5)。
什么是阿兹卡班
· Azkaban是Linkedin推出的批量工作流任务调度器。它主要用于在工作流程中按特定顺序运行一组作业和流程。它的配置是通过简单的key: 值对来设置依赖关系来完成的。
· Azkaban 使用作业配置文件来建立任务之间的依赖关系,并提供易于使用的Web 用户界面来维护和跟踪工作流程。
特征
1)兼容任何版本的Hadoop
2) 易于使用的网络用户界面
3) 轻松上传工作流程
4)方便设置任务之间的关系
5) 安排工作流程
6)模块化、可插拔的插件机制
7)认证/授权(授权工作)
8) 能够终止和重新启动工作流程
9)发送有关失败和成功的电子邮件提醒
通用工作流程调度系统
1)简单的任务调度:直接使用crontab实现。
2)复杂任务的调度:开发调度平台或者使用现成的开源调度系统,如ooize、azkaban等。
建筑学
· AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理器,对用户进行登录认证,负责项目管理,定期运行工作流,跟踪工作流执行的任务进度和顺序。
· AzkabanExecutorServer:负责提交并执行具体的工作流程,通过mysql数据库协调任务的执行。
· 关系数据库(MySQL):存储大部分执行流程状态。 AzkabanWebServer 和AzkabanExecutorServer 都需要访问数据库。
安装
下载地址:链接:https://pan.baidu.com/s/1QvDgNc4SP5TTX2SAvodhcg 提取码:ntfh 复制此内容后,打开百度网盘手机应用程序,让您的操作更加方便。
安装Azkaban · 在/opt/module/目录下创建azkaban目录
· [atguigu@hadoop102 模块]$ mkdir azkaban
· azkaban-web-server-2.5.0.tar.gz、azkaban-executor-server-2.5.0.tar.gz、azkaban-sql-script-2.5.0.tar.gz 解压到/opt/module/azkaban 。以下内容
· [atguigu@hadoop102 软件]$ tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /opt/module/azkaban/[atguigu@hadoop102 软件]$ tar -zxvf azkaban-executor-server-2.5 .0.tar.gz -C /opt/module/azkaban/[atguigu@hadoop102 软件]$ tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C /opt/module/azkaban/
· 重命名提取的文件
· [atguigu@hadoop102 azkaban]$ mv azkaban-web-2.5.0/服务器[atguigu@hadoop102 azkaban]$ mv azkaban-executor-2.5.0/执行器
· 导入Azkaban脚本
· 进入mysql,创建azkaban数据库,将解压后的脚本导入azkaban数据库。
· [atguigu@hadoop102 azkaban]$ mysql -uroot -p000000mysql 创建数据库azkaban; 使用mysql azkaban; mysql 源/opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sqla
· 源代码后跟一个.sql 文件,用于对.sql 文件中的SQL 语句进行批处理。
· 生成密钥对和证书· Keytool 是一个Java 数据证书管理工具,允许用户管理自己的公钥/私钥对和关联证书。
· -keystore 指定密钥库的名称和位置(生成的各种信息保存在.keystore 文件中)。
· -genkey(或-genkeypair)生成密钥对
· -alias 指定生成的密钥对的别名。否则,默认值为mykey。
· -keyalg 指定密钥算法RSA/DSA。默认为DSA。
· 生成keystore密码以及keystore对应的信息
· [atguigu@hadoop102 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg 请输入您的RSA 密钥库密码: 请再次输入您的新密码: 您的名字和姓氏是什么[未知] : 您的名字是什么组织单位?[未知]: 您的组织的名称是什么?[未知]: 您所在的城市或地区的名称是什么?[未知]: 您所在的州/城市/地区的名称是什么?[未知]是什么: 该组织的两个字母国家/地区代码[未知] : CN=未知、OU=未知、O=未知、L=未知、ST=未知、C=未知这是否正确?[否] : y 输入的密钥密码(如果相同)输入密钥库密码并按Enter): 再次输入新密码:
·注意:
· 密钥库密码长度必须至少为6 个字符,可以是纯数字、字母或数字和字母的组合。
· 密钥库密码必须与密钥相同,以便于记忆。
· 2) 将密钥库复制到azkaban Web 服务器的根目录。
· [atguigu@hadoop102 azkaban]$ mv keystore /opt/module/azkaban/server/
· 配置时间同步· 首先在服务器节点上配置时区
· 如果/usr/share/zoneinfo/目录下不存在时区配置文件Asia/Shanghai,则必须使用tzselect生成。
· [atguigu@hadoop102 azkaban]$ 请标识位置,以便我们正确设置tzselect 时区规则。选择大陆或海洋。 1) 非洲2) 美洲3) 南极洲4) 北冰洋5) 亚洲6) 大西洋7) 澳大利亚8) 欧洲9) 印度洋10) 太平洋11) 无- 我想使用Posix TZ 格式指定时区。 # 请选择5 个国家。 1) 阿富汗18) 以色列35) 巴勒斯坦2) 亚美尼亚19) 日本36 ) 菲律宾3) 阿塞拜疆20) 约旦37) 卡塔尔4) 巴林21) 哈萨克斯坦38) 俄罗斯5) 孟加拉国22) 韩国(北部) 39) 沙特阿拉伯6)不丹23)韩国(南部)40)新加坡7)文莱24)科威特41)斯里兰卡8)柬埔寨25)吉尔吉斯斯坦42)叙利亚9)中国26)老挝43)台湾10)塞浦路斯27)黎巴嫩44)塔吉克斯坦11) 东帝汶28) 澳门45) 泰国12) 格鲁吉亚29) 马来西亚46) 土库曼斯坦13) 香港30) 蒙古47) 阿拉伯联合酋长国14) 印度31) 缅甸48) 乌兹别克斯坦15) 印度尼西亚32) 尼泊尔49 ) 越南16) 伊朗33) 阿曼50) 也门17) 伊拉克34) 巴基斯坦# 9 选择以下时区之一1) 北京时间2) 新疆时间# 1 以下信息为2018 年。以上信息1) 是2)否# 1要使此更改永久生效,请使用TZ='Asia/Shanghai' 行;将TZ 导出到主目录中的文件“.profile”;然后注销并再次登录。 TZ 值将再次显示。这次/usr/bin/tzselect 命令将显示在标准输出上,以便您可以在shell 脚本中使用该命令:Asia/Shanghai
· 复制时区文件以覆盖系统的本地时区设置。
· atguigu@hadoop102 azkaban]$ cp /usr/share/zoneinfo/Asia/上海/etc/localtime
· 集群时间同步(同时发送到三个窗口)
· [atguigu@hadoop102 azkaban]$ sudo date -s '2018-10-18 16:39:30'
·设定文件
2.5.1 Web服务器设置
· 1)进入azkaban Web服务器安装目录的conf目录,打开azkaban.properties文件。
· [atguigu@hadoop102 conf]$ pwd/opt/module/azkaban/server/conf[atguigu@hadoop102 conf]$ vim azkaban.properties
· 按照以下配置修改azkaban.properties文件。
· #Azkaban 个性化# 服务器UI 名称。用于服务器上方显示的名称。 azkaban.name=Test# 描述azkaban.label=我的本地azkaban#UI 颜色azkaban.color=#FF3601azkaban.default.servlet.path=/index # 默认Web服务器存放Web文件的目录web.resource.dir=/opt /module/azkaban/server/web/#默认时区改为Asia/Shanghai,默认为USAdefault.timezone .id=Asia/Shanghai#Azkaban UserManager classuser.manager.class=azkaban.user. XmlUserManager#用户权限管理的默认类(绝对路径) user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban -users.xml#项目加载器#全局配置文件位置(绝对路径) executor.global.properties=/opt/module/azkaban/executor/conf/global.propertiesazkaban.project.dir=projects#数据库类型database.type=mysql#端口号mysql.port=3306#数据库连接IPmysql.host=hadoop102#数据库实例名称mysql.database=azkaban #数据库用户名mysql.user=root#数据库密码mysql.password=000000#最大连接数mysql.numconnections=100#Velocity dev modevelocity.dev .mode=false#Azkaban Jetty 服务器属性.# Jetty 服务器属性.#最大连接数线程数jetty.maxThreads=25#Jetty SSL 端口jetty.ssl.port=8443#Jetty 端口jetty.port=8081#SSL 文件名(绝对路径)jetty.keystore=/opt/module /azkaban/server/keystore# SSL文件密码jetty.password=000000#Jetty主密码与keystore文件jetty相同。 keypassword=000000#SSL 文件名(绝对路径) jetty.truststore=/opt/module/azkaban/server/keystore#SSL 文件密码jetty.trustpassword=000000#Azkaban Executor settingsexecutor.port=12321#mail settingsmail.sender=mail 。主机=job.failure.email=job.success.email=lockdown.create.projects=falsecache.directory=缓存
Web服务器用户设置
· 在azkaban Web服务器安装目录的conf目录下,按照如下配置修改azkaban-users.xml文件,添加管理员用户。
· atguigu@hadoop102 conf]$ vim azkaban-users.xml
· 执行服务器配置
· 进入执行服务器安装目录conf,打开azkaban.properties。
· [atguigu@hadoop102 conf]$ pwd/opt/module/azkaban/executor/conf[atguigu@hadoop102 conf]$ vim azkaban.properties
· 按照以下配置修改azkaban.properties文件。
· #Azkaban#Timezonedefault.timezone.id=Asia/Shanghai#Azkaban JobTypes Plugins#jobtype 插件位置azkaban.jobtype.plugin.dir=plugins/jobtypes#项目加载器executor.global.properties=/opt/module/azkaban/executor/conf/global.propertiesazkaban.project.dir=projectsdatabase.type=mysqlmysql.port=3306mysql.host=hadoop102mysql.database=azkabanmysql.user=rootmysql.password=000000mysql.numconnections=100#Azkaban执行器设置#执行器最大线程数。 maxThreads=50#端口号(如果更改,请匹配您的Web服务) executor.port=12321#线程数executor.flow.threads=30
· 启动执行器服务器
- 在执行器服务器目录中执行启动命令。
· [atguigu@hadoop102执行器]$ pwd/opt/module/azkaban/executor[atguigu@hadoop102执行器]$ bin/azkaban-executor-start.sh
启动网络服务器
· [atguigu@hadoop102 服务器]$ pwd/opt/module/azkaban/server[atguigu@hadoop102 服务器]$ bin/azkaban-web-start.sh
· 先运行执行器,再运行Web,防止Web服务器因缺少执行器而无法启动。
· [atguigu@hadoop102 服务器]$ jps
· 3601 Azkaban执行器服务器
5880日元
· 3661 Azkaban 网络服务器
· 展示柜
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·








