Hadoop - Azkaban 作业调度
1.概述
在调度 Hadoop 的相关作业时,有以下几种方式:
- 基于 Linux 系统级别的 Crontab。
- Java 应用级别的 Quartz。
- 第三方的调度系统。
- 自行开发 Hadoop 应用调度系统。
对于前两种,使用 Crontab 和 Quartz 是基本可以满足业务需求,但有其弊端。在 Job 数量庞大的情况下,Crontab 脚本的编写,变得异常复杂。其调度的过程也不能透明化,让管理变得困难。Quartz 虽然不用编写脚本,实现对应的调度 API 即可,然其调度过程不透明,不涵盖 Job 运行详情。需自行开发其功能。
因而,第三方的调度系统便应运而生了。在《Hadoop - 任务调度系统比较》一文中,介绍第三方调度系统之间的差异。这里笔者就不多赘述了。本篇博文,笔者给大家介绍 Azkaban 的相关使用心得,以及在使用中遇到的种种问题和解决思路。
2.内容
Azkaban 托管在 Github 上,属于开源产品。它由以下几部分组成:
- Web Server
- Executor Server
- MySQL
- Plugins(HDFS,JobType,HadoopSecurityManager,JobSummary,PigVisualizer,Reportal)
其各个模块的功能,在《Hadoop - 任务调度系统比较》中有对应的介绍,这里就不多赘述了。
2.1 How to use
在介绍完其核心模块后,我们如何使用这样一个调度系统,来调度我们所编写好的应用。下面,笔者将详细为大家介绍如何来完成这部分工作。
首先,Azkaban 是一个独立的系统,不需要依赖 Hadoop 集群环境。我们可以用单独的节点来构建这样一个调度系统。但是根据系统本身的需要,依赖以下环境:
- JDK
- MySQL
在准备完成以上依赖环境后,我们可以构建这样一个调度系统。在[官网]上下载二进制安装包。官网更新的二进制安装包比 Github 发布的较低,若需要使用新版本的 Azkaban ,可在 Github 上下载。
在准备好安装包后,我们开始去部署相关安装包。
2.2 How to install
2.2.1 DB Setup
首先,我们要在 MySQL 中新建 Azkaban 的数据库,操作内容如下所示:
1 | mysql> CREATE DATABASE azkaban; |
然后,我们创建所需要的表,内容如下:
1 | mysql>source ${AZKABAN_HOME}/sql/ create - all -sql-2.5.0.sql; |
SQL 文件在你安装包 azkaban-sql-script-2.5.0.tar.gz 中,找到 create-all-sql-2.5.0.sql 执行即可。执行成功后,会在 Azkaban 的数据库下,生成以下表:
2.2.2 Web Server Setup
接下来是安装 Web Server,解压其安装包,然后在 conf 目录下配置相关文件即可:
- azkaban.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #Azkaban Personalization Settings azkaban.name=Test azkaban.label=My Local Azkaban azkaban.color= #FF3601 azkaban.default.servlet.path= /index web.resource. dir = /home/hadoop/azkaban/server/web/web/ #default.timezone.id=America/Los_Angeles default.timezone. id =Asia /Shanghai #Azkaban UserManager class user.manager.class=azkaban.user.XmlUserManager user.manager.xml. file = /home/hadoop/azkaban/server/web/conf/azkaban-users .xml #Loader for projects executor.global.properties=conf /global .properties azkaban.project. dir =projects #plugins viewer.plugin. dir = /home/hadoop/azkaban/server/web/plugins/viewer/hdfs #viewer.plugin.dir=hdfs #viewer.plugins=hdfs database. type =mysql mysql.port=3306 mysql.host=nna mysql.database=azkaban mysql.user=root mysql.password=root mysql.numconnections=100 # Velocity dev mode velocity.dev.mode= false # Azkaban Jetty server properties. jetty.maxThreads=25 jetty.ssl.port=8443 jetty.port=8081 jetty.keystore= /home/hadoop/azkaban/server/web/conf/keystore jetty.password=password jetty.keypassword=password jetty.truststore= /home/hadoop/azkaban/server/web/conf/keystore jetty.trustpassword=password # Azkaban Executor settings executor.port=12321 # mail settings mail.user=your_mail_server@example.com mail. password=xxxxx lockdown.create.projects= false cache.directory=cache |
另外,Azkaban 需要使用到 KeyStore,在 ${AZKABAN_WEB_SERVER}/conf 下运行如下命令,内容如下所示:
1 | keytool -keystore keystore - alias azkaban -genkey -keyalg RSA |
启动之前先在 ${AZKABAN_WEB_SERVER} 目录下创建 logs 目录,进入 ${AZKABAN_WEB_SERVER} 目录,运行如下命令:
1 | .. /bin/azkaban-web-start |
成功启动,出现以下截图信息:
然后,输入在浏览器中 https://your_host:8443 出现以下界面:
接着输入用户名和密码:azkaban/azkaban 便可进入到调度系统中。
2.2.3 Executor Setup
Web Server 只是提供可视化,要想调度我们所编写的应用,需要依赖 Executor 服务。在 ${AZKABAN_EXECUTOR}/conf 下配置以下内容:
- azkaban.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #Azkaban default.timezone. id =America /Los_Angeles # Azkaban JobTypes Plugins azkaban.jobtype.plugin. dir =plugins /jobtypes #Loader for projects executor.global.properties=conf /global .properties azkaban.project. dir =projects database. type =mysql mysql.port=3306 mysql.host=nna mysql.database=azkaban mysql.user=root mysql.password=root mysql.numconnections=100 # Azkaban Executor settings executor.maxThreads=50 executor.port=12321 executor.flow.threads=30 |
然后执行以下命令即可:
1 | azkaban-executor-start.sh |
3.Flow
下面给大家介绍使用流程,首先,我们在 Web Server 的 Web Console 上创建一个项目,如下图所示:
然后,点击上传按钮,将我们编写好的应用进行打包上传。这里 WordCount 为例子。如下图所示:
在 WordCount.zip 文件中,包含两个文件,一个是我们编写需要执行的 JAR 文件,另一个是对 JAR 文件进行描述的 Job 文件,即:WordCount.job,其内容涉及如下:
1 2 | type =javaprocess java.class=cn.java.Hello |
这里笔者只是做了最小化配置,指明执行类型,和 Java 的 MainClass。
在 Executor Flow 中可以设置,告警通知者,在执行完成,或是失败的时候通知应用开发者,让其知晓执行进度,如下所示:
如上图,我们点击 Schedule 按钮,可以设置调度的时间。如下图所示:
在调度模块,现实该项目任务的调度信息,如下图所示:
在上图中,我们还可以设置 SLA 告警模块,在执行 Job 的过程中,若是任务超出限定时间,会将告警信息通知所这是的人。如下图所示:
另外,我们可以在 Executing 模块查看正在执行的 Job,在 History 模块下可以查看已执行完成的 Job。若是需要使用 Azkaban 来查看 HDFS 文件系统的结构目录,添加对应的插件即可。这里就不多赘述了。
4.总结
这里需要注意的是,由于我们所编写的应用会上传到 MySQL 存储,这里需要设置 MySQL 的 max_allowed_packet 变量,在 /etc/my.cnf 中进行配置,内容如下所示:
1 2 | [mysqld] max_allowed_packet=1024M |
然后重启 MySQL 的服务即可。另外,官方发布的 Azkaban-2.5 版本,路径设置有问题,解决方式有两种:第一,按照错误提示,配置对应的路径;第二,修改源码中的路径读取代码,然后重新打包编译。
5.结束语
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Hadoop - Zeppelin 使用心得
1.概述 在编写 Flink,Spark,Hive 等相关作业时,要是能快速的将我们所编写的作业能可视化在我们面前,是件让人兴奋的时,如果能带上趋势功能就更好了。今天,给大家介绍这么一款工具。它就能满足上述要求,在使用了一段时间之后,这里给大家分享以下使用心得。 2.How to do 首先,我们来了解一下这款工具的背景及用途。Zeppelin 目前已托管于 Apache 基金会,但并未列为顶级项目,可以在其公布的 官网访问。它提供了一个非常友好的 WebUI 界面,操作相关指令。它可以用于做数据分析和可视化。其后面可以接入不同的数据处理引擎。包括 Flink,Spark,Hive 等。支持原生的 Scala,Shell,Markdown 等。 2.1 Install 对于 Zeppelin 而言,并不依赖 Hadoop 集群环境,我们可以部署到单独的节点上进行使用。首先我们使用以下地址获取安装包: http://zeppelin.incubator.apache.org/download.html 这里,有2种选择,其一,可以下载原文件,自行编译安装。其二,直接下载二进制文件进行安装...
- 下一篇
Hadoop - Kylin On OLAP
1.概述 Apache Kylin是一个开源的分布式分析引擎,提供SQL接口并且用于OLAP业务于Hadoop的大数据集上,该项目由eBay贡献于Apache。 2.What is Kylin 在使用一种模型,我们得知道她是干什么的,那么首先来看看Kylin的特性,其内容如下所示: 可扩展超快的OLAP引擎:Kylin是为减少在Hadoop上百亿级别数据查询延迟而设计的。 Hadoop ANSI SQL接口:Kylin为Hadoop提供标准的SQL,其支持大部分查询功能。 出色的交互式查询能力:通过Kylin,使用者可以于Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能。 多维度Cube:用户能够在Kylin里为百亿以上的数据集定义数据模型并构建Cube。 和BI工具无缝整合:Kylin提供与BI工具,如商业化的Tableau。另外,根据官方提供的信息也在后续逐步提供对其他工具的支持。 其他特性: 对Job的管理和监控 压缩和编码的支持 增量更新Cube 利用HBase Coprocessor去查询 基于HyperLogLog的Distinct Count近似算...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果