Oozie的安装部署(配CDH版hadoop)

一:oozie的简介:
Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat中,并使用数据库来存储以下内容:
1.工作流定义。
2.当前运行的工作流实例,包括实例的状态和变量。
3.Oozie与Hadoop生态圈的其他部分集成在一起,支持多种类型的Hadoop作业( map-reduce、Hive、Sqoop等)以及特定于系统的工作(如Java程序和shell脚本)。

Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业),其中指定了动作执行的顺序。我们会使用hPDL(一种XML流程定义语言)来描述这个图。

二:oozie的功能模块和节点
1.模块

  1. Workflow
    顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
  2. Coordinator
    定时触发workflow
  3. Bundle Job
    绑定多个Coordinator

2.常用节点:

  1. 控制流节点(Control Flow Nodes)
    控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,如decision,fork,join等。
1. 流程控制节点(action)  
2. <start />——定义workflow的开始  
3. <end />——定义workflow的结束  
4. <decision />——实现switch功能<switch><case /><default /></switch>标签连用  
5. <sub-workflow>——调用子workflow  
6. <kill />——程序出错后跳转到这个节点执行相关操作  
7. <fork />——并发执行workflow  
8. <join />——并发执行结束(与fork一起使用) 
  1. 动作节点(Action Nodes)
    负责执行具体动作的节点,比如:拷贝文件,执行某个Shell脚本等等
由于Oozie需要和其他框架有着良好的兼容性,为了后续的方便,我们这里在原有Apache版的hadoop情况下,在部署一个CDH版本的hadoop

三:CDH版本的hadoop简单部署:
(注意:本节内容是建立在我上次搭建Apache原生的hadoop下搭建的,因为在上次的搭建类似于jdk之类的我都安装了,https://blog.csdn.net/weixin_44080445/article/details/106009359,然后在上篇博客中的关于Apache版本的hadoop转移到本篇博客)

1.在hadoop102上面的/opt/module下新建一个cdh目录

2.将/opt/software下的cdh版本的hadoop解压到/opt/module/cdh中
[root@hadoop102 software]# tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/module/cdh/
然后我们在这一步顺便将Oozie解压到/opt/module中
[root@hadoop102 software]# tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/module/

3.配置/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop目录下的hadoop-env.sh、mapred-env.sh , yarn-env.sh , core-site.xml , hdfs-site.xml , mapred-site.xml.template , yarn-site.xml,slaves这8个文件。

先echo $JAVA_HOME找到自己的jdk安装路径
[root@hadoop102 hadoop]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144

1)hadoop-env.sh的配置,将实际的jdk路径填入替换一下

在这里插入图片描述

2)配置mapred-env.sh,开头的注释去掉,然后填入jdk实际路径

在这里插入图片描述

3)配置yarn-env.sh,开头的注释去掉,然后填入jdk实际路径
在这里插入图片描述

4)core-site.xml
在 里面填入下列内容,注意Oozie Server的Hostname和允许被Oozie代理的用户组我配置都是root用户,假如你的是xxx用户那就相应的修改一下。

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hadoop102:8020</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
</property>

<!-- Oozie Server的Hostname -->
<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>

<!-- 允许被Oozie代理的用户组 -->
<property>
	<name>hadoop.proxyuser.root.groups</name>
 	<value>*</value>
</property>


5)hdfs-site.xml,在里面添加如下内容。

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>


<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop104:50090</value>
</property>

6) mapred-site.xml.template,这里需要注意的是将文件先修改一下名称,即 mv mapred-site.xml.template mapred-site.xml 然后在文件中添加如下内容。

<!-- 指定MR运行在YARN上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>


<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

7)yarn-site.xml

<!-- Reducer获取数据的方式 -->
<property>
 		<name>yarn.nodemanager.aux-services</name>
 		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>

<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

8)slaves,注意这里要根据自己的集群主机名来写,我的三台主机名分别是hadoop102,hadoop103,hadoop104

在这里插入图片描述

4.将配置信息拷贝到hadoop103,hadoop104的两台机器上,注意这一步拷贝要在/opt/module/cdh下执行

[root@hadoop102 cdh]# scp -r /opt/module/cdh root@hadoop103:/opt/module/
[root@hadoop102 cdh]# scp -r /opt/module/cdh root@hadoop104:/opt/module/

5.拷贝完以后我们去hadoop102的hadoop-2.5.0-cdh5.3.6目录下格式化namenode

[root@hadoop102 hadoop-2.5.0-cdh5.3.6]# bin/hdfs namenode -format

可以看到在对应的cdh版本的hadoop已经成功格式化

在这里插入图片描述

6.启动一下cdh版本的hadoop
[root@hadoop102 hadoop-2.5.0-cdh5.3.6]# sbin/start-dfs.sh

然后去hadoop103上面启动yarn
[root@hadoop103 hadoop-2.5.0-cdh5.3.6]# sbin/start-yarn.sh

然后在继续去hadoop102上面启动历史服务器

[root@hadoop102 hadoop-2.5.0-cdh5.3.6]# sbin/mr-jobhistory-daemon.sh start historyserver

这时候我们查看一下三台机器的进程都是可以查看到的
[root@hadoop102 myscripts]# ./showjps.sh
===================== root@hadoop102 =======================
7904 JobHistoryServer
7953 Jps
7418 NameNode
7501 DataNode
7741 NodeManager
===================== root@hadoop103 =======================
7410 NodeManager
7749 Jps
7224 DataNode
7323 ResourceManager
===================== root@hadoop104 =======================
7281 SecondaryNameNode
7206 DataNode
7355 NodeManager
7499 Jps
[root@hadoop102 myscripts]#

最后我们再去查看一下Web端查看一下相应的信息,可以看到CDH版本的hadoop是蓝色的,而Apache版本的hadoop中的web端是青色的,这里要着重注意一下8020,如果出现的不是我们之前配置的8020说明配置的有问题。
以上就是CDH版本的hadoop安装过程。

在这里插入图片描述

四:Oozie的安装部署
将上述的CDH版本的hadoop安装好以后这时候我们就可以去直接安装Oozie了

1.解压Oozie的tar包,这一步在上述的解压hadoop已经顺便解压过了所以不再叙述,然后我们进到解压的/opt/module下进入Oozie的目录开始解压oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz这个tar包,因为这个包解压出来的和当前oozie-4.0.0-cdh5.3.6目录名字一样,所以我们就解压到上一层目录

[root@hadoop102 oozie-4.0.0-cdh5.3.6]#

tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C     ../

在这里插入图片描述

解压完以后会发现多了一个hadooplibs目录

在这里插入图片描述

2.在Oozie目录下创建libext目录(注意目录的名字不能改,一定叫做libext ,因为官网特别强调了这个)

在这里插入图片描述

3.拷贝所依赖的jar包

1)从官网上面的信息我们可以看到它让我们拷贝hadooplibs中的所有jar文件到libext里面,进入hadooplibs里面而我们要拷贝的是hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6

在这里插入图片描述

在这里插入图片描述
执行[root@hadoop102 oozie-4.0.0-cdh5.3.6]# cp hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* ./libext/

(执行完以后最后去ll看一下libext目录下有没有对应的文件)

2).将/opt/software下面的ext-2.2.zip拷贝到libext下(注意这里不需要解压ext-2.2.zip直接拷贝就可以)。

[root@hadoop102 oozie-4.0.0-cdh5.3.6]# cp /opt/software/ext-2.2.zip ./libext/

3).拷贝mysql的驱动到libext下,因为oozie的元数据也是保存在mysql的,这里根据你自己的mysql驱动包的位置来相应调整一下

[root@hadoop102 oozie-4.0.0-cdh5.3.6]# cp /opt/software/mysql-libs/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar ./libext/

4.修改oozie的配置文件
这里的配置文件要修改的是oozie-4.0.0-cdh5.3.6/conf里面的oozie-site.xml文件,因为这个文件的内容特别多,我们不容易一下就招到对应的内容,所以我们用vi 中的set nu命令
进入文件以后先按Esc键,然后按个 : 在:的后面加上set nu后回车就可以看到行号了

1)jdbc的驱动,大概在140行的位置,将值改为com.mysql.jdbc.Driver,因为他默认的是derby数据库

在这里插入图片描述

2)第150行值修改为 jdbc:mysql://hadoop102:3306/oozie,这一步配置的是oozie所需的数据库地址,注意我们主机名是hadoop102,这一步根据你自己的主机名相应的改一下

在这里插入图片描述

3)158行值改为root,因为我的mysql是root用户

在这里插入图片描述

4)166行填入mysql的密码,注意这个值里面自带了一个空格,这个空格一定要先删掉,不然后面会出错!!!

在这里插入图片描述

5)233行让Oozie引用Hadoop的配置文件,因为你的linux上可能不止一套hadoop集群,需要让oozie知道连接哪一套集群,这里我让oozie连接我们CDH版本的hadoop。

在这里插入图片描述

这里还有要注意的就是233行值里面有个 *= 这个东西一定不要删 ,然后将你CDH版本的hadoop的配置文件的路径填入进去,见下图。

在这里插入图片描述

以上内容都设置好以后我们按Esc键,在按 : 在 : 的后面输入set nonu回车后将数字删掉。这时就可以将文件保存退出了。

五:初始化oozie

1.在Mysql中创建Oozie的数据库,mysql -uroot -p123456 进入到mysql中,创建oozie数据库
create database oozie;

2.启动CDH版本的hadoop,在上述 三:CDH版本的hadoop简单部署中的第6小点已经说明。这里不再叙述。

3.上传Oozie目录下的yarn.tar.gz文件到HDFS,注意yarn.tar.gz文件会自行解压我们只需执行命令即可,oozie会自动上传而且会自动解压tar包。

[root@hadoop102 oozie-4.0.0-cdh5.3.6]# bin/oozie-setup.sh sharelib create -fs hdfs://hadoop102:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

执行完以后我们去HDFS中的/user/root/share/lib/lib_20200801123328路径下看一下

在这里插入图片描述

在这里插入图片描述

这里可以看到lib_20200801123328目录是以时间命名的,而且里面有很多的文件,以后的话里面的内容也绝不能删掉,否则在做项目的时候会报错,还有要注意的就是上面的那个命令不能执行两次,因为它每一次执行的时间不一样,而它又恰好是以时间命名以后来打成war包的。

4.创建oozie.sql文件
在创建前我们可以先去看一下hadoop102上上面的oozie数据库,里面是什么都没有的

在这里插入图片描述

执行如下内容
[root@hadoop102 oozie-4.0.0-cdh5.3.6]# bin/ooziedb.sh create -sqlfile oozie.sql -run

可以看到这时oozie的数据库中出现了很多表,因为他要存放很多的数据在里面。

在这里插入图片描述

5.打包项目,生成war包,结束后会出现如下内容

在这里插入图片描述

六:oozie的启动和停止

关于oozie的启动和停止我们每一次在操作之前就不需要经过上面 五:oozie的初始化内容了,上面的初始化只是第一次在安装oozie的时候需要做的。

启动:
[root@hadoop102 oozie-4.0.0-cdh5.3.6]# bin/oozied.sh start

停止:
[root@hadoop102 oozie-4.0.0-cdh5.3.6]# bin/oozied.sh stop

启动过后可以看到多了一个Bootstrap的进程,这个就是oozie的进程

在这里插入图片描述

然后我们再去web端访问一下oozie,出现一下界面说明已经安装成功了。

在这里插入图片描述

在这里可能出现的问题:如果出现页面显示不全可能类似于下面这样可能是因为浏览器的问题,建议换火狐或者谷歌浏览器使用。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44080445/article/details/107722690