一些关于Hadoop的理论知识
本篇文章将全篇以 Hadoop 2.x 为基础为大家介绍 Hadoop
Hadoop 2.x 起,YARN 替代了原本的 JobTracker/TaskTracker 模式,引入 ResourceManager 与 ApplicationMaster,将资源管理与作业调度解耦。
Hadoop 是什么?
Hadoop 是一个开源的、可扩展的、分布式的大数据处理框架。
它的设计理念是:将数据分布到多台普通机器上,并让程序靠近数据运行(移动‘计算’,而不是移动‘数据’)。
优势与缺点
✅ 优势
- 高可靠性:Hadoop 通过数据
多副本机制
,确保即使部分节点发生故障,数据依然不会丢失。 - 高扩展性:可
横向扩展
到成百上千台普通服务器,支持大规模数据处理。 - 高效性:基于 MapReduce
并行处理
模型,能够显著加快数据处理速度。 - 高容错性:节点或任务失败时,系统能
自动检测并重新调度任务
,保障任务完成。
❎ 缺点
- MapReduce 编程模型对实时性不友好(批处理,延迟高);
- 编程门槛相对较高;
- 数据随机访问性能差;
- 运维成本大,对硬件和配置依赖强。
Hadoop 生态系统
组件 | 功能描述 |
---|---|
Hadoop HDFS | Hadoop 分布式存储系统 |
MapReduce | 并行处理框架 |
YARN | 资源管理与调度 |
Hive | 基于 SQL 的数据仓库工具 |
Pig | 数据流脚本语言 |
HBase | 分布式列式数据库 |
Sqoop | 与关系型数据库之间导入导出 |
Flume | 收集日志数据流入 Hadoop |
Zookeeper | 分布式协调服务,提供统一的注册、选举和配置服务(常用于 HBase) |
Oozie | 工作流调度工具 |
Spark | 基于内存的快速大数据计算框架 |
接下来为大家介绍三个核心组件(HDFS、MapReduce、YARN)^^
HDFS
分布式文件系统,负责存储数据。
类似于普通文件系统,但它将文件切分成多个块,分散存储在集群中的多台机器上。
每个数据块默认会备份三份,保证容错性和高可用性。
主节点:
NameNode
,存储元数据(文件名、位置等);从节点:
DataNode
,存储真实数据块。
MapReduce
分布式计算框架,负责计算数据。
编程模型包含两个阶段:Map(映射) 和 Reduce(归约);
用户编写 Map 和 Reduce 函数,框架负责将任务分发到多台机器上执行;
特点是高度容错,适合批处理。
它会把计算任务移动到离数据最近的地方进行执行,因为移动大量数据是非常耗费资源的。
YARN
资源管理系统,负责资源调度。
资源管理和任务调度/监控功分割成不同的进程
主节点:
ResourceManager
,负责给 application 分配资源从节点:
NodeManager
,负责监控容器使用资源情况,并把资源使用情况报告 ResourceManager。这里所说的资源一般是指CPU、内存、磁盘、网络等。
Hadoop工作方式
主从工作方式
一个 Master 和多个 Slave 节点,Slave 节点可以扩招到1000个
项目 | 主节点(Master) | 从节点(Slave) |
---|---|---|
主要职责 | 负责元数据管理、任务调度、资源分配等控制类工作 | 执行实际的存储或计算任务,如保存数据块、运行 MapReduce 任务等 |
HDFS 中角色 | NameNode (存储文件系统的目录结构、数据块位置等元数据) |
DataNode (存储实际的数据块) |
YARN 中角色 | ResourceManager (管理集群资源)ApplicationMaster (调度某个应用的任务) |
NodeManager (管理本节点资源并报告给 ResourceManager)Container (执行任务) |
容错机制 | 通常单点故障(如 NameNode )需配置**高可用模式(HA)**来避免整个集群瘫痪 |
任意从节点故障,系统可自动将任务/副本转移到其他节点,影响较小 |
故障影响 | 故障可能导致整个系统不可用或任务调度失败 | 局部计算或存储失败,影响有限,系统具备自动容错能力 |
硬件要求 | 对稳定性、内存、网络、磁盘性能要求较高 | 可使用普通服务器,但需数量足够以提供分布式计算/存储能力 |
部署建议 | 建议部署在可靠性高、性能优的节点上,并开启冗余/主备机制 | 可大规模横向扩展,支持动态加入或移除 |
守护进程
Hadoop 主要有4个守护进程:
- NameNode :它是HDFS运行在Master节点守护进程。
- DataNode:它是 HDFS 运行在Slave节点守护进程。
- ResourceManager:它是 Yarn 运行在 Master 节点守护进程。
- NodeManager:它是 Yarn 运行在 Slave 节点的守护进程。
除了这些,可能还会有 secondary NameNode,standby NameNode,Job HistoryServer 等进程。
Hadoop 常用命令
Apache Hadoop 3.3.6 – Hadoop 命令指南 - Hadoop 框架
📁 HDFS 文件系统命令
命令 | 作用 |
---|---|
hadoop fs -ls / |
查看根目录下的文件和目录 |
hadoop fs -mkdir /data |
创建新目录 /data |
hadoop fs -put localfile.txt /data/ |
上传本地文件到 HDFS |
hadoop fs -get /data/file.txt ./ |
下载 HDFS 文件到本地 |
hadoop fs -cat /data/file.txt |
查看 HDFS 中的文件内容 |
hadoop fs -rm /data/file.txt |
删除 HDFS 中的文件 |
hadoop fs -rm -r /data/ |
递归删除目录及其内容 |
hadoop fs -du -h /data |
查看目录或文件占用空间 |
hadoop fs -chmod 755 /data |
修改 HDFS 中文件权限 |
🚀 启动/关闭 Hadoop 集群
命令 | 说明 |
---|---|
start-dfs.sh |
启动 HDFS(NameNode 和 DataNode) |
stop-dfs.sh |
关闭 HDFS |
start-yarn.sh |
启动 YARN(ResourceManager 和 NodeManager) |
stop-yarn.sh |
关闭 YARN |
mr-jobhistory-daemon.sh start historyserver |
启动 MapReduce JobHistory 服务(可选) |
mr-jobhistory-daemon.sh stop historyserver |
停止 JobHistory 服务 |
🧰 MapReduce 作业相关命令
命令 | 说明 |
---|---|
hadoop jar yourjob.jar MainClass /input /output |
提交 MapReduce 作业 |
yarn application -list |
查看正在运行的应用 |
yarn application -status |
查看某个应用的状态 |
yarn application -kill |
杀掉某个应用 |
📄 日志查看命令
命令 | 说明 |
---|---|
jps |
查看 Hadoop 组件进程(需安装 JDK) |
tail -f $HADOOP_HOME/logs/*.log |
实时查看日志输出 |
less $HADOOP_HOME/logs/hadoop-*.log |
分页查看日志 |
🧪 其他实用命令
命令 | 说明 |
---|---|
hdfs dfsadmin -report |
查看集群节点、容量、使用情况等摘要 |
hdfs dfsadmin -safemode get |
查看当前是否处于安全模式 |
hdfs dfsadmin -safemode leave |
退出安全模式 |
hdfs dfs -test -e /path |
判断某路径是否存在(返回码为 0 表示存在) |
hdfs namenode -format |
格式化 HDFS(⚠️仅首次初始化) |