Hadoop架构
HDFS架构
概念:HDFS架构采用主从式架构,是一种Master-Slave结构
-
Master------NameNode
-
Slave------DataNode
结构:
-
Client(客户端)
作为资源请求的载体,想Hadoop集群发送请求
具体作用:
-
切分文件:文件上传HDFS的时候,将文件切成一个个Block再进行存储
-
与NameNode交互,获取文件的位置信息
-
与DataNode交互,读取或者写入数据
-
Client提供一些命令
-
管理HDFS
start-all.sh //启动Hadoop集群
-
访问HDFS
hdfs dfs -put //想hdfs文件系统上传文件
-
-
-
NameNode(名称结点)
HDFS的管理者,接受并处理Client向Hadoop发送请求以及接收来自DataNode的周期性的信息
具体作用:
-
配置副本策略
-
处理客户端读写请求
-
管理Block的映射信息,以元数据的形式存储于Fsimage 镜像文件中
-
管理HDFS 的名称空间
-
-
DataNode(数据结点)
接收来自NameNode的命令,DataNode执行具体命令
具体作用:
-
存储实际的数据块
-
执行数据块的读写操作
-
-
SecondaryNameNode(第二名称结点)
在Nameode宕机时存储集群的快照,便于其恢复此前的集群状态
(不是NameNode的热备,NameNode宕机是无法替换NameNode并执行其功能提供服务)
具体作用:
-
辅助NameNode,分担其工作量
-
定期合并Fsimage 和 Edits,并推送给NameNode
-
在紧急情况下,可辅助恢复NameNode
-
HDFS架构优缺点
优点
-
高容错
-
数据自动保存多个副本,提高容错
-
副本丢失可自动恢复
-
-
可处理数据容量大
-
数据规模大。GB\TB甚至PB
-
文件规模大,可处理百万规模的文件
-
-
支持流式数据访问,保证数据的一致性
-
可以运行在廉价服务器(多副本,更可靠)
缺点
-
不适合低延时的数据访问
-
无法高效的对大量小文件存储
-
占用NameNode大量内存存储文件(NameNode内存有限)
-
小文件存储寻道时间会超过读取时间
-
-
不能并发写入和文件随机修改
-
不能多个线程同时写
-
仅支持数据append(追加),无法随机修改
-
YARN架构
概念:HDFS架构采用主从式架构,是一种Master-Slave结构
基本组成:主要由 ResourceManager 、 NodeManager 、Applica- tionMaster(MRAppMstr/MPIAppMstr)和 Container等组件构成
-
Master------ResourceManager
-
Slave------NodeManager
ResourceManager:对每个 NodeManager上的资源进行统一管理和调度
基本组成:主要由 ResourceManager 、 NodeManager 、Applica- tionMaster(MRAppMstr/MPIAppMstr)和 Container等组件构成
-
ResourceManager(RM):全局资源管理器,对每个 NodeManager上的资源进行统一管理和调度
-
RM由调度器(Scheduler)和应用程序管理器(ASM,Applications Manager)
-
-
调度器:根据容量、队列等条件将系统的资源分配给运行的应用程序(纯调度器)
-
应用程序管理器:负责管理整个系统的所有应用程序
-
ApplicationMaster(AM):用户提交的每个应用程序都包含一个AM
-
与RM协商获取资源(Container表示)
-
将得到的任务进一步分配给内部任务
-
与NM通信以启动/停止任务
-
监控所有任务运行状态,任务运行失败重新申请资源重启任务
-
-
NodeMaster(NM):是每个节点上的资源和任务管理器
-
定时想RM汇报本节点的资源占用情况和Containter的运行状态
-
接收并处理来自AM的Containter启动/停止的各种请求
-
-
Containter:YARN的资源抽象,封装了各个节点的多维度资源