我是怎么玩hadoop的(一)--运行自己的mapreduce

单拿标题来讲,看来有点装x,但是没有恶意,知识记录自己的学习过程,希望能碰到一些志同道合的人,一起讨论。

首先,我们要理解:什么是hadoop?给人的第一感觉就一个字“云”,似乎带着点神奇的色彩,不可否认hadoop有他独特的地方,但也没那么神乎其神。他是一个开源框架,可以编写和运行分布式应用处理大规模数据,通过建立hadoop集群和运行一些mapred例子,我所感到只有就个字:“方便”、“健壮”、“可扩展”、“简单”。hadoop自身带有文件系统,可以处理大规模数据,相比较下:

会和sql数据库有什么区别呢?

1.随着数据量的增大,提高数据库配置的开销越来越大,2倍于pc机的服务器的价格远远高于2台pc机的价格,这就是hadoop的优势,增加一个电脑(节点),要比一次服务器升级划算的多。

2.用键值代替了关系表,个人感觉在大规模数据面前的数据处理,键值对跟为灵活。

如何理解hadoop的mapreduce:

这里有一篇文章 我觉得很有意思:这里提供个连接供大家学习 我是如何向老婆解释MapReduce的?

概念性的东西听着有些乏味:下面我们动手改一个自己的mapreduce程序:

我们都知道hadoop自带例子中有一个wordcount的例子,下面我们就改写这个例子,执行一个属于我们自己的mapreduce程序;

1、首先要找到wordcount的源代码,在hadoop目录下的src/examples/org/apache/hadoop/examples/WordCount.java

2、创建文件夹并且把wordcount文件拷出来:

mkdir playground mkdir playground/src mkdir playground/classes cp src/examples/org/apache/hadoop/examples/WordCount.java playground/src/WordCount.java


3、在hadoop框架中编译和执行这个副本

javac -classpath hadoop-0.20.2-core.jar:lib/commons-cli-1.2.jar -d playground/classes/ playground/src/WordCount.java

[liye@test237 hadoop-0.20.2]$ jar -cvf playground/wordcount.jar -C playground/classes/ . 标明清单(manifest) 增加:org/(读入= 0) (写出= 0)(存储了 0%) 增加:org/apache/(读入= 0) (写出= 0)(存储了 0%) 增加:org/apache/hadoop/(读入= 0) (写出= 0)(存储了 0%) 增加:org/apache/hadoop/examples/(读入= 0) (写出= 0)(存储了 0%) 增加:org/apache/hadoop/examples/WordCount.class(读入= 1911) (写出= 996)(压缩了 47%) 增加:org/apache/hadoop/examples/WordCount$IntSumReducer.class(读入= 1789) (写出= 746)(压缩了 58%) 增加:org/apache/hadoop/examples/WordCount$TokenizerMapper.class(读入= 1903) (写出= 819)(压缩了 56%)


4、运行你的程序,出现如下信息说明执行成功:

[liye@test237 hadoop-0.20.2]$ bin/hadoop jar playground/wordcount.jar org.apache.hadoop.examples.WordCount input my_output 11/12/05 21:33:30 INFO input.FileInputFormat: Total input paths to process : 1 11/12/05 21:33:31 INFO mapred.JobClient: Running job: job_201111281334_0014 11/12/05 21:33:32 INFO mapred.JobClient: map 0% reduce 0% 11/12/05 21:33:41 INFO mapred.JobClient: map 100% reduce 0% 11/12/05 21:33:53 INFO mapred.JobClient: map 100% reduce 100% 11/12/05 21:33:55 INFO mapred.JobClient: Job complete: job_201111281334_0014 11/12/05 21:33:55 INFO mapred.JobClient: Counters: 17 11/12/05 21:33:55 INFO mapred.JobClient: Job Counters 11/12/05 21:33:55 INFO mapred.JobClient: Launched reduce tasks=1 11/12/05 21:33:55 INFO mapred.JobClient: Launched map tasks=1 11/12/05 21:33:55 INFO mapred.JobClient: Data-local map tasks=1 11/12/05 21:33:55 INFO mapred.JobClient: FileSystemCounters 11/12/05 21:33:55 INFO mapred.JobClient: FILE_BYTES_READ=25190 11/12/05 21:33:55 INFO mapred.JobClient: HDFS_BYTES_READ=44253 11/12/05 21:33:55 INFO mapred.JobClient: FILE_BYTES_WRITTEN=50412 11/12/05 21:33:55 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=17876 11/12/05 21:33:55 INFO mapred.JobClient: Map-Reduce Framework 11/12/05 21:33:55 INFO mapred.JobClient: Reduce input groups=1857 11/12/05 21:33:55 INFO mapred.JobClient: Combine output records=1857 11/12/05 21:33:55 INFO mapred.JobClient: Map input records=734 11/12/05 21:33:55 INFO mapred.JobClient: Reduce shuffle bytes=25190 11/12/05 21:33:55 INFO mapred.JobClient: Reduce output records=1857 11/12/05 21:33:55 INFO mapred.JobClient: Spilled Records=3714 11/12/05 21:33:55 INFO mapred.JobClient: Map output bytes=73129 11/12/05 21:33:55 INFO mapred.JobClient: Combine input records=7696 11/12/05 21:33:55 INFO mapred.JobClient: Map output records=7696 11/12/05 21:33:55 INFO mapred.JobClient: Reduce input records=1857

5、查看结果,在文件系统的my_output中

6、最后大家可以任意更改wordcount.java里面的文件,达到自己想要的效果。

<think>好的,我现在需要回答用户关于hadoop-mapreduce-examples-3.1.4.jar功能的提问。首先,我要确认这个JAR文件是Hadoop部分,特别是MapReduce的例子。 我应该先回忆Hadoop的组件结构。Hadoop主要包括HDFS和MapReduce,而MapReduce例子包通常包含些演示程序。用户提到的是3.1.4版本,这个版本可能包含的标准示例有哪些呢? 可能需要列举常见的例子,比如WordCount,计算词频。然后还有其他比如排序、Join操作、统计等。每个例子的用途需要简要说明,让用户了解它们的作用。 另外,这个JAR文件的位置可能在Hadoop安装目录的share/hadoop/mapreduce下,用户可以通过命令行运行这些示例。需要提到如何调用它们,比如使用hadoop jar命令,指定主类名和参数。 还要注意,不同版本的Hadoop可能例子略有不同,但3.1.4应该包含大部分经典示例。需要确保信息准确,可能需要查阅相关文档或版本发布说明来确认。 另外,用户可能想知道这些示例的用途,以便学习MapReduce编程或测试集群。因此,回答中需要说明这些示例既是学习工具,也是测试工具。 需要避免错误,比如不存在的例子,或者错误的命令语法。确保每个例子的描述简洁明了,让用户能快速理解每个示例的功能。 总结下来,回答的结构应该是先介绍JAR文件的作用,然后列出主要示例及其功能,最后说明如何使用它们。同时,提醒用户查阅官方文档获取完整列表。</think>Hadoop MapReduce Examples 3.1.4.jar 是 Apache Hadoop 官方提供的示例程序集合,主要用于演示 MapReduce 编程模型的实际应用。该 JAR 文件通常位于 Hadoop 安装目录的 `share/hadoop/mapreduce/` 路径下,包含以下典型功能示例: --- ### **核心功能示例** 1. **WordCount** - **用途**:统计文本文件中每个单词的出现次数 - **命令示例**: ```bash hadoop jar hadoop-mapreduce-examples-3.1.4.jar wordcount /input /output ``` 2. **Teragen/Terasort** - **用途**:生成大规模随机数据并测试分布式排序性能 - **命令示例**: ```bash hadoop jar hadoop-mapreduce-examples-3.1.4.jar teragen 1000000 /teragen-input hadoop jar hadoop-mapreduce-examples-3.1.4.jar terasort /teragen-input /terasort-output ``` 3. **Pi Estimator** - **用途**:通过蒙特卡洛方法估算圆周率 $π$ 的值 - **命令示例**: ```bash hadoop jar hadoop-mapreduce-examples-3.1.4.jar pi 100 1000 ``` 4. **Grep** - **用途**:在大型文本中搜索匹配正则表达式的行 - **命令示例**: ```bash hadoop jar hadoop-mapreduce-examples-3.1.4.jar grep /input /output "error.*" ``` 5. **Join 操作** - **用途**:演示两个数据集(如用户信息与订单记录)的关联查询 - **示例类**:`join.DataJoin` 或 `multifileinput.MultiFileWordCount` --- ### **其他实用工具** - **SecondarySort**:展示如何对中间键值对进行二次排序 - **AggregateWordCount**:优化版词频统计(使用组合器提升性能) - **WordMean/WordMedian**:计算单词长度的均值和中位数 - **RandomTextWriter**:生成随机文本用于测试 --- ### **使用场景** 1. **学习 MapReduce**:通过示例代码理解 Map/Reduce 阶段的数据处理流程 2. **集群验证**:运行 Terasort 等任务测试 Hadoop 集群性能和稳定性 3. **算法验证**:快速验证自定义 MapReduce 逻辑的正确性 --- ### **调用方式** 通过 `hadoop jar` 命令运行指定主类: ```bash hadoop jar hadoop-mapreduce-examples-3.1.4.jar <example_class> [参数...] ``` 完整示例列表可通过以下命令查看: ```bash hadoop jar hadoop-mapreduce-examples-3.1.4.jar ``` 建议参考官方文档获取每个示例的详细参数说明:[Apache Hadoop MapReduce Examples](https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值