Hdfs introduction

Preview:

DESCRIPTION

baidu hdfs原理科普ppt

Citation preview

HDFS 原理与实现

刘景龙

liujinglong@baidu.com

为什么选择 Hadoop ?

• Need to process huge datasets on large clusters of computers

• Very expensive to build reliability into each application.

• Nodes fail every day– failure is expected, rather than exceptional.

– The number of nodes in a cluster is not constant.

• Need common infrastructure– Efficient, reliable, easy to use

– Open Source, Apache License

Hadoop history:

谁在用 Hadoop ?

百度 hadoop 集群现状

• Hadoop 集群规模 1w+台节点• 日平均处理数据为 8PB左右• 最大的 hadoop 集群规模: 2800 台

百度如何使用 hadoop

• 半线上 /线下日志挖掘• 网页相关的线下大规模挖掘计算,包括

linkbase的数据运算,索引库构建,网页库上的各种挖掘计算

• 大规模机器学习算法

HDFS 能做什么?

• 存储并管理 PB 级数据• 自动处理节点失效和负载均衡• 针对高吞吐进行优化

–数据本地化–机架感知

HDFS 不适合做什么?

• 存储小文件 ( 不建议使用 )

• 大量的随机读 ( 不建议使用 )

• 需要对文件的修改 ( 不支持 )

HDFS 架构:

10

b1

b2

b3 b1

b5

b3 b3

b5

b2

b4b5

b6b2

b3

b4

Namenode

Namespace Metadata & Journal

NamespaceBlock Map

Heartbeats & Block Reports

Block ID Block Locations

Datanodes

Block ID Data

Horizontally Scale IO and Storage

file Block id

HDFS : namenode 数据结构

HDFS : 读写流程

12

b1

b2

b3 b1

b5

b3 b3

b5

b2

b4b5

b6b2

b3

b4

Client Client

Namenode1 open

2 read2 write

1 create

write

write

Datanodes

NamespaceState

Block Map

End-to-end checksum

HDFS :副本分布

• 当前策略:

• 客户端从最近的副本进行读取

HDFS :容错

b1

b2

b3 b1

b5

b3 b3

b5

b2

b4b5

b6b2

b3

b4

Namenode

2. copy

3. blockReceived

1. replicate

Datanodes

Bad/lost block replica

Bad/lost block replica

Periodically check block checksums

NamespaceState

Block Map

HDFS :数据本地化

DataData data data data dataData data data data dataData data data data data

Data data data data dataData data data data dataData data data data data

Data data data data dataData data data data dataData data data data data

Data data data data dataData data data data dataData data data data data

ResultsData data data dataData data data dataData data data dataData data data dataData data data dataData data data dataData data data dataData data data dataData data data data

Hadoop Cluster

Block 1

Block 1

Block 2

Block 2

Block 2

Block 1

MAP

MAP

MAP

Reduce

Block 3

Block 3

Block 3

HDFS :接口

• 命令行• C++ 接口• Java 接口• POSIX 接口• Restful 接口

HDFS 在路上

HDFS Peta1.0 Peta2.0

可扩展性

Namenode

水平扩展 通过加机器解决文件数增加的问题

垂直扩展 内存存储热数据,冷数据磁盘存储

可扩展性: 水平扩展

可扩展性: 对象存储

可扩展性:数据结构

可扩展性:

• 文件数 10 亿• 节点数 1 万• 性能提高 10 倍

可用性:元数据结构

• 持久化元数据–操作日志( edit log )

• 记录文件创建,删除,修改文件属性等操作–Fsimage

• 包含完整的命名空间• File -> Block 的映射关系• 文件的属性( ACL, quota, 修改时间等)

• 非持久化元数据– block map

• Block -> datanodes

可用性

可用性:

• Fail over 时间最长不超过 5 分钟• 集群的在线升级

未来的工作方向

• 用户透明压缩存储• 资源隔离• 实时性支持• 百亿文件系统

。。。

求助热线:

• 邮件组:–dpfhelp@baidu.com

• Hi 群:–1199411

• 文档园地:–http://wiki.babel.baidu.com/twiki/bin/view/Com

/Inf/Peta%E6%96%87%E6%A1%A3%E5%BB%BA%E8%AE%BE%E8%AE%A1%E5%88%92

Q & A

Thanks

Recommended