hadoop指定文件输入参数问题

murton 2016-05-18 02:51:59
各位好,我在eclipse中执行如下程序的时候报错。看起来是没有获取到文件输入相关的参数。麻烦大家帮忙看看是什么问题,谢谢!
看起来是这样没有起到作用
FileInputFormat.addInputPath(job, new Path("/user/hadoop/tmp/hello.txt"));// 文件输入

下面两句的输出分别如下:
System.out.println(FileInputFormat.getInputPaths(job));
System.out.println(FileOutputFormat.getOutputPath(job));

[Lorg.apache.hadoop.fs.Path;@5594a1b5
/user/hadoop/tmp



import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import hadoop.*;

public class WordCount {
public static void main(String[] args) throws Exception {

Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://10.16.59.185:9000");

Job job = new Job(conf, "word count");

job.setJarByClass(WordCount.class);
job.setMapperClass(WordMapper.class);
job.setCombinerClass(WordReducer.class);
job.setReducerClass(WordReducer.class);

job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

FileInputFormat.addInputPath(job, new Path("/user/hadoop/tmp/hello.txt"));// 文件输入
FileOutputFormat.setOutputPath(job, new Path("/user/hadoop/tmp/"));// 文件输出

System.out.println(FileInputFormat.getInputPaths(job));
System.out.println(FileOutputFormat.getOutputPath(job));

System.exit(job.waitForCompletion(true) ? 0 : 1);// 等待完成退出
}
}


16/05/18 14:58:24 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
[Lorg.apache.hadoop.fs.Path;@5594a1b5
/user/hadoop/tmp

16/05/18 14:50:47 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
Exception in thread "main" org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=corp\huangdezhi, access=WRITE, inode="":hadoop:supergroup:rwxr-xr-x
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:96)
at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:58)
at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:910)
at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:262)
at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1115)
at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:259)
at org.apache.hadoop.mapred.JobClient.configureCommandLineOptions(JobClient.java:573)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:761)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:432)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447)
at remote.file.manage.WordCount.main(WordCount.java:31)
...全文
112 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
murton 2016-05-18
  • 打赏
  • 举报
回复
问题已经解决: 上面那个问题,因为是在本地的eclipse执行,该用户没有权限,后来在hdfs-site.xml中做了权限配置: <property> <name>dfs.permissions</name> <value>false</value> </property> 另外还有两个问题: 1. 要配置mapred.job.tracker,否则默认在本地执行,而不是在远端 conf.set("mapred.job.tracker","10.16.59.185:9001"); 没有配置的话就会报上面找不到文件的错误 2. 要将工程打jar包导出,并防止在工程的根目录下,然后配置mapred.jar,否则会有ClassNotFoundException,提示找不到mapper类: conf.set("mapred.jar", "WordCount4.jar");

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧