Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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 无法提交并发Hadoop作业_Java_Hadoop_Mapreduce_Hbase_Phoenix - Fatal编程技术网

Java 无法提交并发Hadoop作业

Java 无法提交并发Hadoop作业,java,hadoop,mapreduce,hbase,phoenix,Java,Hadoop,Mapreduce,Hbase,Phoenix,我正在本地机器上运行Hadoop 2.7,以及HBase 1.4和Phoenix 4.15。我已经编写了一个应用程序,它通过Phoenix提交map reduce作业,删除HBase中的数据。每个作业都由ThreadPoolExecutor的单个线程运行,如下所示: 公共类MRDeleteTask扩展任务{ 私有最终记录器=LoggerFactory.getLogger(MRDeleteTask.class); 私有字符串查询; 公共MRDeleteTask(int-id,字符串q){ 这个.s

我正在本地机器上运行
Hadoop 2.7
,以及
HBase 1.4
Phoenix 4.15
。我已经编写了一个应用程序,它通过Phoenix提交map reduce作业,删除HBase中的数据。每个作业都由
ThreadPoolExecutor
的单个线程运行,如下所示:

公共类MRDeleteTask扩展任务{
私有最终记录器=LoggerFactory.getLogger(MRDeleteTask.class);
私有字符串查询;
公共MRDeleteTask(int-id,字符串q){
这个.setId(id);
this.query=q;
}
@凌驾
公开募捐{
info(“正在运行的任务:+getId());
试一试{
Configuration=HBaseConfiguration.create();
Job Job=Job.getInstance(配置为“phoenix mr Job-”+getId());
LOGGER.info(“映射器输入:“+this.query”);
setInput(作业,DeleteMR.PhoenixDBWritable.class,“表”,查询);
setMapperClass(DeleteMR.DeleteMapper.class);
job.setJarByClass(DeleteMR.class);
job.setNumReduceTasks(0);
setOutputFormatClass(NullOutputFormat.class);
job.setOutputKeyClass(ImmutableBytesWritable.class);
job.setOutputValueClass(Writable.class);
TableMapReduceUtil.addDependencyJars(作业);
布尔结果=job.waitForCompletion(true);
}
捕获(例外e){
LOGGER.info(例如getMessage());
}
}
}
如果ThreadPoolExecutor中只有1个线程,则一切都正常。如果同时提交多个这样的Hadoop作业,则不会发生任何事情。根据日志,错误如下所示:

4439 [pool-1-thread-2] INFO  MRDeleteTask  - java.util.concurrent.ExecutionException: java.io.IOException: Unable to rename file: [/tmp/hadoop-user/mapred/local/1595274269610_tmp/tmp_phoenix-4.15.0-HBase-1.4-client.jar] to [/tmp/hadoop-user/mapred/local/1595274269610_tmp/phoenix-4.15.0-HBase-1.4-client.jar]

4439 [pool-1-thread-1] INFO  MRDeleteTask  - java.util.concurrent.ExecutionException: ExitCodeException exitCode=1: chmod: /private/tmp/hadoop-user/mapred/local/1595274269610_tmp/phoenix-4.15.0-HBase-1.4-client.jar: No such file or directory


使用
ThreadPoolExecutor.submit()
提交任务,并使用返回的future
future.isDone()
检查任务状态。作业未提交到Thread,而是从Intellij本地运行。将以下内容添加到作业配置解决了此问题:

conf.set("mapreduce.framework.name", "yarn");