Apache Hadoop
外观
文件:Hadoop logo.svg | |
Developer(s) | Apache软件基金会 |
---|---|
Initial release | April 1, 2006 |
Repository |
|
Written in | Java |
Engine | |
Operating system | 跨平台 |
Type | 分布式计算 |
License | Apache许可证2.0 |
Website | hadoop |
Apache Hadoop是一个开源的分布式计算框架,用于处理和存储大规模数据集。它基于Google文件系统和MapReduce的论文设计,能够高效地在计算机集群上运行大数据应用程序。
核心组件[编辑 | 编辑源代码]
Hadoop生态系统由以下几个核心组件组成:
Hadoop分布式文件系统(HDFS)[编辑 | 编辑源代码]
HDFS是一个高度容错的分布式文件系统,设计用于在廉价硬件上运行。它具有以下特点:
- 高吞吐量数据访问
- 支持超大文件(通常为TB到PB级别)
- 一次写入多次读取的访问模型
- 数据自动复制(默认3份)
YARN[编辑 | 编辑源代码]
YARN(Yet Another Resource Negotiator)是Hadoop的资源管理系统,负责集群资源管理和作业调度。
MapReduce[编辑 | 编辑源代码]
MapReduce是Hadoop的编程模型,用于大规模数据集的并行处理。它包含两个主要阶段:
- Map阶段:处理输入数据并生成中间键值对
- Reduce阶段:合并具有相同键的值
以下是一个简单的WordCount示例:
public class WordCount {
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
}
Hadoop Common[编辑 | 编辑源代码]
提供Hadoop模块所需的常用工具和库。
生态系统[编辑 | 编辑源代码]
Hadoop拥有丰富的生态系统,包括:
- Apache Hive:数据仓库基础设施
- Apache Pig:高级数据流语言
- Apache HBase:分布式NoSQL数据库
- Apache Spark:内存计算框架
- Apache ZooKeeper:分布式协调服务
- Apache Sqoop:在Hadoop和关系数据库之间传输数据
- Apache Flume:日志收集和聚合系统
架构[编辑 | 编辑源代码]
应用场景[编辑 | 编辑源代码]
Hadoop广泛应用于以下领域:
- 日志分析
- 推荐系统
- 数据仓库
- 机器学习
- 金融分析
- 生物信息学
优势与局限[编辑 | 编辑源代码]
优势[编辑 | 编辑源代码]
- 高可扩展性:可扩展到数千个节点
- 成本效益:使用廉价硬件
- 高容错性:自动处理节点故障
- 灵活性:支持多种数据类型
局限[编辑 | 编辑源代码]
- 不适合低延迟应用
- 小文件处理效率低
- 复杂的编程模型
版本历史[编辑 | 编辑源代码]
Hadoop的主要版本发布历史:
- Hadoop 1.0 (2011年)
- Hadoop 2.0 (2013年,引入YARN)
- Hadoop 3.0 (2017年,支持纠删码)