hadoop |
您所在的位置:网站首页 › hdfs分布式存储数据的原理 › hadoop |
hadoop是什么
hadoop是一个开源的大数据框架同时也是一个分布式计算的解决方案
hadoop = HDFS(分布式文件系统) + MapReduce(分布式计算)
HDFS 概念
数据块 NameNode
Secondary NameNode DataNode
数据块:
数据块是一个抽象的块,不是整个文件。
块大小的计算
块大小取决于dfs.blocksize,hadoop 1.x默认块大小为64M,hadoop 2.x之后默认块大小是128M。
默认是128M的原因,基于最佳传输损耗理论。
最佳传输损耗理论:在一次传输中,寻址时间占用传输时间的1%时,本次传输的损耗最小,为最佳性价比传输。
目前硬件的发展条件,普通磁盘写的速率大概为100M/s,寻址时间一般为10ms,下面可以对128M的由来进行推演。
10ms / 1% = 1s 1s * 100M/s = 100M 但计算到这儿,还要考虑块传输时的校验问题,每传输64KB校验一次,所以块大小必须为2的n次方,而最接近100的2的n次方为128,所以块大小为128M。 如果公司使用的是固态硬盘,写的速度是300M/s,将块大小调整到256M 如果公司使用的是固态硬盘,写的速度是500M/s,将块大小调整到512M 块大小需要合适调节 不能太大比如当前有文件a,1G大小 128M一块,存8块 和 1G一块,存一块 相比较 场景1:下载一个128M大小的文件 场景2:在上传文件时,断网了 缺点: 在一些分块读取的场景,不够灵活,会带来额外的网络消耗。,如场景1,明明只需要128M的数据,分成1G一块的却需要对个文件大小进行下载在上传文件时,一旦发生故障,会造成资源的浪费。如场景2,假设我要上传一个1G大小的文件,分成128M一块就可以有效防止断网时前面数据的丢失,而分成1G一块,在上传到1023M时,一旦断网数据将会全部丢失 不能太小比如当前有文件a,128M大小 128M一块,存8块 和 1M一块,存128块 相比较 缺点: 块太小,同样大小的文件,会占用过多的NN的元数据空间块太小,在进行读写操作时,会消耗额外的寻址时间 对块进行抽象的好处 一个文件的大小可以大于集群网络中任一个磁盘大小。因为可以对文件进行分块存储,所以在极端情况下,一个集群只存放了一个文件,该文件占满了集群中的所有磁盘 使用抽象块而不是整个文件作为存储单元,可以简化存储子系统的设计。首先块的大小是固定的,所以一个磁盘能存出多少个块很容易就能计算出来。另外也消除了对于元数据的顾虑,块只是要存储的大块数据,而文件的元数据,列入权限信息等等,并不需要与块进行一同存储,可以单独进行管理 块适合于提供备份和冗余容错的作用,通过将块进行复制副本,通常是3个,当因损坏或者机器故障而丢失的块,我们便可以从其他候选机器将副本块复制到另一台能够正常工作的机器上,保证副本的数量保持不变 HDFS集群有两个节点,以管理节点 —— 工作节点的模式运行着,分别是 NameNode 和 DataNode NameNode NN的作用 NN保存HDFS上所有文件的元数据NN负责接受和处理客户端的请求NN负责接受DN上报的信息,给DN分配任务(维护副本数)和DN保持心跳,向DN下达命令 元数据的存储 元数据存储在fsiamge文件+edits文件中fsimage(元数据的快照文件)edits(记录所有写操作的文件) 存储的元数据分为两种 inodes : 记录文件的属性和文件由哪些块组成,记录到edits和fsimage文件中块的位置映射信息: 由NN启动后,接收DN的上报,动态生成 联邦HDFS NameNode节点在内存中保存着文件系统中每个文件和每个数据块的引用关系,所以NameNode的内存会成为集群扩展的一个瓶颈 在Hadoop 2.x版本中引入了联邦HDFS,允许在集群中添加多个NameNode节点,以实现扩展 在联邦环境下,每个NameNode都维护着一个命名空间卷( 比如NameNode_1负责 /usr,NameNode_2 负责 /share ),由命名空间的元数据和数据块池组成。 数据块池里面存放着该命名空间下所有的数据块 命名空间卷之间不进行通信,甚至其中一个挂掉也不会影响另一个。但每个DataNode需要注册到每一个NameNode上,也需要存储着来自各个数据块池的数据块 DataNode 存储以及检索数据块 向NameNode更新所存储块的列表 NameNode容错 诺NameNode失效,我们将无法访问到文件系统上的所有文件。因为我们不知道怎么去根据DataNode的块去重建文件。因此需要对NameNode进行容错处理 两种容错机制:对于组成文件系统元数据持久状态的文件 我们可以使NameNode在多个文件系统上对其进行保存,比如最常用的就是在将持久状态写入本地磁盘的同时也将其写入到远程挂载的NFS网络文件系统中。 运行一个辅助NameNode节点 (Secondary NameNode)该节点却不能被用作NameNode,它的主要作用是定期合并编辑日志文件和命名空间镜像文件,防止其过大。它在合并后会生成命名空间镜像文件的副本,当NameNode失效时会启用。但是辅助NameNode节点保存的信息总是会滞后于NameNode节点,所以如果想要实现容错机制,可以在主NameNode节点失效后,将保存在NFS的文件系统元数据复制到Secondary NameNode上来,将其作为新的主NameNode运行。“ HA高可用 ” HDFS 优点 适合大文件存储,支持TB、PB文件的存储 可以构建在廉价的机器上,并能够提供容错机制和恢复机制 支持流式数据访问,一次写入,多次读取更高效 HDFS 缺点 不适合大量小文件存储 不适合并发写入,也不支持文件随机修改(在线编辑) 不支持随机读等低延迟的访问方式 HDFS读写文件的原理解析 详细的读流程图如下所示: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |