首页 > 代码库 > hadoop的第一次WordCount
hadoop的第一次WordCount
1、新建MR工程
2、设置工程名字
3、finish
4、使用navicate浏览,使用package太长了。
5、将hadoop例子下的WordCount复制过来,当然我自己打的,重新熟悉一下。
改改包名即可。
一个示例完成。
6、linux下准备数据文件
>hadoop dfs -mkdir /input (注意,如果你写成了input,则这个实际hadoop目录为/user/root/input,后面配置输入参数需要)
>hadoop dfs -put core-site.xml /input 上传一个文件进入hadoop输入目录
>hadoop dfs -mkdir /output 创建输出目录,注意一定是个空目录,否则hadoop运行报错。
7、配置WordCount的运行参数
(如果直接创建的目录为input,而没有/则参数为/user/root/input /user/root/output)
8、运行(报错哎)
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:java.io.IOException: Failed to set permissions of path: \usr\local\hadoop\tmp\mapred\staging\Administrator13835705\.staging to 0700
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \usr\local\hadoop\tmp\mapred\staging\Administrator13835705\.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
恩,注意第四句话,是在FileUtil.java的第689行报错的。关于权限设置的。
如果我们将它注释掉,就不会影响了。
注意:在linux下开发的话,不会有这个问题。
解决方案:下载,我的文件下面有一个FileUtil.rar,解压这个文件,将里面的org文件夹复制到自己工程的src下。
9、重新运行Run As on hadoop
10、对话框Select Hadoop location
选择我们配置的hadoop这个。
finish
11、成功运行,输出
14/06/15 10:07:13 INFO mapred.LocalJobRunner: reduce > reduce
14/06/15 10:07:13 INFO mapred.Task: Task ‘attempt_local_0001_r_000000_0‘ done.
14/06/15 10:07:13 INFO mapred.JobClient: map 100% reduce 100%
14/06/15 10:07:13 INFO mapred.JobClient: Job complete: job_local_0001
14/06/15 10:07:13 INFO mapred.JobClient: Counters: 19
14/06/15 10:07:13 INFO mapred.JobClient: File Output Format Counters
14/06/15 10:07:13 INFO mapred.JobClient: Bytes Written=370
14/06/15 10:07:13 INFO mapred.JobClient: FileSystemCounters
14/06/15 10:07:13 INFO mapred.JobClient: FILE_BYTES_READ=44614
14/06/15 10:07:13 INFO mapred.JobClient: HDFS_BYTES_READ=848
14/06/15 10:07:13 INFO mapred.JobClient: FILE_BYTES_WRITTEN=177320
14/06/15 10:07:13 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=370
14/06/15 10:07:13 INFO mapred.JobClient: File Input Format Counters
14/06/15 10:07:13 INFO mapred.JobClient: Bytes Read=424
14/06/15 10:07:13 INFO mapred.JobClient: Map-Reduce Framework
14/06/15 10:07:13 INFO mapred.JobClient: Map output materialized bytes=464
14/06/15 10:07:13 INFO mapred.JobClient: Map input records=15
14/06/15 10:07:13 INFO mapred.JobClient: Reduce shuffle bytes=0
14/06/15 10:07:13 INFO mapred.JobClient: Spilled Records=44
14/06/15 10:07:13 INFO mapred.JobClient: Map output bytes=445
14/06/15 10:07:13 INFO mapred.JobClient: Total committed heap usage (bytes)=328073216
14/06/15 10:07:13 INFO mapred.JobClient: SPLIT_RAW_BYTES=103
14/06/15 10:07:13 INFO mapred.JobClient: Combine input records=24
14/06/15 10:07:13 INFO mapred.JobClient: Reduce input records=22
14/06/15 10:07:13 INFO mapred.JobClient: Reduce input groups=22
14/06/15 10:07:13 INFO mapred.JobClient: Combine output records=22
14/06/15 10:07:13 INFO mapred.JobClient: Reduce output records=22
14/06/15 10:07:13 INFO mapred.JobClient: Map output records=24
12、命令查看输出
$ hadoop dfs -cat /output/* (只会列出文件,隐藏的不显示)
13、重新执行WordCount
ERROR security.UserGroupInformation: PriviledgedActionException as:Administrator cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory /output already exists
执行之前删除输出目录内容即可。
14、OK,第一次hadoop之旅成功开始。