HDFS四大机制

6.1 、HADOOP  心跳机制(heartbeat )
1、 Hadoop 是 Master/Slave 结构,Master 中有 NameNode 和 ResourceManager,Slave 中有
Datanode 和 NodeManager
Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
2、 Master 启动的时候会启动一个 IPC(Inter-Process Comunication,进程间通信)server 服
务,等待 slave 的链接
3、 Slave 启动时,会主动链接 master 的 ipc server 服务,并且每隔 3 秒链接一次 master,这
个间隔时间是可以调整的,参数为 dfs.heartbeat.interval,这个每隔一段时间去连接一次
的机制,我们形象的称为心跳。Slave 通过心跳汇报自己的信息给 master,master 也通
过心跳给 slave 下达命令
4、 NameNode 通过心跳得知 Datanode 的状态
ResourceManager 通过心跳得知 NodeManager 的状态
5、 如果 master 长时间都没有收到 slave 的心跳,就认为该 slave 挂掉了。!!!!!
Namenode  感知到 Datanode  掉线死亡的时长计算:
HDFS 默认的超时时间为 10 分钟+30 秒。
这里暂且定义超时时间为 timeout
计算公式为:
timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval
而默认的 heartbeat.recheck.interval 大小为 5 分钟,dfs.heartbeat.interval 默认的大小为 3 秒。
需要注意的是 hdfs-site.xml 配置文件中的 heartbeat.recheck.interval 的单位为毫秒,
dfs.heartbeat.interval 的单位为秒
所以,举个例子,如果 heartbeat.recheck.interval 设置为 5000(毫秒),dfs.heartbeat.interval
设置为 3(秒,默认),则总的超时时间为 40 秒
<property>
<name>heartbeat.recheck.interval</name>
<value>5000</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>
6.2 、HDFS  安全模式
问题引出:集群启动后,可以查看目录,但是上传文件时报错,打开web页面可看到namenode
正处于 safemode 状态,怎么处理?
解释:safemode 是 namenode 的一种状态(active/standby/safemode 安全模式)
namenode 进入安全模式的原理:
a、 namenode 发现集群中的 block 丢失率达到一定比例时(0.1%),namenode 就会进入
安全模式,在安全模式下,客户端不能对任何数据进行操作,只能查看元数据信息(比
Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
如 ls/mkdir)
这个丢失率是可以手动配置的,默认是 dfs.safemode.threshold.pct=0.999f
b、如何退出安全模式?
1、找到问题所在,进行修复(比如修复宕机的 datanode)
2、或者可以手动强行退出安全模式(但是并没有真正解决问题)
在 hdfs 集群正常冷启动时,namenode 也会在 safemode 状态下维持相当长的一段时间,此
时你不需要去理会,等待它自动退出安全模式即可
正常启动的时候进入安全的原理:
(原理:namenode 的内存元数据中,包含文件路径、副本数、blockid,及每一个 block 所在
datanode 的信息,而 fsimage 中,不包含 block 所在的 datanode 信息,那么,当 namenode
冷启动时,此时内存中的元数据只能从 fsimage 中加载而来,从而就没有 block 所在的
datanode 信息——>就会导致 namenode 认为所有的 block 都已经丢失——>进入安全模式—
—>datanode 启动后,会定期向 namenode 汇报自身所持有的 blockid 信息,——>随着
datanode 陆续启动,从而陆续汇报 block 信息,namenode 就会将内存元数据中的 block 所
在 datanode 信息补全更新——>找到了所有 block 的位置,从而自动退出安全模式)
安全模式常用操作命令:
hdfs dfsadmin -safemode leave //强制 NameNode 退出安全模式
hdfs dfsadmin -safemode enter //进入安全模式
hdfs dfsadmin -safemode get //查看安全模式状态
hdfs dfsadmin -safemode wait //等待,一直到安全模式结束
如果你使用的版本是 2.X 之前的版本,那么这个 hdfs 命令可以替换成 hadoop,它们都在 bin
目录下
6.3 、HDFS  副本存放策略
1、 作用:
数据分块存储和副本的存放,是保证可靠性和高性能的关键
2、 方法:
将每个文件的数据进行分块存储,每一个数据块又保存有多个副本,这些数据块副本分
布在不同的机器节点上
Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
3、 存放说明:
在多数情况下,HDFS 默认的副本系数是 3
Hadoop 默认对 3 个副本的存放策略如下图:其中 Block1,Block2,Block3 分别表示 Block
的三个副本:
第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node
是随机选取的,系统会尝试不选择哪些太满或者太忙的 node)。
第二个副本放置在与第一个节点不同的机架中的 node 中(近乎随机选择,系统会尝试不选
择哪些太满或者太忙的 node)。
第三个副本和第二个在同一个机架,随机放在不同的 node 中。
4、 修改副本数:
第一种方式:修改集群文件 hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
第二种方式:命令设置
bin/hadoop fs -setrep -R 1 /
Stay hungry Stay foolish -- http://blog.csdn.net/zhongqi2513
6.4 、 负载均衡
机器与机器之间磁盘利用率不平衡是 HDFS 集群非常容易出现的情况
尤其是在 DataNode 节点出现故障或在现有的集群上增添新的 DataNode 的时候分析数据块
分布和重新均衡 DataNode 上的数据分布的工具
命令:sbin/start-balancer.sh
sbin/start-balancer.sh -threshold 5
自动进行均衡非常慢,一天能移动的数据量在 10G-10T 的级别,很难满足超大集群的需求
原因:HDFS 集群默认不允许 balance 操作占用很大的网络带宽,这个带宽是可以调整的
hdfs dfsadmin -setBalanacerBandwidth newbandwidth
hdfs dfsadmin -setBalanacerBandwidth 10485760
该数值的单位是字节,上面的配置是 10M/s,默认是 1M/s
另外,也可以在 hdfs-site.xml 配置文件中进行设置:
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>10485760</value>
<description> Specifies the maximum bandwidth that each datanode can utilize for the
balancing purpose in term of the number of bytes per second. </description>
</property>
sbin/start-balancer.sh -t 10%
机器容量最高的那个值 和 最低的那个值得差距 不能超过 10%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值