资讯专栏INFORMATION COLUMN

Hadoop的HDFS

Y3G / 1567人阅读

摘要:因为的全部的元数据在内存中存储,所以的内存大小决定整个集群的存储量。功能在本地文件系统存储数据块,存储数据块的元数据,用于校验。响应客户端对数据块和元数据的请求。周期性的向报告这个存储的所有数据块信息。

HDFS的设计思想:

构建一个非常庞大的分布式文件系统。在集群中节点失效是正常的,节点的数量在Hadoop中不是固定的.单一的文件命名空间,保证数据的一致性,写入一次多次读取.典型的64MB的数据块大小,每一个数据块在多个DN(DataNode)有复制.客户端通过NN(NameNode)得到数据块的位置,直接访问DN获取数据。

NameNode功能:

映射一个文件到一批的块,映射数据块到DN节点上。集群配置管理,数据块的管理和复制。处理事务日志:记录文件生成,删除等。因为NameNode的全部的元数据在内存中存储,所以NN的内存大小决定整个集群的存储量。NN内存中保存的数据:

  1. 文件列表
  2. 每一个文件的块列表
  3. 每一个DN中块的列表
  4. 文件属性:生成时间,复制参数,文件许可(ACL)


File,Derectory,Block在内存中的大小(Hadoop JIRA页面):

  • File:122 + fileName.length
  • Directory:152 + fileName.length
  • Block:112 + 24*replication

备注:上面数据和jira中不一样是因为在0.16以上的版本在INode中添加了一个8字节的数据类型为long的permission数据。
NN的复制线程负责根据文件复制数量选择DN,磁盘的使用负载平衡,DN复制时的IPC通信负载平衡 。

Secondary Namenode的功能:

Secondary Namenode是一个让人混淆的名字,其实Secondary Namenode是一个辅助NN处理FsImage和事务日志的Server,它从NN拷贝FsImage和事务日志到临时目录,合并FsImage和事务日志生成一个新的FsImage,上传新的FsImage到NN上,NN更新FsImage并清理原来的事务日志。

DataNode功能:

在本地文件系统存储数据块,存储数据块的元数据,用于CRC校验。响应客户端对数据块和元数据的请求。周期性的向NN报告这个DN存储的所有数据块信息。客户端要存储数据时从NN获取存储数据块的DN位置列表,客户端发送数据块到第一个DN上,第一个DN收到数据通过管道流的方式把数据块发送到另外的DN上。当数据块被所有的节点写入后,客户端继续发送下一个数据块。DN每3秒钟发送一个心跳到NN,如果NN没有受到心跳在重新尝试后宣告这个DN失效。当NN察觉到DN节点失效了,选择一个新的节点复制丢失的数据块。

数据块的放置位置和数据正确性:

在典型的配置里,数据块一个放在当前的节点,一个放在远程的机架上的一个节点,一个放在相同机架上的一个节点,多于3个的数据块随意选择放置。客户端选择最近的一个节点读取数据。Hadoop使用CRC32效验数据的正确性,客户端每512个byte计算一次效验,DN负责存储效验数据。客户端从 DN获取数据和效验数据,如果效验出错,客户端尝试另外节点上复制的数据。

Tips:

单点的NN,现在Hadoop没有HA的解决方案。在我的概念中Hadoop加上Zookeeper是一个HA的解决方案。事务日志可以存储在NM的多个目录中。比如:一个本地文件系统,一个远程文件系统(NFS)。Hadoop没有快照功能,可以考虑使用LVM或ZFS做系统快照。

本文转自:http://www.hadoop.org.cn/hadoop/hadoop-hdfs/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/3705.html

相关文章

  • hadoop启动遇到各种问题

    摘要:启动了集群之后发现起来了,但是各个节点的却都没起起来。启动错误一般是由于的数据存放路径配置错误,格式化错误造成。格式化命令注部分参考内容来源启动的时候,会出现各种各样的问题请尊重原作者的劳动成果 1. HDFS initialized but not healthy yet, waiting... 这个日志会在启动hadoop的时候在JobTracker的log日志文件中出现,在这里就...

    hiyayiji 评论0 收藏0
  • Hadoop编程调用HDFS

    摘要:作为界的开发人员,我们也要跟上节奏,抓住机遇,跟着一起雄起关于作者张丹程序员转载请注明出处前言全称分步文件系统,是的核心部分之一。 Hadoop编程调用HDFS Hadoop家族系列文章, 主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout...

    HackerShell 评论0 收藏0
  • HDFS shell操作

    摘要:目录返回列表的信息如下目录名修改日期修改时间权限用户组示例返回值成功返回,失败返回。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。示例返回值成功返回,失败返回。调用文件系统(FS)Shell命令应使用 bin/hadoop fs 的形式ls使用方法:hadoop fs -ls如果是文件,则按照如下格式返回文件信息: 文件名 文件大小 修改日期 修改...

    Tecode 评论0 收藏0
  • hadoop集群搭建-hadoop3.1.1

    摘要:集群搭建环境虚拟机三台主节点一下如无特殊说明都是在主节点上配置下载安装参考文档文档自行选择版本安装本文按示例版本的配置参考文档解压上传到系统中解压配置配置文件位置环境因为要远程调用找不到变量使用的文件系统和的位置运行时产生的文件的 hadoop集群搭建 环境 centos6.7 虚拟机三台 yh01(主节点) yh02 yh03 一下如无特殊说明都是在主节点上配置 1.下载 ht...

    leiyi 评论0 收藏0
  • hadoop集群搭建-hadoop3.1.1

    摘要:集群搭建环境虚拟机三台主节点一下如无特殊说明都是在主节点上配置下载安装参考文档文档自行选择版本安装本文按示例版本的配置参考文档解压上传到系统中解压配置配置文件位置环境因为要远程调用找不到变量使用的文件系统和的位置运行时产生的文件的 hadoop集群搭建 环境 centos6.7 虚拟机三台 yh01(主节点) yh02 yh03 一下如无特殊说明都是在主节点上配置 1.下载 ht...

    CollinPeng 评论0 收藏0
  • Hadoop Shell命令

    摘要:调用文件系统命令应使用的形式。命令的使用者必须是超级用户。这个命令允许有多个源路径,此时目标路径必须是一个目录。目录返回列表的信息如下目录名修改日期修改时间权限用户组示例返回值成功返回,失败返回。示例返回值成功返回,失败返回。 调用文件系统(FS)Shell命令应使用 bin/Hadoop fs 的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://au...

    Darkgel 评论0 收藏0

发表评论

0条评论

Y3G

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<