首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Hadoop Distributed File System 简介(3)

Hadoop Distributed File System 简介(3)

数据存储可靠性HDFS 的一个重要目标是可靠存储数据,即使在 Name node、 Data node 或网络分区中出现故障。
HDFS 克服故障的第一个步骤是探测。HDFS 使用心跳消息来探测 Name node 和 Data node 之间的连通性。
HDFS 心跳有几种情况可能会导致 Name node 和 Data node 之间的连通性丧失。因此,每个 Data node 都向它的 Name node 发送定期心跳消息,这样,如果 Name node 不能接收心跳消息,就表明连通性丧失。 Name node 将不能响应心跳消息的 Data node 标记为 “死 Data node ”,并不再向它们发送请求。存储在一个死节点上的数据不再对那个节点的 HDFS 客户端可用,该节点将被从系统有效地移除。如果一个节点的死亡导致数据块的复制因子降至最小值之下, Name node 将启动附加复制,将复制因子带回正常状态。
展示了发送心跳消息的 HDFS 流程。
图 2.  HDFS 心跳流程数据块再平衡HDFS 数据块可能并不总是均衡地跨 Data node 分布,这意味着一个或多个 Data node 的已使用空间可能没有被充分利用。因此,HDFS 支持使用各种模型重新平衡数据块。一种模型可能是:如果一个 Data node 上的空闲空间太少,该模型将把该节点上的数据自动移动到另一个节点。另一种模型可能是:如果某个文件的需求突然增加,该模型将动态创建额外的副本并重新平衡一个集群中的其他数据块。HDFS 还提供 hadoop                    balance 命令以支持手动平衡任务。
重新平衡的一个常见原因是集群中添加了新的 Data node 。放置新的数据块时, Name node 将考虑各种参数,然后选择接收它们的 Data node 。需要考虑的事项包括:
  • 块副本写入策略
  • 阻止安装或机柜故障导致的数据丢失
  • 减小跨安装网络 I/O
  • 跨集群中的 Data node 的统一数据分布
HDFS 的集群再平衡特性只是它用于保持其数据完整性的一种机制,稍后将讨论其他机制。
数据完整性HDFS 在确保跨集群数据完整性方面做了许多工作。它在 HDFS 文件的内容上使用 checksum 验证,将计算出的 checksums 保存在实际数据所在的名称空间中的独立的隐藏文件中。当客户端检索文件数据时,它能验证收到的数据是否匹配关联文件中存储的 checksum。
HDFS 名称空间通过每个 Name node 保存的一个事务日志存储。文件系统名称空间,以及文件块映射和文件系统属性,一并保存在一个名为 FsImage 的文件中。当一个 Name node 初始化时,它读取 FsImage 文件以及其他文件,并应用这些文件中保存的事务和状态信息。
同步元数据更新 Name node 使用一个名为 EditLog 的日志文件持久记录对 HDFS 文件系统元数据发生的每个事务。如果 EditLog                或 FsImage 文件损坏,它们所属的 HDFS 实例将无法正常工作。因此,一个 Name node 支持多个 FsImage 和 EditLog 文件副本。对于这些文件的多个副本,对任一文件的任何更改都将同步传播到所有副本。当一个 Name node 重新启动时,它使用 FsImage 和 EditLog 的最新统一版本来初始化自身。
HDFS 的用户、文件和目录权限HDFS 对文件和目录实现了一个权限模型,这个模型与 Portable Operating System Interface (POSIX) 模型有很多共同点;例如,每个文件和目录都关联到一个所有者和一个组。HDFS 权限模型支持读取(r)、写入(w)和执行(x)权限。由于 HDFS 中没有文件执行这个概念,x 权限的含义不同。简言之,x 权限表明可以访问一个给定父目录的一个子目录。一个文件或目录的所有者是创建它的客户端进程的身份。组是父目录的组。
快照 HDFS 原来计划支持一些快照,这些快照可用于将一个损坏的 HDFS 实例回滚到此前状态。但是,HDFS 的快照支持目前还没有被提上议事日程。
结束语Hadoop 是一个 Apache Software Foundation 分布式文件系统和数据管理项目,目标是存储和管理大量数据。Hadoop 使用一个名为 HDFS 的存储系统来连接一些普通个人计算机(称为节点),这些节点包含在其上分布着大量数据块的多个集群中。通过 MapReduce 处理模型,您可以将那些数据块作为一个无缝文件系统进行访问和存储。
HDFS 与其他分布式文件系统有许多共同点,但也有一些重要区别。一个重要区别是 HDFS 的 “一次写入、多次读取” 模型,该模型降低了并发性控制要求,简化了数据聚合性,支持高吞吐量访问。
为了提供一个优化的数据访问模型,HDFS 的设计思想是将处理逻辑放置到数据附近,而不是将数据放置到应用程序空间附加。
返回列表