hadoop学习过程-2013.08.22.1--运行WordCount

 

运行WordCount

 

1.      停止hadoop:

stop-all.sh

 

2.      删除dfs. data/*

nonode机器和所有datanode机器上,

”conf/hdfs-site.xml:dfs.data.dir”/usr/hadoop/filesystem/data,删除该目录下所有文件:

    rm   -fr    /usr/hadoop/filesystem/data/*

 

3.      格式化namenode

namenode机器上,在没有启动hadoop的情况下,格式化hadoop namenode:

hadoop    namenode   -format

         必须要输入大写Y,小写y不会被当成肯定回答

 

4.      启动hadoop

namenode机器上,启动hadoop:

start-all.sh

 

5.      新建目录

namenode机器上,建立hadoop目录input:

hadoop    fs   -mkdir    input

 

6.      上传文件

namenode机器上,有文件及内容如下:

~/file/fileA.txt:

 

Hello World Text validxxx

Hello my World

linux demo

 

~/file/fileB.txt:

Hello Hadoop

zip format

Hello and Hello

 

 

namenode机器上,上传本地多个文件到hadoop目录input:

hadoop    fs   -put    ~/file/*    input

如果没有执行删除dfs. data/*”,则错误状况如下

 

I.        put后控制台出现错误大体为:

Error Recovery for null bad datanode[0] nodes == null

File /user/root/input/fileB.txt could only be replicated to 0nodes, instead of 1

II.      查看某一个datanode机器上日志xxx- vmDeb02.log

全路径为/usr/hadoop/hadoop-1.2.1/logs/hadoop-root-datanode-vmDeb02.log,错误大体为 :

Incompatible namespaceIDs in/usr/hadoop/filesystem/data

意思是namespaceIDs不一致。

7.      执行程序WordCount

namenode机器上,

自己修改下hadoop-1.2.1.zip\src\examples\org\apache\hadoop\examples\WordCount.java,编译WordCount.java(代码及编译请看文章hadoop1.2.1修改WordCount并编译”)

将生成好的wordcount.jar(含有WordCount*.class),在hadoop下运行wordcount:

hadoop  jar  xxx/wordcount.jar   org.apache.hadoop.examples.WordCount  input output

 

 

 

8.      查看控制台输出

查看WordCount.java输出到控制台的内容,

Web浏览器打开http://vmdeb01:50030/jobtracker.jsp,其中vmdeb01namenode机器的域名(需在win7下修改C:\windows\System32\drivers\etc\hosts)

依次点击:

Completed Jobs :job_201308221000_0001” ---> map

--->  task_201308221000_0001_m_000000--->All

Completed Jobs :job_201308221000_0001”--->reduce

---> task_201308221000_0001_m_000000---> All

这两处的”stdoutlogs”,即是WordCount.java中System.out.print输出的内容

 

9.      问题

在8中,

Completed Jobs :job_201308221000_0001”---> map    :map阶段

Completed Jobs :job_201308221000_0001”--->reduce   : reduce阶段

map阶段的控制台输出出现了reduce函数中的控制台输出,怎么理解?

是由于main中有这样一句: job.setCombinerClass(IntSumReducer.class),即combiner被设定为reducer了。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值