再理解HDFS的存储机制
1. HDFS开创性地设计出一套文件存储方式。即对文件切割后分别存放;
2. HDFS将要存储的大文件进行切割,切割后存放在既定的存储块(Block)中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而攻克了大文件储存与计算的需求。
3. 一个HDFS集群包含两大部分。即NameNode与DataNode。
一般来说,一个集群中会有一个NameNode和多个DataNode共同工作;
4. NameNode是集群的主server,主要是用于对HDFS中全部的文件及内容数据进行维护,并不断读取记录集群中DataNode主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储。
5. DataNode在HDFS集群中担任任务详细执行角色,是集群的工作节点。文件被分成若干个同样大小的数据块,分别存储在若干个DataNode上。DataNode会定期向集群内NameNode发送自己的执行状态与存储内容,并依据NameNode发送的指令进行工作;
6. NameNode负责接受client发送过来的信息,然后将文件存储位置信息发送给提交请求的client。由client直接与DataNode进行联系,从而进行部分文件的运算与操作。
7. Block是HDFS的基本存储单元,默认大小是64M。
8. HDFS还能够对已经存储的Block进行多副本备份,将每一个Block至少拷贝到3个相互独立的硬件上,这样能够高速恢复损坏的数据;
9. 用户能够使用既定的API接口对HDFS中的文件进行操作;
10. 当client的读取操作错误发生的时候。client会向NameNode报告错误,并请求NameNode排除错误的DataNode后后又一次依据距离排序。从而获得一个新的DataNode的读取路径。假设全部的DataNode都报告读取失败。那么整个任务就读取失败;
11. 对于写出操作过程中出现的问题。FSDataOutputStream并不会马上关闭。client向NameNode报告错误信息。并直接向提供备份的DataNode中写入数据。
备份DataNode被升级为首选DataNode,并在其余2个DataNode中备份复制数据。
NameNode对错误的DataNode进行标记以便兴许对其进行处理。