幽篁里

Toda mi ambición es ser libre toda mi vida.

0%

Hadoop入门

一些关于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(⚠️仅首次初始化)