
Hadoop新旧API对比教程:从查看API到实战编程

"教你如何查看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开发的程序员来说,这是一个值得投入时间和精力的重要领域。
相关推荐








丞小良
- 粉丝: 0
最新资源
- 深入解析2008年前中国奥运历史的方正奥思课件
- 编程图标工具栏资源包:多媒体与Office图标集合
- CxImage图像处理学习软件源码解读与使用指南
- 掌握JSP中的checkbox全选与取消全选功能实现
- MyEclipse Properties文件编辑插件使用指南
- 全浏览器兼容的JavaScript日期时间选择器组件
- 轻松获取心仪颜色——颜色查看器工具介绍
- C++实例集锦:100条实例帮你快速掌握高级编程技巧
- 全面解析经典常用算法及其应用
- 构建JSP+Struts+JDBC通讯录管理系统的设计与实现
- VB控制的16*16汉字点阵显示屏及程序仿真
- Globus ws-core-4.0.5版本压缩包下载
- 学生信息综合管理系统开发:VB6.0与SQL的融合
- DOS6.22中文版安装指南与文件列表
- 在线学课系统简化中学生选课流程
- MM7接口模拟器:中国移动彩信中心的模拟与测试
- Jad反编译工具使用教程:快速查看class源码
- 掌握.NET配合Gridview遍历数据库数据技巧
- VB绘制曲线的详细教程
- C#网页分析器源代码:图片与链接提取工具
- 倒序文字转换工具VS2005实现与应用
- 动态指定密钥的高效文件加解密解决方案
- CMS原型备份方案详解与实施
- 实现带进度条的大文件AJAX上传功能