2014-05-04 00:00:00
来 源
中存储网
Hadoop
OOZIE是Hadoop平台上的开源调度工具,在项目中使用OOZIE将近一年时间了,OOZIE的安装配置还是挺复杂的。为了使用起来方便顺手,需要进行很多配置。下面整理了一下OOZIE安装配置的步骤,供使用Hadoop和OOZIE的童鞋们参考,也方便自己查看。

OOZIE是Hadoop平台上的开源调度工具,在项目中使用OOZIE将近一年时间了,OOZIE的安装配置还是挺复杂的。为了使用起来方便顺手,需要进行很多配置。下面整理了一下OOZIE安装配置的步骤,供使用Hadoop和OOZIE的童鞋们参考,也方便自己查看。

1 解压安装包

tar -xzf oozie-3.3.2-distro.tar.gz

2 修改addtowar.sh脚本

由于OOZIE声明支持的Hadoop版本不包括1.0.4,而实际上是可以和Hadoop-1.0.4配合工作的。所以需要修改$OOZIE_HOME/bin下的addtowar.sh脚本,在function getHadoopJars()的最后增加:

elif [ "${version}" = "1.0.4" ]; then

#List is separated by ":"

hadoopJars="hadoop-ant-1.0.4.jar:hadoop-client-1.0.4.jar:hadoop-core-1.0.4.jar:hadoop-minicluster-1.0.4.jar:hadoop-tools-1.0.4.jar:jackson-core-asl-1.8.8.jar:jackson-mapper-asl-1.8.8.jar:log4j-1.2.15.jar: commons-configuration-1.6.jar"

3 拷贝所需依赖

因为OOZIE需要将所有的依赖打成War包部署到内置的Tomcat上,所以需要将相应Jar包和ExtJS拷贝至$OOZIE_HOME/libext目录下,包括以下依赖:

Hadoop平台

4 环境变量设置

vi ~/.bash_profile

添加

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

export OOZIE_HOME=/home/hadoop/oozie-3.3.2

PATH中添加:$OOZIE_HOME/bin

5 代理设置

如果不进行代理设置的话,提交任务时会遇到类似的报错:

hadoop is not allowed to impersonate hadoop

翻译过来意思是hadoop不允许模仿hadoop,也就是说hadoop没有代替hadoop提交任务的权限。

出现这个问题的原因在于OOZIE本身并不执行任何任务,也不会分发任务至Tasktracker。OOZIE和Hadoop集群唯一的交互是向Jobtracker提交任务,并通过回调URL或轮询的方式获取任务执行情况。

我们假定Hadoop集群安装在A账户下,OOZIE安装在某节点的B账户下,该账户属于C用户组。那么代理设置表示如下含义:A账户在该节点拥有代替C用户组提交任务的权限。

在core-site.xml中添加

hadoop.proxyuser.hadoop.hosts

IP

hadoop.proxyuser.hadoop.groups

hadoop

在配置项中,hadoop.proxyuser.hadoop.hosts和hadoop.proxyuser.hadoop.groups中的两个hadoop是我们上文提到的账户A,hadoop.proxyuser.hadoop.hosts对应的value需要填写OOZIE安装节点的IP,hadoop.proxyuser.hadoop.groups对应的value需要填写我们上文提到的用户组C。

由于一般Hadoop和OOZIE都安装在hadoop账户下,而hadoop账户又属于hadoop用户组。所以就出现了这种搞笑的配置,hadoop代替hadoop提交任务。

注意由于该配置项是在core-site.xml,所以修改该配置后,需要重启集群才能生效。

6 时区设置

时区设置的目的是在配置中使用东八区时间。

在oozie-site.xml中添加:

oozie.processing.timezone

GMT+0800

7 端口号设置

如需修改端口号,在$OOZIE_HOME/conf/oozie-env.sh中修改端口号,防止端口冲突。默认端口号为11000。

8 数据库设置

OOZIE使用RDBMS存储元信息,默认使用Apache的嵌入式纯Java数据库Derby。使用时可能出现问题,推荐使用Mysql,配置如下:

oozie.db.schema.name

oozie

Oozie DataBase Name

oozie.service.JPAService.create.db.schema

true

Creates Oozie DB.

If set to true, it creates the DB schema if it does not exist. If the DB schema exists is a NOP.

If set to false, it does not create the DB schema. If the DB schema does not exist it fails start up.

oozie.service.JPAService.jdbc.driver

com.mysql.jdbc.Driver

JDBC driver class. 

oozi.service.JPAService.jdbc.url

jdbc:mysql://localhost:3306/oozie?createDatabaseIfNotExist=true

JDBC URL.

oozie.service.JPAService.jdbc.username

root

DB user name.

oozie.service.JPAService.jdbc.password

abc

DB user password.

IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,

if empty Configuration assumes it is NULL.

9 运行oozie-setup.sh

$OOZIE_HOME/bin/oozie-setup.sh -hadoop 1.0.4 /home/hadoop/hadoop -extjs /home/hadoop/oozie-3.3.2/libext/

10 创建数据库

$OOZIE_HOME/bin/ooziedb.sh create -sqlfile oozie.sql -run

11 运行oozie-start.sh

$OOZIE_HOME/bin/oozie-start.sh

12 运行oozie-run.sh

nohup /home/hadoop/oozie-3.3.2/bin/oozie-run.sh > /home/hadoop/oozie-3.3.2/logs/log 2>/home/hadoop/oozie-3.3.2/logs/errorlog &

13 验证oozie的状态正常

oozie admin -oozie http://IP:11000/oozie -status

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。