将本地在eclipse执行的任务要提交到服务器hadoop集群中执行
需要修改
将任务驱动类第6步,输入的路径和输出的路径由本地改成hdfs文件系统目录
public class WordCoutDriver {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
//1.获取job任务
Configuration conf = new Configuration();
Job job = Job.getInstance();
//2.获取jar包
job.setJarByClass(WordCoutDriver.class);
//3.获取自定义的mapper与reducer类
job.setMapperClass(WordCoutMapper.class);
job.setReducerClass(WordCoutReduce.class);
//4.设置map输出的数据类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//5.设置reduce输出的数据类型(最终的数据类型)
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//6.设置输入数据存在的路径与处理后的结果路径
FileInputFormat.setInputPaths(job, new Path("/wc/in"));
FileOutputFormat.setOutputPath(job,new Path("/wc/out"));
//7.提交任务
boolean rs = job.waitForCompletion(true);
System.out.println(rs?0:1);
}
}
然后将改java工程打成jar包
方法如下
右键工程名->Export ->Java->JAR file
1、生成wc.jar包后,将jar文件xftp上传到linux服务器。
2、将要统计单词的文本也上传到linux服务器。
3、在hdfs文件系统生成输入文件的目录/wc/in
hdfs dfs -mkdir -p /wc/in
4、将刚上传的文本提交到/wc/in目录。
hdfs dfs -put words.txt /wc/in/
5、修改mapred-site.xml
在hadoop-2.8.5/etc/hadoop/目录下有个文件名是mapred-site.template,将这个文件名改成mapred-site.xml,然后修改内容
指定mapreduce.framework.name属性为yarn
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
执行命令
hadoop jar wc.jar com.tony.wordcout.WordCoutDriver
执行结果可以在web页面查看
http://192.168.252.121:8088
也可以在hdfs提供的web页面查看文件是否生成
http://192.168.252.121:50070
这里可以看到文件生成成功了。
也可以在命令行查看统计文件part-r-00000内容