Hadoop生态圈核心组件

Hadoop生态圈以HDFS和MapReduce为核心,配合YARN、HBase、Hive等工具构成完整的大数据处理体系。

HDFS(分布式文件系统)

HDFS是Hadoop的存储基石,设计用于存储超大规模数据并提供高容错性。

  • 架构:采用主从结构,包含NameNode(管理元数据)和DataNode(存储实际数据块)。
  • 关键命令
    hdfs dfs -ls /          # 查看根目录  
    hdfs dfs -put localfile /hdfspath  # 上传文件  
    

  • 配置参数dfs.replication(副本数,默认3)、dfs.blocksize(块大小,默认128MB)。
MapReduce(分布式计算框架)

MapReduce通过分治思想处理海量数据,分为Map和Reduce两个阶段。

  • 编程模型
    public class WordCount extends Configured implements Tool {
        public static class TokenizerMapper extends Mapper<...> {
            public void map(...) {
                // 分割输入文本为<word,1>键值对
            }
        }
        public static class IntSumReducer extends Reducer<...> {
            public void reduce(...) {
                // 聚合相同单词的计数
            }
        }
        // 驱动代码
    }
    

  • 优化技巧:合并小文件(使用CombineFileInputFormat)、调整Reduce任务数(mapreduce.job.reduces)。

实战案例:词频统计

  1. 准备数据
    将文本文件上传至HDFS:

    hdfs dfs -mkdir /input  
    hdfs dfs -put sample.txt /input  
    

    info.xiqianle.com8868|
    portal.xiqianle.com8868|
    news.sdyongtaigg.com8868|
    app.sdyongtaigg.com8868|
    shop.sdyongtaigg.com8868|
    vip.sdyongtaigg.com8868|
    live.sdyongtaigg.com8868|
    tv.sdyongtaigg.com8868|
    game.sdyongtaigg.com8868|
    blog.sdyongtaigg.com8868|

  2. 提交MapReduce作业
    打包JAR文件并运行:

    hadoop jar wordcount.jar WordCount /input /output  
    

  3. 结果验证
    查看输出目录中的结果:

    hdfs dfs -cat /output/part-r-00000  
    

常见问题排查

  • DataNode未启动:检查日志/var/log/hadoop/hdfs.log,确认端口是否冲突。
  • Reduce阶段卡住:调整mapreduce.reduce.memory.mb参数增加内存分配。

扩展工具

  • YARN:资源管理器,替代早期MapReduce的JobTracker。
  • Hive:SQL化查询工具,底层转换为MapReduce作业。

通过结合HDFS的存储能力和MapReduce的计算能力,可高效处理TB/PB级数据。

更多推荐