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 为例:
创建输入文件:
echo "Introduction to Apache Hadoop" > textfile01.txt echo "Running MapReduce Job" > textfile02.txt
执行 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
- 查看结果:
输出: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 集群的搭建步骤,最后通过基础操作演示为后续探索奠定了坚实基础。掌握这些核心概念后,你已具备应对大数据挑战的初步能力。