簡體   English   中英

從Windows在Eclipse中運行MapReduce作業時出錯

[英]Error in running MapReduce job in eclipse from windows

我在Linux機器上有偽分布式Hadoop設置。 我在eclipse中做了一些示例,該示例也安裝在該linux機器上,並且工作正常。 現在,我想通過eclipse(安裝在Windows計算機中)執行MapReduce作業,並訪問我的Linux計算機中已經存在的HDFS。 我已經編寫了以下驅動程序代碼:

 import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.FileInputFormat; import org.apache.hadoop.mapred.FileOutputFormat; import org.apache.hadoop.mapred.JobClient; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.ToolRunner; public class Windows_Driver extends Configured implements Tool{ public static void main(String[] args) throws Exception { int exitcode = ToolRunner.run(new Windows_Driver(), args); System.exit(exitcode); } @Override public int run(String[] arg0) throws Exception { JobConf conf = new JobConf(Windows_Driver.class); conf.set("fs.defaultFS", "hdfs://<Ip address>:50070"); FileInputFormat.setInputPaths(conf, new Path("sample")); FileOutputFormat.setOutputPath(conf, new Path("sam")); conf.setMapperClass(Win_Mapper.class); conf.setMapOutputKeyClass(Text.class); conf.setMapOutputValueClass(Text.class); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(Text.class); JobClient.runJob(conf); return 0; } } 

和Mapper代碼:

 import java.io.IOException; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.MapReduceBase; import org.apache.hadoop.mapred.Mapper; import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.mapred.Reporter; public class Win_Mapper extends MapReduceBase implements Mapper<LongWritable, Text,Text, Text> { @Override public void map(LongWritable key, Text value, OutputCollector<Text, Text> o, Reporter arg3) throws IOException { ... o.collect(... , ...); } } 

運行此命令時,出現以下錯誤:

  SEVERE: PriviledgedActionException as:miracle cause:java.io.IOException: Failed to set permissions of path: \\tmp\\hadoop-miracle\\mapred\\staging\\miracle1262421749\\.staging to 0700 Exception in thread "main" java.io.IOException: Failed to set permissions of path: \\tmp\\hadoop-miracle\\mapred\\staging\\miracle1262421749\\.staging to 0700 at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:691) at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:664) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:514) at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:349) at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:193) at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:126) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:942) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190) at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936) at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:910) at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1353) at Windows_Driver.run(Windows_Driver.java:41) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) at Windows_Driver.main(Windows_Driver.java:16) 

我該如何糾正錯誤? 以及如何從Windows遠程訪問我的HDFS?

Job上的Submit()方法創建一個內部Jobsubmitter實例,該實例將執行所有數據驗證,包括輸入路徑,輸出路徑可用性,文件/目錄創建權限等。 在MR的不同階段,它將創建臨時目錄,並將其放在臨時目錄下。 文件。 臨時目錄來自具有屬性hadoop.tmp.dir core-site.xml 系統的問題是臨時的。 目錄為/ tmp /,並且運行MR作業的用戶無權將其rwx狀態更改為700。提供適當的權限並重新運行該作業。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM