日期:2014-05-16  浏览次数:20525 次

hadoop学习(六)WordCount示例深度学习MapReduce过程(1)

        花了整整一个下午(6个多小时),整理总结,也算是对这方面有一个深度的了解。日后可以回头多看看。

        我们都安装完Hadoop之后,按照一些案例先要跑一个WourdCount程序,来测试Hadoop安装是否成功。在终端中用命令创建一个文件夹,简单的向两个文件中各写入一段话,然后运行Hadoop,WourdCount自带WourdCount程序指令,就可以输出写入的那句话各个不同单词的个数。但是这不是这篇博客主要讲的内容,主要是想通过一个简单的Wordcount程序,来认识Hadoop的内部机制。并通过此来深入了解MapReduce的详细过程。在Thinking in BigDate(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解中我们已经很大概梳理一下,Hadoop内部集群架构,并对MapReduce也有初步的了解,这里我们以WourdCount程序来深入的探讨MapReduce的过程。

利用命令行,测试WourdCount程序:

WourdCount程序就是统计文本中字母的个数

1、创建Wordcount示例文件


zhangzhen@ubuntu:~/software$ mkdir input
zhangzhen@ubuntu:~/software$ cd input/
zhangzhen@ubuntu:~/software/input$ echo "I am zhangzhen">test1.txt
zhangzhen@ubuntu:~/software/input$ echo "You are not zhangzhen">test2.txt
zhangzhen@ubuntu:~/software/input$ cd ../hadoop-1.2.1/
zhangzhen@ubuntu:~/software/hadoop-1.2.1$ cd bin
zhangzhen@ubuntu:~/software/hadoop-1.2.1/bin$ ls
hadoop             slaves.sh                  start-mapred.sh           stop-mapred.sh
hadoop-config.sh   start-all.sh               stop-all.sh               task-controller
hadoop-daemon.sh   start-balancer.sh          stop-balancer.sh
hadoop-daemons.sh  start-dfs.sh               stop-dfs.sh
rcc                start-jobhistoryserver.sh  stop-jobhistoryserver.sh
zhangzhen@ubuntu:~/software/hadoop-1.2.1/bin$ jps(确定Hadoop已经起来了)
7101 SecondaryNameNode
7193 JobTracker
7397 TaskTracker
9573 Jps
6871 DataNode
6667 NameNode
zhangzhen@ubuntu:~/software/hadoop-1.2.1/bin$ cd ..
zhangzhen@ubuntu:~/software/hadoop-1.2.1$ ls
bin          data                       hadoop-minicluster-1.2.1.jar  libexec      share
build.xml    docs                       hadoop-test-1.2.1.jar         LICENSE.txt  src
c++          hadoop-ant-1.2.1.jar       hadoop-tools-1.2.1.jar        logs         webapps
CHANGES.txt  hadoop-client-1.2.1.jar    ivy                           NOTICE.txt
conf         hadoop-core-1.2.1.jar      ivy.xml                       README.txt
contrib      hadoop-examples-1.2.1.jar  lib                           sbin
zhangzhen@ubuntu:~/software/hadoop-1.2.1$ bin/hadoop dfs -put ../input in  //把文件上传的hdfa中的in目录中,其实这个说法有误
zhangzhen@ubuntu:~/software/hadoop-1.2.1$ bin/hadoop dfs -ls .in/*
ls: Cannot access .in/*: No such file or directory.
zhangzhen@ubuntu:~/software/hadoop-1.2.1$ bin/hadoop dfs -ls ./in/*
-rw-r--r--   1 zhangzhen supergroup         15 2014-03-22 10:45 /user/zhangzhen/in/test1.txt
-rw-r--r--   1 zhangzhen supergroup         22 2014-03-22 10:45 /user/zhangzhen/in/test2.txt 

        注意:Hadoop中是没有当前目录这个概念的。所以上传到hdfs中的文件,我们是不能通过cd命令、ls命令,查看目录中的文件。这里我们通过就是上面和下面命令查看hdfs中文件的方法。

       在每个版本中,hadoop-examples-1.2.1.jar的位置不一样,在Hadoop1.2.1版本中,我们hadoop-examples-1.2.1.jar文件是在Hadoop目录中的,这里我们需要把这个hadoop-examples-1.2.1.jar拷贝到/bin 目录中。