博客
关于我
基于Namespace内部partition来解决HDFS的扩展性问题方案
阅读量:394 次
发布时间:2019-03-05

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

前言

HDFS NameNode(NN)在处理大量数据时面临着扩展性问题。其内部设计使用全局单一锁进行控制,在处理大量节点时导致性能瓶颈。针对这一问题,社区提出了基于Namespace的内部partition方案,以实现细粒度锁的拆分,进而优化扩展性。

HDFS NN的现有请求处理模式

HDFS NN的工作原理是使用一个大型的命名空间和全局锁进行元数据控制。任何写操作都需要获取全局锁,导致并发处理能力有限。尽管如此,当操作的数据文件无关时,仍可允许并发处理,避免不必要的锁控制。

基于Namespace的内部partition细粒度锁

为了解决全局锁的效率问题,提出了将Namespace划分为多个partition的方案。每个partition独立管理元数据,内部使用细粒度锁进行控制,进而支持并发操作。 - **partition标准**:可选择文件路径或INodeId作为划分依据。 - **INodeId划分**:使用ppId、pId和selfId作为键,确保相关文件目录分布在同一partition内。这种划分方式具有可扩展性和稳定性,且避免了路径重命名带来的问题。

NN新锁结构的调整

为支持细粒度锁,NN内部存储结构进行了优化: - 引入RangeMap存储结构,映射PartitionId到GSet。 - 每个GSet配备独立锁,确保线程安全。 - RangeMap本身也需线程安全锁,控制其操作流程。这种设计在不改变原有元数据结构的前提下,显著提升了锁粒度和扩展性。
总结
通过基于Namespace的内部partition和细粒度锁控制,HDFS NN的扩展性得到了显著提升。这种方案不仅保持了原有结构的简单性,还在锁粒度和性能上实现了优化。

转载地址:http://cqng.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
查看>>
Mysql学习总结(55)——MySQL 语句大全再温习
查看>>
Mysql学习总结(56)——MySQL用户管理和权限设置
查看>>
Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
查看>>
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
查看>>
Mysql学习总结(59)——数据库分库分表策略总结
查看>>
Mysql学习总结(5)——MySql常用函数大全讲解
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
查看>>
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
查看>>
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
查看>>
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
查看>>
Mysql学习总结(65)——项目实战中常用SQL实践总结
查看>>
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
查看>>
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>