跳转到内容

Apache Hadoop简介

来自代码酷

Hadoop简介[编辑 | 编辑源代码]

Hadoop 是一个开源的分布式计算框架,用于高效存储和处理大规模数据集。它基于Google的MapReduce和Google文件系统(GFS)论文设计,能够在廉价的硬件集群上运行,并提供高容错性。Hadoop的核心设计目标是可扩展性可靠性高效性,使其成为大数据处理的主流工具之一。

核心组件[编辑 | 编辑源代码]

Hadoop生态系统主要由以下核心组件构成:

1. Hadoop分布式文件系统 (HDFS)[编辑 | 编辑源代码]

HDFS是Hadoop的存储层,设计用于存储超大规模文件(TB级甚至PB级),并提供高吞吐量的数据访问。其核心特点包括:

  • 分块存储:文件被分割为固定大小的块(默认128MB或256MB),分散存储在集群节点上。
  • 副本机制:每个块默认保存3个副本,确保数据可靠性。
  • 主从架构

graph TD NameNode[NameNode-主节点] --> DataNode1[DataNode] NameNode --> DataNode2[DataNode] NameNode --> DataNode3[DataNode]

2. YARN (Yet Another Resource Negotiator)[编辑 | 编辑源代码]

YARN是Hadoop的资源管理系统,负责集群资源分配和任务调度。其组件包括:

  • ResourceManager:全局资源管理器
  • NodeManager:单个节点上的资源代理

3. MapReduce[编辑 | 编辑源代码]

基于批处理的计算模型,分为两个阶段:

  1. Map阶段:并行处理输入数据
  2. Reduce阶段:聚合Map结果

基础代码示例[编辑 | 编辑源代码]

以下是一个简单的WordCount示例(统计文本中单词出现频率):

// Mapper类
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(LongWritable key, Text value, Context context) 
        throws IOException, InterruptedException {
        String[] words = value.toString().split(" ");
        for (String str : words) {
            word.set(str);
            context.write(word, one);
        }
    }
}

// Reducer类
public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
    public void reduce(Text key, Iterable<IntWritable> values, Context context) 
        throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable val : values) {
            sum += val.get();
        }
        context.write(key, new IntWritable(sum));
    }
}

输入(文本文件):

hello world
hello hadoop
goodbye hadoop

输出

goodbye 1
hadoop  2
hello   2
world   1

数学原理[编辑 | 编辑源代码]

Hadoop的并行处理能力基于分治原理。假设有N个数据块和M个计算节点,理论加速比为:

Sp=T1TpNM

其中:

  • T1:单节点处理时间
  • Tp:并行处理时间

实际应用案例[编辑 | 编辑源代码]

案例:电商用户行为分析 某电商平台使用Hadoop处理每日2TB的用户点击流数据: 1. 数据采集:Flume收集web服务器日志 2. 存储:原始数据存入HDFS 3. 处理

  * Map阶段提取用户ID和行为类型
  * Reduce阶段统计每种行为的频次

4. 输出:生成用户行为热力图,指导商品推荐

与其他技术的比较[编辑 | 编辑源代码]

特性 Hadoop 传统RDBMS
数据规模 PB级 TB级
写模式 一次写入多次读取 随机读写
延迟 高(批处理) 低(实时)
成本 廉价硬件 高端服务器

学习建议[编辑 | 编辑源代码]

  • 初学者应先理解HDFS和MapReduce基本原理
  • 实验环境建议使用Hadoop单机模式(Local Mode)
  • 进阶学习可研究YARN调度机制和HDFS副本策略

Hadoop为大数据处理提供了基础架构,后续可扩展学习Spark、Hive等生态系统工具。