Hadoop新旧API对比教程:从查看API到实战编程
4星 · 超过85%的资源 需积分: 10 125 浏览量
更新于2024-07-23
收藏 488KB PDF 举报
"教你如何查看API及使用hadoop新api编程"
在Hadoop生态系统中,API(应用程序编程接口)是开发者用来构建分布式应用的关键工具。这篇教程将指导你如何查看Hadoop API以及如何利用Hadoop的新API进行编程。了解并熟练掌握Hadoop API的更新对于优化代码性能和兼容性至关重要。
Hadoop 2.4引入了新的MapReduce API,旨在提高性能、可伸缩性和易用性。这个新API主要集中在`org.apache.hadoop.mapreduce`包下,而旧的API则位于`org.apache.hadoop.mapred`包中。以下是关于这两个API的一些关键点:
1. 弃用的API:
- `org.apache.hadoop.mapred`包在Hadoop 2.x版本中被认为是过时的。虽然它仍然可用,但建议开发者逐渐迁移到新API,以利用更现代的特性和改进。
2. 旧API初始化Job:
- 在旧API中,我们通常使用`JobConf`类来初始化Job。例如:
```java
JobConf conf = new JobConf(new Configuration(), BookCount.class);
Job job = Job.getInstance(conf, "Book Count");
```
3. 新API初始化Job:
- 在新API中,我们使用`Job`类的静态方法`getInstance()`来初始化Job对象,如下所示:
```java
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "Book Count");
```
以下是使用新API编写MapReduce程序的一个简单示例,该程序计算`booklist.log`文件的行数:
```java
package bookCount;
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.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class BookCountNewApi {
public static class TokenizerMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
// Mapper逻辑
}
public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
// Reducer逻辑
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "Book Count");
job.setJarByClass(BookCountNewApi.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
```
要运行这个程序,你需要确保Hadoop配置文件(如`core-site.xml`, `hdfs-site.xml`等)位于项目的`src`目录下,并且有一个`log4j.properties`文件位于`conf`目录中。然后,你可以通过在Hadoop集群上运行`runasapplication`或使用Hadoop插件的“Run on Hadoop”功能来执行MapReduce任务。
在使用新API时,要注意的关键点包括使用`mapreduce.lib.input.TextInputFormat`和`mapreduce.lib.output.TextOutputFormat`作为默认输入和输出格式,以及使用`job.waitForCompletion(true)`来等待作业完成并返回状态。
理解并熟练使用Hadoop的新API不仅可以提高代码质量,还可以更好地利用Hadoop的最新特性,如YARN资源管理、动态分区支持和更高效的 Shuffle 阶段。因此,对于任何致力于Hadoop开发的程序员来说,这是一个值得投入时间和精力的重要领域。
2013-09-23 上传
2018-02-26 上传
2023-03-29 上传
2014-05-15 上传
2022-09-19 上传
2013-03-05 上传
2012-12-23 上传
丞小良
- 粉丝: 0
- 资源: 18
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建