21
Geminifs 之 Hadoop NameNode Cluster 京京 Hadoop 京京 : 京京 京京 : [email protected]

Geminifs 之

Embed Size (px)

DESCRIPTION

Geminifs 之. Hadoop NameNode Cluster. 京东 Hadoop. 作者 : 刘涛. 邮箱 : [email protected]. 关于我们. 邮箱 : cdrd [email protected]. 我们在 hadoop 上的一些工作. 解决方案. 实现的核心细节. 未来计划. 目 录 CONTENTS. 面临的问题. 遇到的问题. 提高性能 :. 内存瓶颈 :. *元数据增加 *内存增加 *单机内存受限. * 单机处理能力受限. NameNode Cluster. - PowerPoint PPT Presentation

Citation preview

Page 1: Geminifs  之

Geminifs 之

Hadoop NameNode Cluster

京东 Hadoop

作者 : 刘涛邮箱 : [email protected]

Page 2: Geminifs  之

邮箱 :[email protected]

关于我们

Page 3: Geminifs  之

我们在 hadoop 上的一些工作

JDHadoop

Geminifs

Jobtracker 调度优化

BUG 解决 , 代码优化监控 预警

集群自动部署

Page 4: Geminifs  之

目 录 CONTENTS

面临的问题

解决方案

实现的核心细节

未来计划

Page 5: Geminifs  之

遇到的问题

内存瓶颈:

* 元数据增加 * 内存增加 * 单机内存受限

提高性能:

* 单机处理能力受限

NameNode Cluster

Page 6: Geminifs  之

已有方案 – -HDFS Federation

Page 7: Geminifs  之

已有方案 -- MapR

Page 8: Geminifs  之

我们的方案 - Geminifs 2.0

zx

zxn

… …

k

ka kk kz

/

a

a1 ax

z

zzznkn

knk knzknn

BlockManager BlockManager• Heartbeat • Block replicate

check• Block management

Datanode Datanode Datanode Datanode

Namenode Namenode

• 虚拟节点• 每个虚拟节点代表原目录树空

间中以此节点为根的子树• 每个 Namenode 负责 1 个或

多个虚拟节点所对应的子树

Sto

rag

eN

am

esp

ace

Page 9: Geminifs  之

Geminifs 2.0

原 NN

安全权限

全目录树块管理

DN 管理

新 NN

安全权限

子目录树

新 BM

块管理

DN 管理

Page 10: Geminifs  之

Geminifs 2.0

• NN 侧重目录树管理• NN 不停机横向扩展• BM 通用存储方案• BM 不停机横向扩展• 用户无需配置扩展的节点• 元数据与存储解耦• NN,BM 独立提高性能• NN,BM HA

新增特性

Page 11: Geminifs  之

实现

zx

zxn

… …

k

ka kk kz

/

a

a1 ax

z

zn

kn

knk knzknn

目录树拆分

• 将要拆分的子树目录结构在新的Namenode 的根目录下重建

• 将原 Namenode 上拆分出去的目录节点标记为虚拟节点

• 将原 Namenode 上拆分出去的目录节点的所有子节点删除

/

zx

k

-

a

a1 ax

z

zn

NN1 /

k

ka kk kzkn

NN2 /

kn

knk knzknn

NN3 /

zx

zxn

… …

NN4

如何访问 /k/kn/knk

Page 12: Geminifs  之

实现

zx

zxn

… …

k

ka kk kz

/

a

a1 ax

z

zn

kn

knk knzknn

主干树• 从根节点到任意虚拟节点的完整路径• 叶子节点是虚拟节点• 虚拟节点上记录此子树被加载的

Namenode 地址• 各 Namenode 及访问的客户端都保存

最新的主干树

zx

k

/

z

kn

Page 13: Geminifs  之

实现

zx

zxn

… …

k

ka kk kz

/

a

a1 ax

z

zn

kn

knk knzknn

/

zx

k

-

a

a1 ax

z

zn

/

k

ka kk kzkn

/

kn

knk knzknn

/

zx

zxn

… …

目录树拆分

• 将要拆分的子树目录结构在新的Namenode 的根目录下重建

• 将原 Namenode 上拆分出去的目录节点标记为虚拟节点

• 将原 Namenode 上拆分出去的目录节点的所有子节点删除

NN1 NN2 NN3 NN4

zx

k

/

z

kn

主干树

NN2

NN3 NN4

Page 14: Geminifs  之

实现如何访问 /k/

kn/knk

/

zx

k

-

a

a1 ax

z

zn

/

k

kakk kzkn

/kn

knk knzknn

/

zx

zxn

… …

NN1 NN2 NN3 NN4

zx

k

/

z

kn

主干树

NN2

NN3 NN4

从主干树上找最远虚拟节点 找到 Kn

访问虚拟节点记录的 NN 地

址访问 NN3 NN 计算真实

路径路径为 /kn/

knk

Page 15: Geminifs  之

实现如何实现权限验

zx

zxn

… …

k

ka kk kz

/

a

a1 ax

z

zn

kn

knk knzknn

• 从根节点到任意虚拟节点的完整路径• 叶子节点是虚拟节点• 虚拟节点上记录此子树被加载的

Namenode 地址• 各 Namenode 及访问的客户端都保存

最新的主干树• 主干树的每个节点记录属主及 Mode

zx

k

/

z

kn

路径在主干树部分从主干树上验证 , 路径中主干树外剩余部分由 NN 自己保存的节

点信息验证

Page 16: Geminifs  之

实现

主干树缓存 引入版本验证 引入版本改变规则

功能独立化形成单独进程 RDB

(Router Database)

主干树完善 & 优化

Page 17: Geminifs  之

Block Manager Cluster

实现数据块管理功能独立

Namenode Cluster

Datanode Cluster

NN: - FileNode FileID ( 唯一 )

BM: - HashMap - FileID [Blocks]

DN: - Block 增加 FileID 属性

Page 18: Geminifs  之

实现

给 NN 一次性分配一段 FileID 范围

BlockManager 按段进行管理调度

DN 块按段汇报到相同 BM

段到 BM 路由功能整合到 RDB 进程

完善 & 优化

Page 19: Geminifs  之

High Availability

Write edits Read editsStandby

Share storage

Active

ClusterRDB

Client Metadata node

ClusterZK

Com

mands

Heartb

eat

Local diskLocal disk

Page 20: Geminifs  之

下一步的工作

HA 功能优化

元数据存 BM

自动化运维

Page 21: Geminifs  之

谢 谢!