前几天偶然在学校学长那里买了一本Hadoop的书,于是想学习一下Hadoop,安装了好久的Cygwin64,再配置hadoop,比较费劲(操作能力啊有待提高),但是一地个wordcount成功运行出来了,还是比价高兴的。
首先格式化namenode
$ bin/hadoop namenode -format
然后启动hadoop
$ bin/start-all.sh
在hdfs下建立输入文件夹
$ bin/hadoop fs -mkdir input
查看建立文件夹是否成功
$ bin/hadoop fs -ls
drwxr-xr-x - anshengqi supergroup 0 2014-06-29 19:27 /user/anshengqi/input
此处有点疑问,为何在/user/anshengqi下找不到input文件夹?
在本地文件夹(如当前目录下)新建两个文件a.txt,b.txt。
{echo "Hello World!">a.txt;echo “Hello Hadoop”>b.txt};
上传上面建立的两个文件到input问件夹下:
$ bin/hadoop fs -put a.txt input,但是此时有错:XXXX could only be replicated to 0 nodes, instead of 1
这个问题是由于没有添加节点的原因,也就是说需要先启动namenode,再启动datanode,然后启动jobtracker和tasktracker。这样就不会存在这个问题了。
$ bin/hadoop-daemon.sh start namenode
$ bin/hadoop-daemon.sh start datanode
$ bin/hadoop-daemon.sh start jobtracker
$ bin/hadoop-daemon.sh start tasktracker
然后可以上传文件。
$ bin/hadoop fs -put a.txt input
查看是否上传成功?
$ bin/hadoop fs -ls input
Found 2 items
-rw-r--r-- 1 anshengqi supergroup 12 2014-06-29 19:34 /user/anshengqi/input/a.txt
-rw-r--r-- 1 anshengqi supergroup 13 2014-06-29 19:35 /user/anshengqi/input/b.txt
上传成功!
运行worldcount程序例子:
14/06/29 19:39:27 INFO mapreduce.Job: Running job: job_201406291926_0001
14/06/29 19:39:28 INFO mapreduce.Job: map 0% reduce 0%
14/06/29 19:39:46 INFO mapreduce.Job: map 50% reduce 0%
14/06/29 19:39:49 INFO mapreduce.Job: map 100% reduce 0%
14/06/29 19:39:55 INFO mapreduce.Job: map 100% reduce 100%
....
查看结果:
$ bin/hadoop fs -cat output/*
Hadoop 1
Hello 2
World 1