我对Hadoop很新,我目前已经分配了一个项目
"实施高级作业控制框架,以帮助链接多个Map-Reduce作业,即调查/改进现有的org.apache.hadoop.mapred.jobcontrol包."
该项目在http://wiki.apache.org/hadoop/ProjectSuggestions#research_projects上随机创意下的项目建议页面上列出
我的困惑是,我是否必须构建Oozie的高级版本(我认为这是一个链接多个工作的工作控制框架)或类似的东西,或者这意味着完全不同的东西.
我错过了什么?
我们正在oozie中运行工作流程.它包含两个操作:第一个是在hdfs中生成文件的map reduce作业,第二个是应该将文件中的数据复制到数据库的作业.
这两个部分都已成功完成,但是oozie在结尾处抛出异常,将其标记为失败的进程.
这是例外:
2014-05-20 17:29:32,242 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:lpinsight (auth:SIMPLE) cause:java.io.IOException: Filesystem closed
2014-05-20 17:29:32,243 WARN org.apache.hadoop.mapred.Child: Error running child
java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:565)
at org.apache.hadoop.hdfs.DFSInputStream.close(DFSInputStream.java:589)
at java.io.FilterInputStream.close(FilterInputStream.java:155)
at org.apache.hadoop.util.LineReader.close(LineReader.java:149)
at org.apache.hadoop.mapred.LineRecordReader.close(LineRecordReader.java:243)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.close(MapTask.java:222)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:421)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
at org.apache.hadoop.mapred.Child.main(Child.java:262)
Run Code Online (Sandbox Code Playgroud)
2014-05-20 17:29:32,256 INFO org.apache.hadoop.mapred.Task:Runnning cleanup for the task
任何的想法 ?
我按照http://gauravkohli.com/2014/08/26/apache-oozie-installation-on-hadoop-2-4-1/中的步骤在Linux机器上 安装了oozie 4.1.0
hadoop version - 2.6.0
maven - 3.0.4
pig - 0.12.0
Run Code Online (Sandbox Code Playgroud)
群集设置 -
MASTER NODE runnig - Namenode,Resourcemanager,proxyserver.
SLAVE NODE正在运行 -Datanode,Nodemanager.
当我运行单个工作流程时,工作意味着它成功.但是当我尝试运行多个Workflow作业时,即两个作业都处于接受状态
检查错误日志,我深入研究了问题,
014-12-24 21:00:36,758 [JobControl] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 172.16.***.***/172.16.***.***:8032. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2014-12-25 09:30:39,145 [communication thread] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 172.16.***.***/172.16.***.***:52406. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
2014-12-25 09:30:39,199 [communication thread] INFO org.apache.hadoop.mapred.Task - Communication exception: …
Run Code Online (Sandbox Code Playgroud) 我正在使用hue运行一个hive查询throwh oozie ..
我正在通过hue-oozie工作流程创建一个表...
我的工作失败但是当我在hive中检查时表创建了.
日志显示以下错误:
16157 [main] INFO org.apache.hadoop.hive.ql.hooks.ATSHook - Created ATS Hook
2015-09-24 11:05:35,801 INFO [main] hooks.ATSHook (ATSHook.java:<init>(84)) - Created ATS Hook
16159 [main] ERROR org.apache.hadoop.hive.ql.Driver - hive.exec.post.hooks Class not found:org.apache.atlas.hive.hook.HiveHook
2015-09-24 11:05:35,803 ERROR [main] ql.Driver (SessionState.java:printError(960)) - hive.exec.post.hooks Class not found:org.apache.atlas.hive.hook.HiveHook
16159 [main] ERROR org.apache.hadoop.hive.ql.Driver - FAILED: Hive Internal Error: java.lang.ClassNotFoundException(org.apache.atlas.hive.hook.HiveHook)
java.lang.ClassNotFoundException: org.apache.atlas.hive.hook.HiveHook
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
Run Code Online (Sandbox Code Playgroud)
无法识别问题....
我使用HDP 2.3.1
我有一个基于6节点cloudera的hadoop集群,我正在尝试从oozie中的sqoop操作连接到oracle数据库.
我已将我的ojdbc6.jar复制到sqoop lib位置(对我来说恰好位于:/opt/cloudera/parcels/CDH-4.2.0-1.cdh4.2.0.p0.10/lib/sqoop/lib/ )在所有节点上,并验证我可以从所有6个节点运行一个简单的'sqoop eval'.
现在,当我使用Oozie的sqoop操作运行相同的命令时,我得到"无法加载db驱动程序类:oracle.jdbc.OracleDriver"
我已经阅读了这篇关于使用共享库的文章,当我们谈论我的任务/动作/工作流特定的依赖关系时,这对我来说很有意义.但是我看到一个JDBC驱动程序安装作为sqoop的扩展,所以我认为它属于sqoop安装库.
现在的问题是,虽然sqoop看到这个ojdbc6 jar我已经放入它的lib文件夹,为什么我的Oozie工作流程看不到它?
这是预期的事情还是我错过了什么?
顺便说一下,你怎么看待JDBC驱动程序jar的适当位置?
提前致谢!
我有2个Sqoops,可以将数据从HDFS加载到MySQL.我想用Oozie执行它们.我看到Oozie是一个XML文件.如何配置它以便我可以执行那些Sqoop?演示步骤将受到赞赏?
两个Sqoops是:
1.
sqoop export --connect jdbc:mysql://localhost/hduser --table foo1 -m 1 --export-dir /user/cloudera/bar1
Run Code Online (Sandbox Code Playgroud)
2.
sqoop export --connect jdbc:mysql://localhost/hduser --table foo2 -m 1 --export-dir /user/cloudera/bar2
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在通过oozie java动作运行测试hbase java程序.遇到以下错误:
Failing Oozie Launcher, Main class [HbaseTest], main() threw exception, org/apache/hadoop/hbase/HBaseConfiguration
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
at HbaseTest.main(HbaseTest.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:495)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:417)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
at org.apache.hadoop.mapred.Child.main(Child.java:262)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 14 more
Run Code Online (Sandbox Code Playgroud)
该程序从命令行正确运行:
java -cp `hbase classpath` HbaseTest
Run Code Online (Sandbox Code Playgroud)
有没有办法可以将'hbase classpath'的输出传递给oozie java动作.我不想将hbase jar复制到工作流的lib目录,因为这将是一个维护开销.
以下是来自的java动作workflow.xml
:
<java>
<job-tracker>${jobTracker}</job-tracker> …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个使用spark包的scala程序.目前我使用来自网关的bash命令运行程序:/ homes/spark/bin/spark-submit --master yarn-cluster --class"com.xxx.yyy.zzz"--driver-java-options" - Dyyy.num = 5"a.jar arg1 arg2
我想开始使用oozie来运行这份工作.我有一些挫折:
我应该在哪里放置spark-submit可执行文件?在hfs?如何定义火花动作?应该在哪里出现--driver-java-options?oozie动作应该如何?它出现在这里类似吗?
我想要实现的是构建和安装Oozie 4.2.0,这将使我能够将Spark作业提交给YARN集群.
我通过执行建造发行:oozie-4.2.0/bin/mkdistro.sh -Puber -Phadoop-2 -DskipTests
.那个创建oozie-4.2.0-distro.tar.gz
包和内部我能找到oozie-4.2.0-sharelib.tar.gz
.但是,许多教程在线声明我应该oozie-4.2.0-sharelib-yarn.tar.gz
使用YARN.这样的文件不包含在发行包中.如何使构建过程输出YARN版本的sharelibs?
我试图继续使用非YARN版本,但是在提交示例Spark作业(并将job.properties中的HDFS和YARN地址与master属性调整local[*]
为yarn
)时,我收到了一个错误:
错误:无法加载YARN类.此副本的Spark可能尚未使用YARN支持进行编译.
我理解HDFS和Map Reduce的概念以及如何将处理逻辑移动到数据以提高效率.我甚至能够在我的基本Hadoop集群上运行几个map reduce工作.围绕这些概念有许多不同的技术,如YARN,HUE,OOZIE,所有这些技术似乎都做同样的事情(至少从非常高的层次),即作业的操作可视性和CRUD能力(可以是map-reduce或者是其他东西).
我是否正确地做出这个假设,或者它们之间是否存在更为根本的区别?
谢谢凯
oozie ×10
hadoop ×9
apache-spark ×2
hadoop-yarn ×2
hue ×2
java ×2
mapreduce ×2
sqoop ×2
cloudera ×1
dependencies ×1
hbase ×1
hive ×1
scala ×1
workflow ×1