共计 1691 个字符,预计需要花费 5 分钟才能阅读完成。
再理解 HDFS 的存储机制
前文:Hadoop 中 HDFS 的存储机制 http://www.linuxidc.com/Linux/2014-12/110512.htm
1. HDFS 开创性地设计出一套文件存储方式,即对文件分割后分别存放;
2. HDFS 将要存储的大文件进行分割,分割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求;
3. 一个 HDFS 集群包括两大部分,即 NameNode 与 DataNode。一般来说,一个集群中会有一个 NameNode 和多个 DataNode 共同工作;
4. NameNode 是集群的主服务器,主要是用于对 HDFS 中所有的文件及内容数据进行维护,并不断读取记录集群中 DataNode 主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储;
5. DataNode 在 HDFS 集群中担任任务具体执行角色,是集群的工作节点。文件被分成若干个相同大小的数据块,分别存储在若干个 DataNode 上,DataNode 会定期向集群内 NameNode 发送自己的运行状态与存储内容,并根据 NameNode 发送的指令进行工作;
6. NameNode 负责接受客户端发送过来的信息,然后将文件存储位置信息发送给提交请求的客户端,由客户端直接与 DataNode 进行联系,从而进行部分文件的运算与操作。
7. Block 是 HDFS 的基本存储单元,默认大小是 64M;
8. HDFS 还可以对已经存储的 Block 进行多副本备份,将每个 Block 至少复制到 3 个相互独立的硬件上,这样可以快速恢复损坏的数据;
9. 用户可以使用既定的 API 接口对 HDFS 中的文件进行操作;
10. 当客户端的读取操作发生错误的时候,客户端会向 NameNode 报告错误,并请求 NameNode 排除错误的 DataNode 后后重新根据距离排序,从而获得一个新的 DataNode 的读取路径。如果所有的 DataNode 都报告读取失败,那么整个任务就读取失败;
11. 对于写出操作过程中出现的问题,FSDataOutputStream 并不会立即关闭。客户端向 NameNode 报告错误信息,并直接向提供备份的 DataNode 中写入数据。备份 DataNode 被升级为首选 DataNode,并在其余 2 个 DataNode 中备份复制数据。NameNode 对错误的 DataNode 进行标记以便后续对其进行处理。
————————————– 分割线 ————————————–
将本地文件拷到 HDFS 中 http://www.linuxidc.com/Linux/2013-05/83866.htm
从 HDFS 下载文件到本地 http://www.linuxidc.com/Linux/2012-11/74214.htm
将本地文件上传至 HDFS http://www.linuxidc.com/Linux/2012-11/74213.htm
HDFS 基本文件常用命令 http://www.linuxidc.com/Linux/2013-09/89658.htm
Hadoop 中 HDFS 和 MapReduce 节点基本简介 http://www.linuxidc.com/Linux/2013-09/89653.htm
《Hadoop 实战》中文版 + 英文文字版 + 源码【PDF】http://www.linuxidc.com/Linux/2012-10/71901.htm
Hadoop: The Definitive Guide【PDF 版】http://www.linuxidc.com/Linux/2012-01/51182.htm
————————————– 分割线 ————————————–
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13