Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java向远程纱线集群提交级联作业?_Java_Hadoop_Mapreduce_Yarn_Cascading - Fatal编程技术网

如何从Java向远程纱线集群提交级联作业?

如何从Java向远程纱线集群提交级联作业?,java,hadoop,mapreduce,yarn,cascading,Java,Hadoop,Mapreduce,Yarn,Cascading,我知道我可以通过将级联作业打包到JAR中来提交级联作业,如级联用户指南中所述。如果我使用hadoopjarCLI命令手动提交作业,那么该作业将在集群上运行 但是,在最初的Hadoop 1级联版本中,可以通过在HadoopJobConf上设置某些属性来向集群提交作业。设置fs.defaultFS和mapred.job.tracker会导致本地Hadoop库自动尝试将作业提交给Hadoop1 JobTracker。但是,在较新版本中设置这些属性似乎不起作用。使用级联版本2.5.3(将CDH5列为受支

我知道我可以通过将级联作业打包到JAR中来提交级联作业,如级联用户指南中所述。如果我使用
hadoopjar
CLI命令手动提交作业,那么该作业将在集群上运行

但是,在最初的Hadoop 1级联版本中,可以通过在Hadoop
JobConf
上设置某些属性来向集群提交作业。设置
fs.defaultFS
mapred.job.tracker
会导致本地Hadoop库自动尝试将作业提交给Hadoop1 JobTracker。但是,在较新版本中设置这些属性似乎不起作用。使用级联版本2.5.3(将CDH5列为受支持的平台)提交到CDH5 5.2.1 Hadoop群集会导致与服务器协商时出现IPC异常,详情如下

我相信这个平台组合——级联2.5.6、Hadoop2、CDH5、Thread和提交的MR1API——是基于的受支持的组合(请参见“早期版本”标题下)。在同一集群中,使用hadoop jar提交作业可以很好地工作。端口8031在提交主机和ResourceManager之间打开。在服务器端的ResourceManager日志中发现具有相同消息的错误

我使用的是
cascading-hadoop2-mr1

线程“main”cascading.flow.FlowException中的异常:未处理的异常 在cascading.flow.BaseFlow.complete处(BaseFlow.java:894) 在WordCount.main(WordCount.java:91) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:606) 位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 由以下原因引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcServerException):rpc headerRPC_中未知的rpc类型可写 位于org.apache.hadoop.ipc.Client.call(Client.java:1411) 位于org.apache.hadoop.ipc.Client.call(Client.java:1364) 在org.apache.hadoop.ipc.writeablerpcengine$Invoker.invoke上(writeablerpcengine.java:231) 位于org.apache.hadoop.mapred.$Proxy11.getStagingReadir(未知来源) 位于org.apache.hadoop.mapred.JobClient.getStagingReadir(JobClient.java:1368) 位于org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:102) 位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:982) 位于org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:976) 位于java.security.AccessController.doPrivileged(本机方法) 位于javax.security.auth.Subject.doAs(Subject.java:415) 位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614) 位于org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:976) 位于org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:950) 在cascading.flow.hadoop.planner.HadoopFlowStepJob.internalNonBlockingStart(HadoopFlowStepJob.java:105)中 位于cascading.flow.planner.FlowStepJob.blockOnJob(FlowStepJob.java:196) 位于cascading.flow.planner.FlowStepJob.start(FlowStepJob.java:149) 在cascading.flow.planner.FlowStepJob.call(FlowStepJob.java:124)中 在cascading.flow.planner.FlowStepJob.call(FlowStepJob.java:43)中 在java.util.concurrent.FutureTask.run(FutureTask.java:262)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 运行(Thread.java:745) 演示代码如下,基本上与级联用户指南中的WordCount示例相同

公共类字数{
公共静态void main(字符串[]args){
字符串inputPath=“/user/vagrant/wordcount/input”;
字符串outputPath=“/user/vagrant/wordcount/output”;
Scheme sourceScheme=新文本行(新字段(“行”);
Tap源=新Hfs(源方案、输入路径);
Scheme sinkScheme=新的文本分隔符(新字段(“单词”、“计数”));
抽头接收器=新Hfs(sinkScheme、outputPath、SinkMode.REPLACE);
管道组件=新管道(“字数”);

字符串正则表达式=”(?我现在已经解决了这个问题。它来自于尝试使用Cloudera分发的较旧的Hadoop类,特别是JobClient。如果您使用提供的
2.5.0-mr1-cdh5.2.1
版本的
Hadoop核心
依赖项,或者使用相同版本号的
Hadoop客户端
依赖项,就会出现这种情况。尽管ims将是MR1版本,我们使用MR1API进行提交,该版本实际上只支持提交到Hadoop1 JobTracker,不支持Thread

为了允许提交到Thread,您必须将
hadoop客户端
依赖项与非MR1
2.5.0-cdh5.2.1
版本一起使用,该版本仍然支持向Thread提交MR1作业