高可用Hadoop平台-Oozie工作流
1.概述
在开发Hadoop的相关应用使用,在业务不复杂,任务不多的情况下,我们可以直接使用Crontab去完成相关应用的调度。今天给大家介绍的是统一管理各种调度任务的系统,下面为今天分享的内容目录:
- 内容介绍
- Oozie Server
- 截图预览
下面开始今天的内容分享。
2.内容介绍
今天的内容不涉及Oozie的具体细节操作,它的工作流程在下一篇博客为大家详细介绍。今天主要给大家分享Oozie的作用,它的集成步骤等内容。
2.1 作用
Oozie它是一个开源的工作流调度系统,它可以管理逻辑复杂的多个Hadoop作业任务,按照指定的顺序将其进行协同工作。比如说,我们日常的工作场景:
- 收集数据到HDFS
- 编写MR去清洗数据,生成新的数据存放到指定的HDFS路径下
- 创建Hive表分区,并加载数据到对应的表分区
- 使用HQL进行业务指标统计,并将统计的结果输出到对应的Hive大表当中
- 对统计后的大表当中的数据进行数据导出共外界业务去调用使用
通过上述的日常工作流程,我们可以编写工作流系统,生成一个工作流实例,然后每天定时去运行实例即可。针对这样一种Hadoop的应用场景,Oozie能够简化我们的任务调度并执行。
2.2 基础环境
本次给大家分享的基础环境是:
Name | Value |
操作系统 | CentOS6.6 |
工作流 | Oozie4.2 |
Hadoop | 2.6 |
以上便是本篇博客需依赖的基础环境。另外还需要用到JDK,Maven,MySQL驱动文件等。
3.Oozie Server
Oozie Server能够为我们提供便捷的Job管理功能,可以通过其可视化界面去管理Job的运行状态,当然也支持构建复杂的Hadoop Job流程,各个Job之间的依赖关系可以通过工作流进行配置,由Oozie Server统一去执行。
3.1 依赖包准备
- Maven
下载安装Maven环境,命令如下所示:
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gztar -zxvf apache-maven-3.3.3-bin.tar.gz
接着添加环境变量,如下所示:
export M2_HOME=/home/hadoop/maven-3.3.3 export PATH=$PATH:$ES_HOME/bin
然后输入一下命令使之立即生效:
. /etc/profile
最后,我们输入 mvn -version 命令,若能现实对应的Maven版本号,即表示Maven环境集成OK。
- MySQL
关于 MySQL 数据库的安装配置较为简单,这里就不多做赘述了。
- Tomcat
由于Oozie会用其Web容器,这里需要安装Tomcat Web服务器,可以到Apache的官网下载对应的安装包,这里不多做赘述。
- ExtJS工具包
在可视化会依赖该工具包,所以这里我们需要下载其工具,下载地址我们可以在Oozie的DG_QuickStart页面找到,如下图所示:
地址如下所示:
wget http://dev.sencha.com/deploy/ext-2.2.zip
- Oozie
这里我们可以在Oozie的官网下载其安装包,下载地址:
wget http://mirrors.cnnic.cn/apache/oozie/4.2.0/oozie-4.2.0.tar.gz
3.2 Oozie集成
在准备好环境后,接下来,我们去集成Oozie。首先,我们将下载的Oozie安装包进行解压,然后,使用Maven命令对其进行打包。操作命令如下所示:
# 解压
tar -zxvf oozie-4.2.0.tar.gz# 进入
cd oozie-4.2.0# 打包
mvn clean package assembly:single -DskipTests
注意:这里需要对pom文件进行修改,将JDK、Hadoop、HBase、Hive等组件的版本号进行统一,与你使用的版本号一致即可。
成功后出现以下图所示:
生成的路径地址如下所示:
/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0
此时,我们修改Oozie的环境变量,如下所示:
export OOZIE_HOME=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0 export PATH=$PATH:$OOZIE_HOME/bin
接着,我们在$OOZIE_HOME目录下创建一个文件夹用于存放ExtJS和Hadoop的JAR文件,这里我们将前面下载的ExtJS的压 缩包和Hadoop的Share目录下的JAR文件拷贝到libext文件夹下即可。由于,我们使用了MySQL来存储Oozie的元数据,所以需要用到 MySQL的驱动包,因而,我们需要将MySQL的驱动包拷贝到libext目录下。
在准备完这些后,下面我们开始安装,命令如下所示:
# 进入$OOZIE_HOME/bin目录 ./oozie-setup.sh prepare-war
生成以下信息,表示成功,内容如下所示:
[hadoop@nna bin]$ ./oozie-setup.sh prepare-warsetting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/commons-configuration-1.6.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-auth-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-common-2.6.0-tests.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-hdfs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-hdfs-2.6.0-tests.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-hdfs-nfs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-app-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-core-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-hs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-hs-plugins-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-jobclient-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-client-shuffle-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-mapreduce-examples-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-nfs-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-api-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-applications-distributedshell-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-client-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-registry-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-applicationhistoryservice-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-common-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-nodemanager-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-resourcemanager-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-tests-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/hadoop-yarn-server-web-proxy-2.6.0.jar
INFO: Adding extension: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/libext/mysql-connector-java-5.1.32-bin.jarNew Oozie WAR file with added 'ExtJS library, JARs' at /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/webapps/oozie.warINFO: Oozie is ready to be started
若失败,可根据提示做对应的处理。
这样,我们在/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/webapps目录下就生成了oozie.war文件。
3.3 配置Oozie
我们在$OOZIE_HOME/conf目录下修改oozie-site.xml文件,内容如下所示:
<property><name>oozie.service.JPAService.jdbc.driver</name><value>com.mysql.jdbc.Driver</value><description>JDBC driver class. </description></property><property><name>oozie.service.JPAService.jdbc.url</name><value>jdbc:mysql://nna:3306/oozie</value><description>JDBC URL.</description></property><property><name>oozie.service.JPAService.jdbc.username</name><value>root</value><description>DB user name.</description></property><property><name>oozie.service.JPAService.jdbc.password</name><value>root</value><description>DB user password.</description> </property>
这里我们使用手动去创建数据库,oozie.service.JPAService.create.db.schema若为true属性,即表示去自动创建。手动创建脚本如下所示:
CREATE DATABASE oozie; GRANT ALL ON oozie.* TO 'root'@'nna' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;
然后,我们使用以下命令,生成数据表:
#在$OOZIE_HOME/bin目录下操作 ./ooziedb.sh create -sqlfile oozie.sql -run
生成以下内容:
[hadoop@nna bin]$ ./ooziedb.sh create -sqlfile oozie.sql -runsetting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"Validate DB Connection
DONE
DB schema does not exist
Check OOZIE_SYS table does not exist
DONE
Create SQL schema
DONE
Create OOZIE_SYS table
DONEOozie DB has been created for Oozie version '4.2.0'The SQL commands have been written to: oozie.sql
若执行正常,会生成oozie.sql的脚本,如下图所示:
3.4 启动
接下来,我们去启动Oozie,命令如下所示:
# 在$OOZIE_HOME/bin目录下 ./oozie-start.sh
正常启动内容如下所示:
[hadoop@nna bin]$ ./oozie-start.sh
WARN: Use of this script is deprecated; use 'oozied.sh start' insteadSetting OOZIE_HOME: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0
Setting OOZIE_CONFIG: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf
Sourcing: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf/oozie-env.shsetting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
Setting OOZIE_CONFIG_FILE: oozie-site.xml
Setting OOZIE_DATA: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/data
Setting OOZIE_LOG: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs
Setting OOZIE_LOG4J_FILE: oozie-log4j.properties
Setting OOZIE_LOG4J_RELOAD: 10
Setting OOZIE_HTTP_HOSTNAME: nna
Setting OOZIE_HTTP_PORT: 11000
Setting OOZIE_ADMIN_PORT: 11001
Setting OOZIE_HTTPS_PORT: 11443
Setting OOZIE_BASE_URL: http://nna:11000/oozie
Setting CATALINA_BASE: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Setting OOZIE_HTTPS_KEYSTORE_FILE: /home/hadoop/.keystore
Setting OOZIE_HTTPS_KEYSTORE_PASS: password
Setting OOZIE_INSTANCE_ID: nna
Setting CATALINA_OUT: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs/catalina.out
Setting CATALINA_PID: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp/oozie.pidUsing CATALINA_OPTS: -Xmx1024m -Dderby.stream.error.file=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs/derby.log
Adding to CATALINA_OPTS: -Doozie.home.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0 -Doozie.config.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/conf -Doozie.log.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/logs -Doozie.data.dir=/home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/data -Doozie.instance.id=nna -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload=10 -Doozie.http.hostname=nna -Doozie.admin.port=11001 -Doozie.http.port=11000 -Doozie.https.port=11443 -Doozie.base.url=http://nna:11000/oozie -Doozie.https.keystore.file=/home/hadoop/.keystore -Doozie.https.keystore.pass=password -Djava.library.path=Setting up oozie DBsetting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"Validate DB Connection
DONE
DB schema existsThe SQL commands have been written to: /tmp/ooziedb-9100396876446618885.sqlUsing CATALINA_BASE: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Using CATALINA_HOME: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server
Using CATALINA_TMPDIR: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp
Using JRE_HOME: /usr/java/jdk1.7
Using CLASSPATH: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/bin/bootstrap.jar
Using CATALINA_PID: /home/hadoop/oozie-4.2.0/distro/target/oozie-4.2.0-distro/oozie-4.2.0/oozie-server/temp/oozie.pid
4.截图预览
然后,我们可以输入浏览地址,查看是否启动正常,如下图所示:
5.总结
关于Oozie的集成,会有点繁琐,本篇博客只是针对单独的Oozie去集成,后续博客会给大家介绍Oozie集成到Hadoop集群,以及相关工作流的用法介绍等。
6.结束语
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
高可用Hadoop平台-Oozie工作流相关推荐
- 高可用Hadoop平台-Oozie工作流之Hadoop调度
1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...
- 高可用Hadoop平台-答疑篇
1.概述 这篇博客不涉及到具体的编码,只是解答最近一些朋友心中的疑惑.最近,一些朋友和网友纷纷私密我,我总结了一下,疑问大致包含以下几点: 我学 Hadoop 后能从事什么岗位? 在遇到问题,我该如何 ...
- HA高可用HADOOP生态群系统搭建
1 绪论 在 Hadoop 1.X版本中,NameNode是整个HDFS集群的单点故障(single point of failure,SPOF):每一个HDFS集群只能有一个NameNode节点,一 ...
- greenplum配置高可用_高可用hadoop集群配置就收藏这一篇,动手搭建Hadoop(5)
01 ssh免密安装 02 jdk安装 03 hadoop伪分布式安装 04 hadoop全分布式 完成了前面四步,现在做hadoop的高可用.其实和之前的lvs的高可用差不多的.如果我们有两个nam ...
- aauto+java_高可用数据采集平台(如何玩转3门语言php+.net+aauto)
吐槽下:本人主程是PHP,团队里面也没有精通.net的人才,为了解决这个平台方案,还是费了一部分劲. 新年了,希望有个新的开始.技术+团队管理都有新的突破吧,在新的一年对自己好些,不能再继续搞基下去. ...
- 大数据学习笔记31:Java程序访问高可用Hadoop集群
文章目录 一.提出任务 1.编写Java程序在HDFS上创建目录 2.编写MapReduce程序进行词频统计 二.准备工作 1.启动hadoop集群 (1)启动ZooKeeper集群 (2)启动Jou ...
- 大数据学习笔记30:搭建高可用Hadoop集群
文章目录 一.准备工作 1.由CentOS7克隆三个虚拟机 2.设置虚拟机主机名 (1)设置虚拟机master主机名 (2)设置虚拟机slave1主机名 (3)设置虚拟机slave2主机名 (4)重启 ...
- tcpdump如何判断丢包_亿级规模的高可用微服务系统,如何轻松设计?
" 说到大规模微服务系统,往往是一些 7*24 时不间断运行的在线系统.那么如何设计一个大规模的微服务系统呢? 图片来自 Pexels 这样的系统往往有以下的要求: 高可用.这类的系统往往需 ...
- 蚂蚁集团俞仁杰:金融级云原生之多活容器集群高可用建设实践
本文整理自蚂蚁集团金融云产品技术部SOFAStack产品专家俞仁杰在2020 GIDC全球互联网数据大会的分享.详细讲解了云原生架构下的多活高可用平台和产品建设相关经验和观点. 过去几年是云原生理念高 ...
最新文章
- 简单的视频采集demo
- Android中ListView与RadioButton结合----自定义单选列表
- slackware安装mysql_slackware系统安装二
- Elasticsearch2.x Breaking changes
- 虎贲计算机二级视频解析百度云,详解虎贲T7520:5G为什么需要全场景覆盖增强技术?...
- ASP.NET Core 使用MySQL(Database First)
- Find the median(线段树离散化+区间更新)
- redis3.0搭建分布式集群
- python字符串查找的四种方法_Python中的字符串查找操作方法总结
- 驱动中的C语言----指针与指针初使化
- sonar扫描android项目配置 mac版
- 《项目百态》读感系列”玩的就是心跳“
- IDL | 语句练习
- MATLAB--四种取整函数
- displayTag使用详解
- C语言自学笔记(16)
- 立而不破,华为云注解政企智能升级的“道与术”
- 关键词排名查询-各大搜索引擎批量实时关键词排名查询
- 关于 Android 的 OMA DRM 验证
- 小程序 打开地图导航
热门文章
- RHEL5系统X桌面中文乱码解决办法
- [ZZ]风险评估和最佳实践
- W3C XSL Transformations (XSLT) Version 2.0 翻译计划
- 验证ArrayList插入同样数据使用指定容量和默认容量的效率
- group_concat
- 纯前端H5小应用_localStorage存储
- php isset()与empty()详解
- nginx启动报错(1113: No mapping for the Unicode character exists in the target multi-byte code page)...
- 转:让kindle更好的支持pdf
- jQuery 之正则表达式篇