Hadoop 2.4新API入门教程:mapred与mapreduce对比与编程示例
需积分: 10 192 浏览量
更新于2024-07-20
收藏 488KB PDF 举报
本文档旨在指导读者如何查看和使用Hadoop的新API进行编程。Hadoop是一个广泛使用的开源分布式计算框架,主要用于大数据处理。在Hadoop 2.4版本中,MapReduce API经历了一次重大更新,原有的mapred包已被弃用,取而代之的是新的mapreduce包。理解这两个包的区别对程序员来说至关重要。
首先,了解哪个包被弃用。在Hadoop早期版本中,mapred包是主要的编程接口,但随着Hadoop的演进,mapreduce包成为了推荐的API。mapred包中的功能在新版本中可能已不再维护,使用mapreduce包可以确保更好的性能和兼容性。
对于初次接触Hadoop API的开发者,文章将重点讲解以下几个关键知识点:
1. 初始化Job对象的方式不同:在旧API(mapred)中,使用`JobConf`类来初始化Job对象,例如通过`JobConf job = new JobConf();`。而在新API(mapreduce)中,通常使用`Job`接口,创建`Job`实例并设置相关参数,如`Job job = Job.getInstance(conf);`,这里的`conf`是对`Configuration`对象的操作。
2. 编程示例:文章提供了具体的代码示例,展示了如何使用新旧API来实现计算文件`booklist.log`行数的基本MapReduce任务。新API中,开发者需要导入`org.apache.hadoop.mapreduce.Job`和`org.apache.hadoop.mapreduce.lib.input.FileInputFormat`等类。在`main`方法中,首先设置`Job`实例,然后配置输入和输出路径,接着调用`job.waitForCompletion(true)`等待任务完成。
步骤如下:
- 新建MapReduce工程,配置必要的配置文件和目录结构。
- 复制`hadoop`配置文件到工程的`src`目录。
- 创建`conf`目录并设置日志配置。
- 在`bookCount`目录下编写Java代码,如`BookCount.java`,定义Mapper、Reducer类以及`main`函数。
- 使用`FileInputFormat`和`FileOutputFormat`指定输入和输出路径,然后创建`Job`实例并提交任务。
最后,提到如何生成测试数据文件`vinamelist.log`,将其添加到HDFS中,以便在Hadoop集群上运行MapReduce任务。通过`hdfs copyFromLocal`命令将本地文件复制到HDFS的/user/hduser目录下。
这篇文章不仅提供了一个学习和实践Hadoop新API的入门教程,还展示了如何迁移旧代码到新API,这对于提升Hadoop编程技能和适应Hadoop框架的更新迭代非常有帮助。
2011-03-18 上传
2018-09-14 上传
2016-05-22 上传
2023-08-15 上传
2023-03-22 上传
2023-08-09 上传
2023-05-27 上传
2024-11-12 上传
2023-03-12 上传