阅读目录
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
文章是哥(mephisto)写的,SourceLink
序
上一篇,我们的Eclipse插件搞定,那开始我们的MapReduce之旅。
在这里,我们先调用官方的wordcount例子,然后再手动创建个例子,这样可以更好的理解Job。
数据准备
一:说明
wordcount这个类是对不同的word进行统计个数,所以这里我们得准备数据,当然也不需要很大的数据量,毕竟是自己做试验对吧。
二:造数据
打开记事本,输入各种word,有相同的,不同的。然后保存为words_01.txt。
三:上传
打开eclipse,然后在DFS location 中将我们准备的数据源上传到tmp/input。
这样我们的数据就准备好了。
wordcount
一:官网示例
wordcount是hadoop的一个官网试例,打包在hadoop-mapreduce-examples-<ver>.jar。
二:找到示例
我们在结果中看到两个地方有,那就找个近一点的地方吧。
find / -name *hadoop-mapreduce-examples*
四:进入目录
我们选择进入/usr/hdp/下面的这个例子。
cd /usr/hdp/2.3.0.0-2557/hadoop-mapreduce五:执行
我们先使用hadoop jar这个命令执行。
命令说明:hadoop jar 包名称 方法 输入文件/目录 输出目录
#切换用户 su hsfs #执行 hadoop jar hadoop-mapreduce-examples-2.7.1.2.3.0.0-2557.jar wordcount /tmp/input/words_01.txt /tmp/output/1007_01命令执行结果
插件结果
job页面结果
这样我们的第一个job就这样顺利的执行完成了。
Yarn
一:介绍
Hadoop2.X和Hadoop1.X有两个最大的变化,也是根本性变化。
其中一个是Namenode的单点问题解决,然后就是Yarn的引入。在这里我们就不做展开的讲了,后面会安排章节进行讲述。
二:Yarn命令
如果仔细看的话,我们可以发现在上面hadoop jar这个命令执行后,会有一个警告。
yarn jar hadoop-mapreduce-examples-2.7.1.2.3.0.0-2557.jar wordcount /tmp/input/words_01.txt /tmp/output/1007_02
新建MapReduce
一:通过插件新建工程
这里就不详说了,在上一篇我们通过插件建立了一个工程,我们直接使用那个工程“com.first”。
二:新建WordCountEx类
这个是我们的自定义的wordcount类,仿照官网例子写的,做了点DIY,方便大家理解。
完成后
三:新建Mapper
在WordCountEx类中建一个内部类MyMapper。
在这里我们做了点DIY,排除了字母长度小于5的数据,方便大家对比理解程序。
View Codestatic class MyMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); @Override protected void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException { // 分割字符串 StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { // 排除字母少于5个的 String tmp = itr.nextToken(); if (tmp.length() < 5) continue; word.set(tmp); context.write(word, one); } } }