1. 引言

当今世界通过社交媒体、即时通讯和音视频流服务高度互联,人类每天产生的数据量已达到惊人规模。据统计,过去两三年内生成的数据占全球数据总量的90%以上。

随着数据在现代世界中的战略地位日益凸显,且大部分数据以非结构化形式存在,我们迫切需要一个能处理PB级、ZB级甚至更大规模数据的框架——这就是大数据技术的核心需求。

本文将深入探讨Apache Hadoop,这一业界公认的大数据处理利器,它以高可靠性、强扩展性和高效的分布式计算能力著称。

2. Apache Hadoop 是什么?

Apache Hadoop 是一个开源框架,可从单台服务器扩展到数千台机器集群,每台机器提供本地计算和存储能力,专为分布式环境中的大规模数据集存储和处理而设计。

该框架充分利用集群计算优势——将数据分割成小块在集群中的多台服务器上并行处理。同时,Hadoop 与众多工具的灵活集成使其成为现代大数据平台的基础架构,为企业从海量数据中获取洞察提供了可靠且可扩展的解决方案。

3. Hadoop 核心组件

Hadoop 的四大核心组件构成了其系统基石,实现了分布式数据存储与处理:

3.1. Hadoop Common

提供一组基础 Java 库,供所有 Hadoop 模块共享使用,确保各组件协同工作。

3.2. Hadoop 分布式文件系统(HDFS)

HDFS 是专为大规模数据设计的分布式文件系统,提供高吞吐量、高可用性和容错能力。简单来说,它是 Hadoop 的存储组件,将海量数据分散存储在多台机器上,且能运行在普通硬件上,成本效益显著。

3.3. Hadoop YARN

YARN(Yet Another Resource Negotiator)是作业调度框架,负责管理分布式系统的资源调度。简言之,它是 Hadoop 的资源管理核心,统筹处理 HDFS 中存储数据的计算资源。

3.4. Hadoop MapReduce

一种简单的编程模型,通过将非结构化数据转换为键值对(映射阶段),然后在节点间分发并合并结果(归约阶段),实现数据并行处理。通俗地讲,它是 Hadoop 的“大脑”,通过映射和归约两个阶段提供核心处理引擎能力

4. 环境搭建

Hadoop 支持 GNU/Linux 平台。以下演示在 Linux 系统上搭建 Hadoop 集群:

4.1. 前置要求

  • 安装 Java 8/11(最新版 Hadoop 要求),具体版本可参考官方建议
  • 安装 SSH 并确保 sshd 服务运行(Hadoop 脚本依赖)

4.2. 下载安装 Hadoop

详细安装步骤可参考Linux 环境下的 Hadoop 安装配置指南。安装完成后,通过以下命令验证版本:

hadoop version

输出示例:

Hadoop 3.4.0 Source code repository [email protected]:apache/hadoop.git -r bd8b77f398f626bb7791783192ee7a5dfaeec760 
Compiled by root on 2024-03-04T06:29Z 
Compiled on platform linux-aarch_64 
Compiled with protoc 3.21.12 
From source with checksum f7fe694a3613358b38812ae9c31114e 
This command was run using /usr/local/hadoop/common/hadoop-common-3.4.0.jar

⚠️ Hadoop 支持三种运行模式:独立模式、伪分布式模式和完全分布式模式。默认配置为独立模式(本地非分布式),仅运行单个 Java 进程。

5. 基础操作

集群启动后,可执行多种操作:

5.1. HDFS 操作

以下列出管理文件和目录的常用 HDFS 命令

  • 上传文件到 HDFS:

    hdfs dfs -put /local_file_path /hdfs_path
    
  • 从 HDFS 下载文件:

    hdfs dfs -get /hdfs_file_path /local_path
    
  • 列出目录内容:

    hdfs dfs -ls /hdfs_directory_path
    
  • 查看文件内容:

    hdfs dfs -cat /hdfs_file_path
    
  • 检查磁盘使用情况:

    hdfs dfs -du -h /hdfs_path
    

其他实用命令:

  • mkdir:创建目录
  • rm:删除文件/目录
  • mv:移动/重命名文件

5.2. 运行 MapReduce 作业

Hadoop 发行版包含示例程序(位于 hadoop-mapreduce-examples-3.4.0.jar),以 WordCount 为例:

  1. 创建输入文件:

    echo "Introduction to Apache Hadoop" > textfile01.txt
    echo "Running MapReduce Job" > textfile02.txt
    
  2. 执行 MapReduce 作业:

    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.0.jar wordcount input output
    

输出日志片段:

2024-09-22 12:54:39,592 INFO impl.MetricsSystemImpl: Scheduled Metric snapshot period at 10 second(s).
2024-09-22 12:54:39,592 INFO impl.MetricsSystemImpl: JobTracker metrics system started
2024-09-22 12:54:39,722 INFO input.FileInputFormat: Total input files to process : 2
2024-09-22 12:54:39,752 INFO mapreduce.JobSubmitter: number of splits:2
...
2024-09-22 12:54:40,928 INFO mapreduce.Job:  map 100% reduce 100%
2024-09-22 12:54:40,929 INFO mapreduce.Job: Job job_local1009338515_0001 completed successfully
  1. 查看结果:
    hadoop dfs -cat /output/part-r-00000
    
    输出:
    Apache    1
    Hadoop    1
    Introduction    1
    Job    1
    MapReduce    1
    Running    1
    to    1
    

其他示例程序:

  • TeraSort:大规模数据排序
  • RandomTextWriter:生成随机文本数据(用于基准测试)
  • Grep:在输入文件中搜索匹配字符串

5.3. YARN 服务管理

以下列出管理 Hadoop 服务的常用命令

  • 查看节点状态:

    yarn node -list
    
  • 列出运行中的应用:

    yarn application -list
    
  • 部署服务:

    yarn deploy service service_definition.json
    
  • 启动已注册服务:

    yarn app -launch service_name
    
  • 服务生命周期管理:

    yarn app -start service_name    # 启动
    yarn app -stop service_name     # 停止
    yarn app -destroy service_name  # 销毁
    

其他管理命令:

  • daemonlog:查看守护进程日志
  • nodemanager:启动节点管理器
  • proxyserver:启动 Web 代理服务器
  • timelineserver:启动时间线服务器

6. Hadoop 生态系统

Hadoop 负责存储和处理大规模数据集,但需要配套工具完成数据摄取、分析和提取等任务。以下是生态系统中的关键工具:

Apache Ambari
Web 界面集群管理工具,简化 Hadoop 集群的部署、管理和监控

Apache HBase
面向实时应用的分布式列式数据库

Apache Hive
数据仓库基础设施,支持类 SQL 查询管理和分析大规模数据集

Apache Pig
高级脚本语言,简化数据分析任务实现

Apache Spark
集群计算框架,支持批处理、流处理和机器学习

Apache ZooKeeper
为大规模分布式系统提供可靠、高性能的分布式协调服务

7. 总结

本文深入解析了 Apache Hadoop 这一大数据处理框架,它为当今数据驱动时代提供了可扩展且高效的解决方案。我们首先探讨了其核心组件(HDFS、YARN、MapReduce),随后介绍了Hadoop 集群的搭建步骤,最后通过基础操作演示为后续探索奠定了坚实基础。掌握这些核心概念后,你已具备应对大数据挑战的初步能力。