HDFS分配策略学笔记二
来源:互联网 发布:配音朗读软件 编辑:程序博客网 时间:2024/06/15 09:00
hadoop的HDFS文件存储
1:什么是HDFS?
HDFS适合做:
- 存储大文件。上G、T甚至P。
- 一次写入,多次读取。并且每次作业都要读取大部分的数据。
- 搭建在普通商业机群上就可以了。虽然会经常宕机,但HDFS有良好的容错机制。
HDFS不适合做:
- 实时数据获取。如果有这个需求可以用HBase。
- 很多小文件。因为namenode要存储HDFS的metadata(比如目录的树状结构,每个文件的文件名、ACL、长度、owner、文件内容存放的位置等等信息),所以HDFS上文件的数目受到namenode内存的限制。
- 并发环境下的写入和修改。
hadoop中存储文件以HDFS形式存储,HDFS拥有自己的设计原则:
1:文件大小以block块的形式存储
2:每个块至少分配到三台DataNode(看集群情况而定)
3:通过副本机制提高可靠度和吞吐量
4:hadoop1.0使用单一的master(NameNode)来协调存储元数据(metadata)
5:最有意思的是hadoop设计者没有设置客户端缓存机制,因为我们对处理数据有足够的信心。
下图为HDFS的系统结构
NameNode:主要存储元数据:例如:文件名,拷贝几份,分别备份到哪里;
过程大概如下:
client要向集群中写入数据,首先询问Master(NameNode),Master告知客户端向哪些DataNode
写入数据,在往DataNode写入数据的同时,DataNode与NameNode保持心跳,如果DataNode在执行
任务失败,NameNode会通过心跳机制得知DataNode死掉,将重新分配新的任务到其他的DataNode。
2:Block之副本放置策略
第一副本:放置在上传文件DataNode,如果是集群外提交,由NameNode选择一台磁盘不太满,
CPU不太忙的节点。
第二副本:放置在于第一副本不同的机架的节点上
第三副本:与第二个副本相同集群的节点
第四副本 随机节点
总结:
第一个副本存放节点位置是随机不固定,只要保证三个副本节点不同时存放在同一个机架上即可
如bk1第一个副本副本在DN1(属于Back1),第二个在DN2(属于Back1)中,而第三个在DN4(属于Back2)中.同样
bk5第一个副本在DN3(属于Back2)第二个副本在DN1(属于Back1)二第三个副本在DN2(属于Back1)...不难而至这些都符合上面的条件
如图:
总结:
第一个副本存放节点位置是随机不固定,只要保证三个副本节点不同时存放在同一个机架上即可
如bk1第一个副本副本在DN1(属于Back1),第二个在DN2(属于Back1)中,而第三个在DN4(属于Back2)中.同样
bk5第一个副本在DN3(属于Back2)第二个副本在DN1(属于Back1)二第三个副本在DN2(属于Back1)...不难而至这些都符合上面的条件
如图:
3:Block的存储形式
1:Block默认大小64M,如果上传文件小于64M,那么仍然占用一个命名空间(NameNode metadata),
但是物理存储不会占用64M空间;(这也是hadoop为什么不太适合处理小数据的原因之一)
2:Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,Block是不可以再上 传后变更的
0 0
- HDFS分配策略学笔记二
- HDFS块分配策略
- jvm学习笔记二(java内存分配策略和回收策略)
- 从零开始学Hadoop----浅析HDFS(二)
- 深入理解JVM笔记二---垃圾收集器及内存分配策略
- 深入理解Java虚拟机学习笔记——二、垃圾收集器与内存分配策略
- 深入Java虚拟机笔记(二):垃圾收集器与内存分配策略
- JVM(二)内存分配和回收策略
- 垃圾回收和内存分配策略(二)
- 二、垃圾收集与内存分配策略
- Hadoop学习笔记二---HDFS
- Hadoop学习笔记二---HDFS
- 笔记--内存分配与回收策略
- Hadoop HDFS (3) JAVA访问HDFS之二 文件分布式读写策略
- Hadoop HDFS源码学习笔记(二)
- Hadoop自学笔记(二)HDFS简介
- Hadoop-hdfs和mapreduce学习笔记二
- Hadoop学习笔记(二)HDFS
- 对不起,亲爱的,我将离开你
- ACE spawn() 产生线程导致程序崩溃
- unix网络编程的基本函数
- iOS学习总结之沙盒和归档
- JSP - Custom Tags
- HDFS分配策略学笔记二
- 2015暑假ACM集训结训赛(第一场)(SDUTOJ)
- Sending parameters to another web page(网页间的参数传递)
- Spring Boot,Spring Data JPA多数据源支持
- Scala.Actor实践心得与设计思想
- usb驱动错误导致的键盘鼠标失灵
- 最大子序列之积
- Linux启动过程详解
- 学习总结第二篇