你好,游客 登录
背景:
阅读新闻

Hadoop平台上Oozie调度系统的安装配置

[日期:2014-05-04] 来源:帮客之家  作者:youuagaa [字体: ]

  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





收藏 推荐 打印 | 录入: | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款