1.概述

  在开发Hadoop的相关应用使用,在业务不复杂,任务不多的情况下,我们可以直接使用Crontab去完成相关应用的调度。今天给大家介绍的是统一管理各种调度任务的系统,下面为今天分享的内容目录:

  • 内容介绍
  • Oozie Server
  • 截图预览

  下面开始今天的内容分享。

2.内容介绍

  今天的内容不涉及Oozie的具体细节操作,它的工作流程在下一篇博客为大家详细介绍。今天主要给大家分享Oozie的作用,它的集成步骤等内容。

2.1 作用

  Oozie它是一个开源的工作流调度系统,它可以管理逻辑复杂的多个Hadoop作业任务,按照指定的顺序将其进行协同工作。比如说,我们日常的工作场景:

  1. 收集数据到HDFS
  2. 编写MR去清洗数据,生成新的数据存放到指定的HDFS路径下
  3. 创建Hive表分区,并加载数据到对应的表分区
  4. 使用HQL进行业务指标统计,并将统计的结果输出到对应的Hive大表当中
  5. 对统计后的大表当中的数据进行数据导出共外界业务去调用使用

  通过上述的日常工作流程,我们可以编写工作流系统,生成一个工作流实例,然后每天定时去运行实例即可。针对这样一种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环境,命令如下所示:

  1. wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz
  2.  
  3. tar -zxvf apache-maven-3.3.-bin.tar.gz

  接着添加环境变量,如下所示:

  1. export M2_HOME=/home/hadoop/maven-3.3.
  2. export PATH=$PATH:$ES_HOME/bin

  然后输入一下命令使之立即生效:

  1. . /etc/profile

  最后,我们输入 mvn -version 命令,若能现实对应的Maven版本号,即表示Maven环境集成OK。

  • MySQL

  关于 MySQL 数据库的安装配置较为简单,这里就不多做赘述了。

  • Tomcat

  由于Oozie会用其Web容器,这里需要安装Tomcat Web服务器,可以到Apache的官网下载对应的安装包,这里不多做赘述。

  • ExtJS工具包

  在可视化会依赖该工具包,所以这里我们需要下载其工具,下载地址我们可以在Oozie的DG_QuickStart页面找到,如下图所示:

  地址如下所示:

  1. wget http://dev.sencha.com/deploy/ext-2.2.zip
  • Oozie

  这里我们可以在Oozie的官网下载其安装包,下载地址:

  1. wget http://mirrors.cnnic.cn/apache/oozie/4.2.0/oozie-4.2.0.tar.gz

3.2 Oozie集成

  在准备好环境后,接下来,我们去集成Oozie。首先,我们将下载的Oozie安装包进行解压,然后,使用Maven命令对其进行打包。操作命令如下所示:

  1. # 解压
  2. tar -zxvf oozie-4.2..tar.gz
  3.  
  4. # 进入
  5. cd oozie-4.2.
  6.  
  7. # 打包
  8. mvn clean package assembly:single -DskipTests

  注意:这里需要对pom文件进行修改,将JDK、Hadoop、HBase、Hive等组件的版本号进行统一,与你使用的版本号一致即可。

  成功后出现以下图所示:

  生成的路径地址如下所示:

  1. /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2.

  此时,我们修改Oozie的环境变量,如下所示:

  1. export OOZIE_HOME=/home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2.
  2. export PATH=$PATH:$OOZIE_HOME/bin

  接着,我们在$OOZIE_HOME目录下创建一个文件夹用于存放ExtJS和Hadoop的JAR文件,这里我们将前面下载的ExtJS的压缩包和Hadoop的Share目录下的JAR文件拷贝到libext文件夹下即可。由于,我们使用了MySQL来存储Oozie的元数据,所以需要用到MySQL的驱动包,因而,我们需要将MySQL的驱动包拷贝到libext目录下。

  在准备完这些后,下面我们开始安装,命令如下所示:

  1. # 进入$OOZIE_HOME/bin目录
  2. ./oozie-setup.sh prepare-war

  生成以下信息,表示成功,内容如下所示:

  1. [hadoop@nna bin]$ ./oozie-setup.sh prepare-war
  2. setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
  3.  
  4. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/commons-configuration-1.6.jar
  5. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-auth-2.6..jar
  6. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-common-2.6..jar
  7. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-common-2.6.-tests.jar
  8. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-hdfs-2.6..jar
  9. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-hdfs-2.6.-tests.jar
  10. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-hdfs-nfs-2.6..jar
  11. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-app-2.6..jar
  12. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-common-2.6..jar
  13. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-core-2.6..jar
  14. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-hs-2.6..jar
  15. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-hs-plugins-2.6..jar
  16. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-jobclient-2.6..jar
  17. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-jobclient-2.6.-tests.jar
  18. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-client-shuffle-2.6..jar
  19. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-mapreduce-examples-2.6..jar
  20. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-nfs-2.6..jar
  21. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-api-2.6..jar
  22. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-applications-distributedshell-2.6..jar
  23. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-applications-unmanaged-am-launcher-2.6..jar
  24. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-client-2.6..jar
  25. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-common-2.6..jar
  26. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-registry-2.6..jar
  27. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-server-applicationhistoryservice-2.6..jar
  28. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-server-common-2.6..jar
  29. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-server-nodemanager-2.6..jar
  30. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-server-resourcemanager-2.6..jar
  31. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-server-tests-2.6..jar
  32. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/hadoop-yarn-server-web-proxy-2.6..jar
  33. INFO: Adding extension: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./libext/mysql-connector-java-5.1.-bin.jar
  34.  
  35. New Oozie WAR file with added 'ExtJS library, JARs' at /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server/webapps/oozie.war
  36.  
  37. INFO: 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文件,内容如下所示:

  1. <property>
  2. <name>oozie.service.JPAService.jdbc.driver</name>
  3. <value>com.mysql.jdbc.Driver</value>
  4. <description>JDBC driver class. </description>
  5. </property>
  6. <property>
  7. <name>oozie.service.JPAService.jdbc.url</name>
  8. <value>jdbc:mysql://nna:3306/oozie</value>
  9. <description>JDBC URL.</description>
  10. </property>
  11. <property>
  12. <name>oozie.service.JPAService.jdbc.username</name>
  13. <value>root</value>
  14. <description>DB user name.</description>
  15. </property>
  16. <property>
  17. <name>oozie.service.JPAService.jdbc.password</name>
  18. <value>root</value>
  19. <description>DB user password.</description>
       </property>

  这里我们使用手动去创建数据库,oozie.service.JPAService.create.db.schema若为true属性,即表示去自动创建。手动创建脚本如下所示:

  1. CREATE DATABASE oozie;
  2. GRANT ALL ON oozie.* TO 'root'@'nna' IDENTIFIED BY 'root';
  3. FLUSH PRIVILEGES;

  然后,我们使用以下命令,生成数据表:

  1. #在$OOZIE_HOME/bin目录下操作
  2. ./ooziedb.sh create -sqlfile oozie.sql -run

  生成以下内容:

  1. [hadoop@nna bin]$ ./ooziedb.sh create -sqlfile oozie.sql -run
  2. setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
  3.  
  4. Validate DB Connection
  5. DONE
  6. DB schema does not exist
  7. Check OOZIE_SYS table does not exist
  8. DONE
  9. Create SQL schema
  10. DONE
  11. Create OOZIE_SYS table
  12. DONE
  13.  
  14. Oozie DB has been created for Oozie version '4.2.0'
  15.  
  16. The SQL commands have been written to: oozie.sql

  若执行正常,会生成oozie.sql的脚本,如下图所示:

3.4 启动

  接下来,我们去启动Oozie,命令如下所示:

  1. # 在$OOZIE_HOME/bin目录下
  2. ./oozie-start.sh

  正常启动内容如下所示:

  1. [hadoop@nna bin]$ ./oozie-start.sh
  2. WARN: Use of this script is deprecated; use 'oozied.sh start' instead
  3.  
  4. Setting OOZIE_HOME: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2.
  5. Setting OOZIE_CONFIG: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./conf
  6. Sourcing: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./conf/oozie-env.sh
  7. setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
  8. Setting OOZIE_CONFIG_FILE: oozie-site.xml
  9. Setting OOZIE_DATA: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./data
  10. Setting OOZIE_LOG: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./logs
  11. Setting OOZIE_LOG4J_FILE: oozie-log4j.properties
  12. Setting OOZIE_LOG4J_RELOAD:
  13. Setting OOZIE_HTTP_HOSTNAME: nna
  14. Setting OOZIE_HTTP_PORT:
  15. Setting OOZIE_ADMIN_PORT:
  16. Setting OOZIE_HTTPS_PORT:
  17. Setting OOZIE_BASE_URL: http://nna:11000/oozie
  18. Setting CATALINA_BASE: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server
  19. Setting OOZIE_HTTPS_KEYSTORE_FILE: /home/hadoop/.keystore
  20. Setting OOZIE_HTTPS_KEYSTORE_PASS: password
  21. Setting OOZIE_INSTANCE_ID: nna
  22. Setting CATALINA_OUT: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./logs/catalina.out
  23. Setting CATALINA_PID: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server/temp/oozie.pid
  24.  
  25. Using CATALINA_OPTS: -Xmx1024m -Dderby.stream.error.file=/home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./logs/derby.log
  26. Adding to CATALINA_OPTS: -Doozie.home.dir=/home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2. -Doozie.config.dir=/home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./conf -Doozie.log.dir=/home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./logs -Doozie.data.dir=/home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./data -Doozie.instance.id=nna -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload= -Doozie.http.hostname=nna -Doozie.admin.port= -Doozie.http.port= -Doozie.https.port= -Doozie.base.url=http://nna:11000/oozie -Doozie.https.keystore.file=/home/hadoop/.keystore -Doozie.https.keystore.pass=password -Djava.library.path=
  27.  
  28. Setting up oozie DB
  29. setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
  30.  
  31. Validate DB Connection
  32. DONE
  33. DB schema exists
  34.  
  35. The SQL commands have been written to: /tmp/ooziedb-.sql
  36.  
  37. Using CATALINA_BASE: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server
  38. Using CATALINA_HOME: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server
  39. Using CATALINA_TMPDIR: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server/temp
  40. Using JRE_HOME: /usr/java/jdk1.
  41. Using CLASSPATH: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server/bin/bootstrap.jar
  42. Using CATALINA_PID: /home/hadoop/oozie-4.2./distro/target/oozie-4.2.-distro/oozie-4.2./oozie-server/temp/oozie.pid

4.截图预览

  然后,我们可以输入浏览地址,查看是否启动正常,如下图所示:

5.总结

  关于Oozie的集成,会有点繁琐,本篇博客只是针对单独的Oozie去集成,后续博客会给大家介绍Oozie集成到Hadoop集群,以及相关工作流的用法介绍等。

6.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

高可用Hadoop平台-Oozie工作流的更多相关文章

  1. 高可用Hadoop平台-Oozie工作流之Hadoop调度

    1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...

  2. 高可用Hadoop平台-探索

    1.概述 上篇<高可用Hadoop平台-启航>博客已经让我们初步了解了Hadoop平台:接下来,我们对Hadoop做进一步的探索,一步一步的揭开Hadoop的神秘面纱.下面,我们开始赘述今 ...

  3. 高可用Hadoop平台-Hue In Hadoop

    1.概述 前面一篇博客<高可用Hadoop平台-Ganglia安装部署>,为大家介绍了Ganglia在Hadoop中的集成,今天为大家介绍另一款工具——Hue,该工具功能比较丰富,下面是今 ...

  4. 高可用Hadoop平台-实战尾声篇

    1.概述 今天这篇博客就是<高可用Hadoop平台>的尾声篇了,从搭建安装到入门运行 Hadoop 版的 HelloWorld(WordCount 可以称的上是 Hadoop 版的 Hel ...

  5. 高可用Hadoop平台-实战

    1.概述 今天继续<高可用的Hadoop平台>系列,今天开始进行小规模的实战下,前面的准备工作完成后,基本用于统计数据的平台都拥有了,关于导出统计结果的文章留到后面赘述.今天要和大家分享的 ...

  6. 高可用Hadoop平台-集成Hive HAProxy

    1.概述 这篇博客是接着<高可用Hadoop平台>系列讲,本篇博客是为后面用 Hive 来做数据统计做准备的,介绍如何在 Hadoop HA 平台下集成高可用的 Hive 工具,下面我打算 ...

  7. 高可用Hadoop平台-启航

    1.概述 在上篇博客中,我们搭建了<配置高可用Hadoop平台>,接下来我们就可以驾着Hadoop这艘巨轮在大数据的海洋中遨游了.工欲善其事,必先利其器.是的,没错:我们开发需要有开发工具 ...

  8. 高可用Hadoop平台-Flume NG实战图解篇

    1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume N ...

  9. 高可用Hadoop平台-Ganglia安装部署

    1.概述 最近,有朋友私密我,Hadoop有什么好的监控工具,其实,Hadoop的监控工具还是蛮多的.今天给大家分享一个老牌监控工具Ganglia,这个在企业用的也算是比较多的,Hadoop对它的兼容 ...

  10. 高可用Hadoop平台-HBase集群搭建

    1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截 ...

随机推荐

  1. python的基本用法(三)字符串常用函数

    字符串常用函数 # s='.abcd.'# new_s=s.strip('.')#默认去掉字符串两边的空格和换行符,想去掉什么括号中就写什么# print('s',s)# print('new_s', ...

  2. Mybatis配置问题解决Invalid bound statement (not found)

    首先这个异常的原因是系统根据Mapper类的方法名找不到对应的映射文件. 网上也搜索了到了类似的文章,一般可以从以下几个点排查: mapper.xml的namespace要写所映射接口的全称类名,而且 ...

  3. Python开发——数据类型【数字】

    布尔型 bool型只有两个值:True 或 False 我们将bool值归类为数字,习惯上:1表示true,0表示false 整型 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2* ...

  4. python 03 字符串详解

    1.制表符 \t str.expandtabs(20) 可相当于表格 2.def   isalpha(self) 判断是否值包含字母(汉字也为真),不包含数字 3.def   isdecimal(se ...

  5. Spring事务传递

    2018-09-25 @Transactional(propagation=Propagation.NEVER) public void update(){ Session s = sessionFa ...

  6. 深入理解JVM(四)JVM性能监控与故障处理工具

    4.2 JVM命令行工具 1.jps(JVM Process Status Tool):JVM进程查看工具,命令行进入到jdk的bin目录下,使用命令:jps -l/-q/-v/-m 2.jstat( ...

  7. JavaScript 函数定义和调用

    普通的函数定义方法: function abs(x):{ if (x >= 0){ return x; }else { return -x ; } } 两种方法是等价的 var abs = fu ...

  8. python发送邮箱

    一.Python发送邮件 import smtplib from email.mime.text import MIMEText def send(email_to,title,content): m ...

  9. # 2019-2020-3 《Java 程序设计》第二周学习总结

    2019-2020-3 <Java 程序设计>第二周学习总结 1.通过第二周的学习,利用教材和老师在蓝墨云上的一些教学视频以及通过老师和同学的博客以及一些课外资料,充分学习了第二.三章的内 ...

  10. Java中equals方法简略描述

    所有类都从Object中继承了equals方法,源码:public boolean equals(Object o){return this == o;} 直接判断this与o本身是否为同一对象(是否 ...