hadoop运行第一个实例wordcount

2次阅读

共计 1288 个字符,预计需要花费 4 分钟才能阅读完成。

引语:

这几周事情比较多,两周没写博客了,这周总算把 hadoop 的实例给运行起来,然后跑了一下官方的 wordcount 例子(用于统计文件中单词出现的次数)。
接下来是我成功运行实例的记录。运行的前提是安装配置好 hadoop(可以参考我上一篇博客:hadoop 伪分布式安装记录)

运行步骤:

1. 先准备一个包含单词的文件,然后将这个文件上传到 linux 服务器上。
文件内容:

hello world hello hadoop
abc hadoop aabb hello word
count test hdfs mapreduce

2. 使用 hdfs 的命令创建好输入文件的目录(hfds 的命令基本上和 linux 一样,可以去官网上查看下)hadoop fs -mkdir /input/wordcount
然后在创建一个输出目录 /output 为后续 hadoop 存放运行结果

3. 然后将文件放入到 hadoop 的文件系统中 hadoop fs -put /home/file1 /input/wordcount
创建完可以使用 ls 检查一下是否文件存在 hadoop fs -ls -R /

4. 再进入到 hadoop 的 share/hadoop/mapreduce 中,有一个 hadoop-mapreduce-examples-3.1.2.jar
通过 hadoop jar hadoop-mapreduce-examples-3.1.2.jar 可以查看到这个官方给的例子里面有哪些程序可以执行
如下:

可以看到很多自带的使用程序,我们这里就使用 wordcount。
执行命令

hadop jar hadoop-mapreduce-examples-3.1.2.jar /input/wordcount /output/wordcount

最后的两个参数一个是文件的输入路径,就是我们之前创建再 hdfs 的路径,第二个参数是文件的输出路径,
如果没有的话 hadoop 会自己创建。
5. 然后首先会进行 map 的过程,在使 reduce 的过程,这里可以理解为分而治之的步骤,map 是多台机器上分别处理文件的中间结果,然后通过 reduce(减少,聚合)把结果给汇总。
而且是先 map 执行完再回执行 reduce。

6. 去输出文件中查看结果,output/wordcount 里面会有三个文件,有一个带 part 的就是输出结果, 可以使用 hadoop fs -cat 输出文件的路径查看结果

总结:

虽然看起来步骤不是很多,内容也比较简单,但是坑还是挺多的。要注意的点:
1. 伪分布式搭建的 hadoop,hostname 这个要设置好,要和配置文件中一致,实在不行就直接指定 127.0.0.1(反正我是这样解决了)
2.yarn 的内存配置要合理,太小了发现会一直卡在 runing job 这个环节或者一直卡在 map 0% 这里,此时要去 yarn-site 中设置好内存的大小(根据实际服务器的内存设置,我设置的是 2048M 后就可以了)
3. 如果发现卡在某个环节,记得去查看 hadoop 安装目录下的 logs,里面有很多日志类型,包括 nodeManageer,resourceManager 等,执行不动了,日志里面会有相应的日志和提示可以帮助发现问题。

正文完
 0