-
Hadoop
HDFS
设计原则
–
–
–
–
–
–
特性
–
容灾
–
<
/p>
大容量
/
大吞吐量(水平扩展能力)
p>
–
为
mapreduce
计算设计的数据本地化能力
系统结构
硬件错误是常态而不是异常
流式数据访问
大规模数据集
简单的一致性模型
“
移动计算比移动数据更划算
”
异构软硬件平台间的可移植性
名称节点(
NameNode
)
管理元数据和文件块
管理元数据指管
理元数据信息。
元数据信息包括名字空间、
文件到文件块的映射
、
文件块到数据节点的映射三部分。
管理文件块包括创建新文件
块、
文件复制、
移
除无效文件块以及回
收孤立文件块等内容。
(
1
)字空间或者文件到文件快的映射的任何修改,
HDFS
都会通过
EditLog
记录
下来。
保存到本地磁盘中。
通过这种方式可以提高系统的可靠性
,
并凭借
EditLog
日志,误中恢
复而不必担心数据的一致性问题。
(
2
)块存放的位置信息并不固定而是经常发生变化,因此系统并没有将其持久
化到本地中。
NameNode
启动后并不需要对
DataNode
进行维护,
Data
Node
会周期
性地向
NameNod
e
发生心跳响应汇报其文件块信息。
(
3
)
所有信息都保存在内存中,
p>
所以
NameNode
可以周期性快速地扫
描元数据的
状态,
然后确定出哪些文件块由于
< br>DataNode
宕机而需要重新复制,
哪些件块需要<
/p>
被回收,哪些文件块需要在
DataNode
间进行迁移来保证系统的负载均衡等
元数据
元数据一般有三种类型,都会
被保存在
NameNode
内存中
(
1
)
p>
文件(包括目录)的名称空间,如:
/user//search4
tag/full/
(
2
)
p>
文件到文件块的映射,如:那个文件由几个文件块(
Block
p>
)组成
(
3
)
p>
文件块的位置信息,组成
Block
的文件
块持久化在那几个
DataNode
中。
EditLog
主要保存了元数据更改的历史信息(执行写操作,如新建文件或移动文件),因
此具有非常重要的作用。
EditLog
不仅持久化记录了元
数据信息,也记录了元数
据修改顺序的逻辑时间线,
而逻辑时间
是对文件和文件块进行查找确认的唯一标
识。因此,必须保证
E
ditLog
存储的安全性与可靠性。为了防止丢失整个文件系
统或者客户端最近的几次操作记录,
系统应保证在客户端对元数据的修改操作还
没记录到
EditLog
之前,使该操作对其是
不可见的。
FsImage
FsImage
文件是文件系统元数据的持久化检查点,磁盘
上的元数据信息。当
NameNode
出现问题,
是可以根据
FsImage
和
EditLog
快速从错误中进行数据恢复,
从而保存数据
一致性
fsImage
文件不会更新
文件系统的每个写操作,但是不影响系统的弹性,因为如
果名称节点失败,其元数据的最
新状态可以被重建,具体方式是从磁盘中将
FsImage
加载
到内存,然后将此应用于编辑日志(
EditLog
)中的每个
操作
Secondary
NameNode
如前所述,
editLog
文件会无限增大,虽然在名称节点运行期间不会对系统产生
影响,但如果名称节
点发生重新启动,会发很长时间来运行
editLog
中的每个
操
作,所以将导致
NameNode
启
动过慢情况。
解决方案:
并不是
NameNode
出现问题时候的备用节
点,
它和
NameNode
负责不同时
期,
主
要功能是周期性将
NameNo
de
的元数据信息
FsImage
和<
/p>
EditLog
合并,
防止日志
文件
EditLog
过大。
合并后
FsImage
会在
p>
NameNode
保存一份,保证
Name
Node
失败可以进行恢复。
p>
二级
NameNode
通知
NameNode
生成新的
EditLog
,以后的日志都写到新的日志
文件中,然后二级
N
ameNode
用那
http get
从
NameNode
获得
FsImag
e
以及旧的
EditLog
,然后二级
NameNode
将
FsImage<
/p>
加载到内存中,并执行日志文件中的
操作,然后生成新的
再次二级
Name
Node
将旧的
FsImage
以及旧
的
EditLog
换为新的
FsImage
和新的
EditLog,
更新
Fstime
写入此次检查点发生的
时间。
这样
Nam
eNode
中的
FsImage
保持了
最新的
checkPoint
的元数据信息,
< br>日志文件
也重新开始写入,保证了大小。
管理员可以手工使用命令:
hadoop dfsadmin
–saveNamespace;
大型集群。二级节点是需要
专用机器的,因为需要将
fsimage
加载到内存中。内
p>
存成为瓶颈
管理命名空间
NameNode
p>
管理文件系统的命名空间。任何对文件系统元数据产生修改的操作,
NameNode
都会使用事务日志记录
(
下称
EditLog)
来表示;同样地,修改文件的副
p>
本系数也将往
Editlog
插入一条记录
,
NameNode
将
Editlog
存储在本地操作系统的
文件系统中。同时,文件系统的命名空间
被存储在一个称为
Fslmage
的文件中,
< br>包括文件的属性、文件块到文件的映射以及文件块到数据节点的映射等内容,
Fs
Image
文件也是放在
NameNode
所在的本地文件系统中。
监听请求和处理请求
监听请求指监听
客户端事件和
DataNode
事件。
客户端事件包含名字空间的创建和
删除,文件的创建、读写、重命名和删除,文件列表信
息获取等信息。
DataNode
事件主要包括文件块信息、<
/p>
心跳响应、
出错信息等。
处理请求指处理
上面的监听
请求事件并返回结果。
心跳检测
数据节点会定期将自己的负
载情况通过心跳信息向名称节点汇报,
名称节点才能
掌握数据节
点的数据块的实际情况。
故障恢复
数据节点(
DataNode
)
数据读写
NameNode
对文件块进行创建,
删除,
复制等操作进行指挥和调度,
而
实际对数
据进行客户端直接对
DataNode
进行读写操作。
报告状态
每个
DataNode
节点会周期性地
向
NameNode
发送心跳信号和文件块状态报告,以
便
NameNode
获取到工作集群中
DataNode
节点状态的全局视图,从而掌握它们的
状态。
数据流水线复制
由第一个
DataNode
向第二个<
/p>
DataNode
节点复制,
如此反复进
行下去,
直到完成文
件块及其块副本的流水线复制。
-
-
-
-
-
-
-
-
-
上一篇:自行车零件中英文对照
下一篇:基于linphone实现视频通话小结