博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
namenode如何存储复本?
阅读量:6984 次
发布时间:2019-06-27

本文共 597 字,大约阅读时间需要 1 分钟。

hot3.png

namenode如何选择在哪个datanode存储复本?这里需要对可靠性,写入带宽和读取带宽进行权衡。例如,把所有复本都存储在一个节点损失的写入带宽最小,因为复制管线都是在同一节点上运行,但这并不提供真实的冗余(如果节点发生故障,那么该块中的数据会丢失)。同时同一机架上服务器间的读取带宽是很高的。另一个极端,把复本放在不同的数据中心可以最大限度地提高冗余,但带宽的损耗非常大,即使在同一数据中心,也有许多不同的数据布局策略。

 

Hadoop的默认布局策略是在运行客户端的节点上放第1个复本,如果客户端运行在集群之外就随机选择一个节点,不过系统会避免挑选那些存储太满或太忙的节点。第2个复本放在与第一个不同且随机另外选择的机架中节点上(离架)。第3个复本与第2个复本放在同一机架上,且随机选择另外一个节点。其他复本放在集群中随机选择的节点上,不过系统会尽量避免在同一个机架上放太多的复本。

 

一旦选定复本的放置位置,就根据网络拓扑创建一个管线,如果复本为3,则有如图的管线。

总的来说,这一方法不仅提供很好的稳定性(数据块存储在两个机架中)并且实现很好的附在均衡,包括写入带宽(写入操作只需要遍历一个交换机),读取性能(可以从两个机架中选择读取)和集群中块的均匀分布(客户端只在本地机架上写入一个块)。

 

 

转载于:https://my.oschina.net/hunglish/blog/796645

你可能感兴趣的文章
GIT分支创建和合并
查看>>
FreeBSD9.0 安装php-fpm
查看>>
MapXtreme 2005 学习心得 相关代码知识(三)
查看>>
CSS 字体系列
查看>>
[M0]Android开启odex,优化开机速度
查看>>
transfer.sh:通过命令行简单的创建文件分享
查看>>
java 远程debug
查看>>
高德地图POI查找
查看>>
Java transient关键字
查看>>
磁盘格式化
查看>>
Mybatis 在 insert 之后想获取自增的主键 id,但是总是返回1
查看>>
遭遇各种内容监管,有些企业到底欠缺的是什么,仅仅是价值观吗?
查看>>
华为交换机重置密码
查看>>
CentOS 7安装KVM虚拟机OpenSUSE42操作实录
查看>>
专属小白们的Zabbix部署详解
查看>>
shareinstall可以解决地推统计这个难题
查看>>
Mac Mysql Access denied for user 'root'@'localhost
查看>>
Python学习三级菜单
查看>>
Fedora 11 安装指南-12
查看>>
机器学习【一】:绪论
查看>>