CDH5.3 Oozie服务搭建

CDH5.3 Oozie服务搭建

编写人:胡旻   版本:V_0.5   修改时间:20150215

(Oozie版本CDH5.3组件V4.0.0) 

版权所有转载请注明

一.Oozie简介

Oozie是一个管理Hdoop作业(job)的工作流程调度管理服务。

1.      Oozie的工作流是一系列动作的直接周期图(Directed Acyclical Graphs)。这些动作是典型的Hadoop任务(MapReduce,Streaming, Pipes, Pig, Hive, Sqoop, etc)

2.      Oozie协调作业就是通过时间(频率)和有效数据触发当前的Oozie工作流程

3.      Oozie可以将一系列协调作业捆绑作为一个任务进行管理

4.      Oozie 是一个可扩展,数据感知的服务,允许你在Hadoop上使用运行一系列独立的任务

 

二.软件包

Oozie采用服务器客户端模式,对于安装Oozie有两种包选择,针对Oozie服务器(oozie)和客户端(oozie-client)的独立的RPM包。

 

三.安装需求

安装Oozie服务器需要满足

1.      操作系统的支持(如:支持CDH5的操作系统)

2.      Oracle JDK的支持

3.      如果不想用自带的derby还需要一个可以支持的数据库

 

安装Oozie Client需要满足

Oracle JDK的支持

 

四.安装Oozie

Oozie包含两个独立包;一个是客户端包(oozie-client)另一个是服务包(oozie)。选择你需要的合适的包进行安装。

使用yum方式安装Oozie服务包

$ sudo yum install oozie

 

使用yum方式安装Oozie客户端包

$ sudo yum install oozie-client

 

五.配置Oozie

1.配置Hadoop任务的使用版本

Oozie客户端不会和HadoopMapReduce任务进行直接的交互,所以其不需要任何MapReduce的设置

Oozie服务能够对接使用MRv1或YARN,但是不能同时使用。

文件类型

安装路径

二进制包

/usr/lib/oozie/

配置信息

/etc/oozie/conf/

文档

/usr/share/doc/oozie-4.0.0+cdh5.3.0+334

例子

/usr/share/doc/oozie-4.0.0+cdh5.3.0+334

数据

/usr/share/doc/oozie-4.0.0+cdh5.3.0+334

日志

/var/log/oozie

临时文件

/var/tmp/oozie/

PID文件

/var/run/oozie/

 

 

2. 使用MySQL配置Oozie

安装和启动mysql,使用mysql命令台工具,创建Oozie数据库和Oozie的mysql用户

$ mysql -u root -p

Enter password: ******

 

mysql> create database oozie;

Query OK, 1 row affected (0.03 sec)

 

mysql>  grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie';

Query OK, 0 rows affected (0.03 sec)

 

mysql>  grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie';

Query OK, 0 rows affected (0.03 sec)

 

mysql> exit

Bye

 

3.配置Oozie使用MySQL,编辑oozie-site.xml中属性文件如下,配置oozie-site.xml

$ sudo vim /etc/oozie/conf/oozie-site.xml

...

    <property>

        <name>oozie.service.JPAService.jdbc.driver</name>

        <value>com.mysql.jdbc.Driver</value>

    </property>

    <property>

        <name>oozie.service.JPAService.jdbc.url</name>

        <value>jdbc:mysql://localhost:3306/oozie</value>

    </property>

    <property>

        <name>oozie.service.JPAService.jdbc.username</name>

        <value>oozie</value>

    </property>

    <property>

        <name>oozie.service.JPAService.jdbc.password</name>

        <value>oozie</value>

    </property>

...

4.      添加MySQL JDBC 驱动包(JAR文件)给Oozie.

拷贝或软连接mysql的JDBC驱动JAR文件到/var/lib/oozie/ 文件夹

 

5.      建立Oozie数据库模式

在设置完Oozie 数据库信息和创建相应的数据库,创建Oozie数据库模式,Oozie为这个目的提供了一个数据库工具

运行Oozie数据库工具

$ sudo -u oozie /usr/lib/oozie/bin/ooziedb.sh create -run

你应该看到以下输出

Validate DB Connection.

DONE

Check DB schema does not exist

DONE

Check OOZIE_SYS table does not exist

DONE

Create SQL schema

DONE

DONE

Create OOZIE_SYS table

DONE

 

Oozie DB has been created for Oozie version '4.0.0-cdh5.3.0'

 

The SQL commands have been written to: /tmp/ooziedb-5737263881793872034.sql

 

 

6.      允许Oozie Web Console

为了允许Oozie webconsole, 下载添加ExtJS库到 Oozie服务器

步骤1:下载库

从http://archive.cloudera.com/gplextras/misc/ext-2.2.zip下载ExtJS版本2.2库文件并将其放在合适的位置。

步骤2:安装库文件

提取文件ext-2.2.zip并将其放在/var/lib/oozie下. 并解压

说明:1.以前同事何敏在测试机上安装oozie 时,将ext-2.2.zip直接放到该目录下即可。但是现在clouderamanger  中不行

           2. 同事以前aparch 正式使用的ext-2.2.zip 在cloueramanger 下放到/var/lib/oozie下,解压后也不能正常。后来网友世界提供的解压后正常

步骤3. 在Hadoop的HDFS上安装Oozie Shared Library

oozie安装绑定了Oozie的分享库,包含了所有允许工作流任务运行的动作(streaming, DistCp, Pig, Hive, Sqoop).

步骤4.oozie安装绑定了两个共享库,一个是MRv1 另一个是 YARN。请确保你安装了合适你使用的MapReduce版本

The shared library file for MRv1 isoozie-sharelib-mr1.tar.gz.

The shared library file for YARN isoozie-sharelib-yarn.tar.gz.

 

(我系统是运行在YARN上运行MapReduce,所以注意)

$ sudo -u hdfs hadoop fs -mkdir /user/oozie

$ sudo -u hdfs hadoop fs -chown oozie:oozie /user/oozie

$ sudo oozie-setup sharelib create -fs <FS_URI> -locallib /usr/lib/oozie/oozie-sharelib-yarn.tar.gz

其中FS_URI是文件系统HDFS URI分享库应该安装的位置(例如 hdfs://<HOST>:<PORT>).

 

 

7.      设置支持Oozie的Uber JARs

为了使集群支持uber Jars我们设定oozie-site.xml以下属性

...

    <property>

        <name>oozie.action.mapreduce.uber.jar.enable</name>

        <value>true</value>

...

 

 

六. 启动、停止和访问Oozie

1.启动Oozie服务器

$ sudo service oozie start

如果能看见消息Oozie系统ID[oozie-oozie] 开始在oozie.log日志文件中,说明系统已经成功开始

 

2.停止Oozie服务器

$ sudo service oozie stop

 

3.通过Oozie客户端访问Oozie服务器

Oozie客户端是一个命令行单元可以通过Oozieweb-services API和Oozie 服务器进行交互

$ oozie admin -oozie http://localhost:11000/oozie -status

System mode: NORMAL

为了方便使用这个组件,设置环境变量OOZIE_URL指向Oozie服务器的URL.后续你能跳过-oozie 选项

$ export OOZIE_URL=http://localhost:11000/oozie

$ oozie admin -version

Oozie server build version: 4.0.0-cdh5.3.0

 

4.通过Web浏览器访问Oozie服务器

如果你添加了ExtJS库,允许了Oozie web控制台,你可以通过

http://<OOZIE_HOSTNAME>:11000/oozie.

 

oozie is not allowed to impersonate oozie问题的解决

在主控节点(NameNode和ResourceManage)中修改hdfs-site.xml文件添加如下属性

<!-- OOZIE -->

<property>

  <name>hadoop.proxyuser.oozie.hosts</name>

  <value>*</value>

</property>

<property>

  <name>hadoop.proxyuser.oozie.groups</name>

  <value>*</value>

</property>

<!-- -->

然后更新

主控节点:NameNode

hdfs dfsadmin -fs hdfs://hcdream1:8020 -refreshSuperUserGroupsConfiguration

hdfs dfsadmin -fs hdfs://hcdream2:8020 –refreshSuperUserGroupsConfiguration

 

主控节点:ResourceManager

yarn rmadmin -refreshSuperUserGroupsConfiguration

你可能感兴趣的:(CDH5.3 Oozie服务搭建)