MapReduce 编程 系列四 MapReduce例子程序运行

MapReduce程序编译是可以在普通的Java环境下进行,现在来到真实的环境上运行。

首先,将日志文件放到HDFS目录下

$ hdfs dfs -put *.csv /user/chenshu/share/logs/
14/09/27 17:03:22 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
$hdfs dfs -ls /user/chenshu/share/logs
14/09/27 17:03:35 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 10 items
-rw-r--r--   3 chenshu chenshu     539026 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-05-10.0.csv
-rw-r--r--   3 chenshu chenshu      33212 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-05-12.0.csv
-rw-r--r--   3 chenshu chenshu    1117191 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-05-13.0.csv
-rw-r--r--   3 chenshu chenshu    2642634 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-05-18.0.csv
-rw-r--r--   3 chenshu chenshu    4676438 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-06-01.1.csv
-rw-r--r--   3 chenshu chenshu     633015 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-06-27.0.csv
-rw-r--r--   3 chenshu chenshu    4749439 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-07-01.1.csv
-rw-r--r--   3 chenshu chenshu    1551312 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-08-01.2.csv
-rw-r--r--   3 chenshu chenshu    2957316 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-08-11.0.csv
-rw-r--r--   3 chenshu chenshu    4032863 2014-09-27 17:03 /user/chenshu/share/logs/sign_2014-09-01.1.csv

同时还要确保output目录不存在,该目录会被MapReduce程序创建,用于存放输出结果:

$ hdfs dfs -rm -r /user/chenshu/share/output

然后运行程序,观察输出结果

[[email protected] example1]$ hadoop jar target/mr1_example1-1.0-SNAPSHOT.jar org.freebird.LogJob /user/chenshu/share/logs /user/chenshu/share/output
14/09/27 17:57:41 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
14/09/27 17:57:42 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
14/09/27 17:57:42 INFO input.FileInputFormat: Total input paths to process : 10
14/09/27 17:57:46 INFO mapred.JobClient: Running job: job_201404261903_548924
14/09/27 17:57:47 INFO mapred.JobClient:  map 0% reduce 0%
14/09/27 17:58:11 INFO mapred.JobClient:  map 40% reduce 0%
14/09/27 17:58:12 INFO mapred.JobClient:  map 80% reduce 0%
14/09/27 17:58:20 INFO mapred.JobClient:  map 100% reduce 0%
14/09/27 17:58:25 INFO mapred.JobClient:  map 100% reduce 8%
...
14/09/27 17:59:12 INFO mapred.JobClient:     Reduce input records=163643
14/09/27 17:59:12 INFO mapred.JobClient:     Reduce input groups=162631
14/09/27 17:59:12 INFO mapred.JobClient:     Combine output records=163643
14/09/27 17:59:12 INFO mapred.JobClient:     Physical memory (bytes) snapshot=6787436544
14/09/27 17:59:12 INFO mapred.JobClient:     Reduce output records=162631
14/09/27 17:59:12 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=43714277376
14/09/27 17:59:12 INFO mapred.JobClient:     Map output records=354282

现在将output目录都复制到本地磁盘,查看结果:

hdfs dfs -get /user/chenshu/share/output/

然后查看本地output目录:

[[email protected] output]$ ll -alh
total 4.3M
drwxrwxr-x 3 chenshu chenshu 4.0K Sep 27 18:02 .
drwxrwxr-x 6 chenshu chenshu 4.0K Sep 27 18:03 ..
drwxrwxr-x 3 chenshu chenshu 4.0K Sep 27 18:02 _logs
-rw-r--r-- 1 chenshu chenshu 286K Sep 27 18:02 part-r-00000
-rw-r--r-- 1 chenshu chenshu 290K Sep 27 18:02 part-r-00001
-rw-r--r-- 1 chenshu chenshu 284K Sep 27 18:02 part-r-00002
-rw-r--r-- 1 chenshu chenshu 284K Sep 27 18:02 part-r-00003
-rw-r--r-- 1 chenshu chenshu 289K Sep 27 18:02 part-r-00004
-rw-r--r-- 1 chenshu chenshu 284K Sep 27 18:02 part-r-00005
-rw-r--r-- 1 chenshu chenshu 290K Sep 27 18:02 part-r-00006
-rw-r--r-- 1 chenshu chenshu 284K Sep 27 18:02 part-r-00007
-rw-r--r-- 1 chenshu chenshu 285K Sep 27 18:02 part-r-00008
-rw-r--r-- 1 chenshu chenshu 286K Sep 27 18:02 part-r-00009
-rw-r--r-- 1 chenshu chenshu 290K Sep 27 18:02 part-r-00010
-rw-r--r-- 1 chenshu chenshu 288K Sep 27 18:02 part-r-00011
-rw-r--r-- 1 chenshu chenshu 287K Sep 27 18:02 part-r-00012
-rw-r--r-- 1 chenshu chenshu 281K Sep 27 18:02 part-r-00013
-rw-r--r-- 1 chenshu chenshu 286K Sep 27 18:02 part-r-00014
-rw-r--r-- 1 chenshu chenshu    0 Sep 27 18:02 _SUCCESS

打开其中一个part-r文件,可以看到结果如下:

536dbba04700aab274729ce9        2
536dbba14700aab274729cf9        2
536dbba14700aab274729cff        2
536dbba14700aab274729d02        2
536dbba14700aab274729d11        2
536dbba14700aab274729d20        2
536dbba14700aab274729d89        2
536dbba14700aab274729d8f        2
536dbba14700aab274729d98        3
536dbba14700aab274729d9e        3
536dbba14700aab274729de9        2
536dbba14700aab274729def        2
536dbba14700aab274729df8        2
536dbba14700aab274729dfe        2
536dbba14700aab274729e8e        2
536dbba14700aab274729ed9        3
536dbba14700aab274729eee        2

程序运行成功了。

所有代码在gitlab.com上。

[email protected]:hadoop/share.git

时间: 2024-10-24 08:52:35

MapReduce 编程 系列四 MapReduce例子程序运行的相关文章

MapReduce 编程 系列七 MapReduce程序日志查看

首先,如果需要打印日志,不需要用log4j这些东西,直接用System.out.println即可,这些输出到stdout的日志信息可以在jobtracker站点最终找到. 其次,如果在main函数启动的时候用System.out.println打印的日志,直接在控制台就可以看到. 再其次,jobtracker站点很重要. http://your_name_node:50030/jobtracker.jsp 注意,在这里看到Map 100%不一定正确,有时候会卡在Map阶段并没有完成,而此时居然

MapReduce 编程 系列五 MapReduce 主要过程梳理

前面4篇文章介绍了如何编写一个简单的日志提取程序,读取HDFS share/logs目录下的所有csv日志文件,然后提取数据后,最终输出到share/output目录下. 本篇停留一下,梳理一下主要过程,然后提出新的改进目标. 首先声明一下,所有的代码都是maven工程的,没有使用任何IDE.  这是我一贯的编程风格,用Emacs + JDEE开发.需要使用IDE的只需要学习如何在IDE中使用maven即可. 可比较的序列化 第一个是序列化,这是各种编程技术中常用的.MapReduce的特别之处

MapReduce 编程 系列六 MultipleOutputs使用

在前面的例子中,输出文件名是默认的: _logs part-r-00001 part-r-00003 part-r-00005 part-r-00007 part-r-00009 part-r-00011 part-r-00013 _SUCCESS part-r-00000 part-r-00002 part-r-00004 part-r-00006 part-r-00008 part-r-00010 part-r-00012 part-r-00014 part-r-0000N 还有一个_SUC

MapReduce编程系列 — 3:数据去重

1.项目名称: 2.程序代码: package com.dedup; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce

MapReduce编程系列 — 4:排序

1.项目名称: 2.程序代码: package com.sort; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce

MapReduce编程系列 — 1:计算单词

1.代码: package com.mrdemo; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import o

MapReduce编程系列 — 2:计算平均分

1.项目名称: 2.程序代码: package com.averagescorecount; import java.io.IOException; import java.util.Iterator; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWrit

MapReduce编程系列 — 5:单表关联

1.项目名称: 2.项目数据: chile    parentTom    LucyTom    JackJone    LucyJone    JackLucy    MaryLucy    BenJack    AliceJack    JesseTerry    AliceTerry    JessePhilip    TerryPhilip    AlimaMark    TerryMark    Alma 3.设计思路: 分析这个实例,显然需要进行单表连接,连接的是左表的parent列

MapReduce编程系列 — 6:多表关联

1.项目名称: 2.程序代码: 版本一(详细版): package com.mtjoin; import java.io.IOException; import java.util.Iterator; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.J