HDFS核心设计
Posted 火丶日月明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS核心设计相关的知识,希望对你有一定的参考价值。
一、HDFS核心设计
数据块(block)
数据块是HDFS上最基本的存储单位
HDFS块默认大小为128M
对块进行抽象会带来的好处
一个小文件的大小可以大于网络中任意一个磁盘的容量
使用块抽象而不是文件可以简化存储子系统
块非常适合用于数据备份进而提供数据容错能力和可用性
数据块复制
HDFS为了做到可靠性创建多分数据块,MapReduce就可以在他们所在节点上处理这些数据了
HDFS将每个文件存储成块序列
每个文件的block大小和复制因子都是可配置的 HDFS-site.xml
数据副本的存放策略
数据分块存储和副本的存放,是保证可靠性和高性能的关键
将每个文件的数据进行分块存储
每一个数据块又保存有多个副本
这些数据块副本分布在不同的机器节点上
在多数情况下,HDFS默认的副本系数是3
Hadoop默认对3个副本的存放策略
第一块:在本机器的HDFS目录下存储一个block
第二块:在不同rack(机架)的某个DataNode上存储一个block
第三块:在该机器的同一个rack下的某台机器上存储最后一个block
更多副本:随机节点
设置集群block的备份数
方法一:配置文件hdfs-site.xml
方法二:通过命令修改备份数
bin/hadoop fs -setrep -R 1 /
安全模式
安全模式是Hadoop集群的一种保护模式
用命令来操作安全模式
Hadoop dfsadmin -safemode leave //强制NameNode退出安全模式
Hadoop dfsadmin -safemode enter //进入安全模式
Hadoop dfsadmin -safemode get //查看安全模式状态
Hadoop dfsadmin -safemode wait //等待,一直到安全模式结束
负载均衡
机器和机器之间磁盘利用率不平衡HDFS集群非常容易出现的情况
尤其是在DataNode节点出现故障或在现有的集群上增添新的DataNode的时候
分析数据块分布和重新均衡DataNode上的数据分布的工具
$HADOOP_HOME/bin/start-balancer.sh -t 10%
负载均衡程序作为一个与独立的进程namenode进程分开执行
心跳机制
机架感知
大型Hadoop集群是以机架的形式来组织的
同一个机架上不同节点间的网络状况比不同机架之间的更为理想
默认情况下,Hadoop的机架感知是没有被启用的
启用机架感知功能,在namenode所在机器的core-site.xml中配置一个选项
以上是关于HDFS核心设计的主要内容,如果未能解决你的问题,请参考以下文章