Hadoop分布式存储

HDFS是Hadoop Distribute File System的简称,Hadoop的一个分布式文件系统

HDFS的优缺点

HDFS优点

  • 高容错性
    • 数据保存多个副本,完全分布式模式默认为3个副本
    • 数据丢失后自动恢复
  • 适合移动批处理
    • 移动计算而移动数据
    • 数据位置暴露给计算框架
  • 适合大数据处理
    • GB、TB甚至PB级的数据处理
    • 百万规模以上的文件数据
    • 10000+的节点
  • 可构建在廉价的机器上
    • 通过多副本存储,提供可靠性
    • 提供了容器和恢复机制

HDFS缺点

  • 低延迟数据访问处理较弱
    • 毫秒级别的访问响应较慢
    • 低延迟和高吞吐的请求处理较弱
  • 大量小文件存取处理较弱
    • 会占用大量NameNode的内存
    • 寻到时间超过读取时间
  • 并发写入、文件随机修改
    • 一个文件仅有一个写者
    • 仅支持Append写入

HDFS 架构

HDFS 架构

HDFS采用master/slave架构。

一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。

  • NameNode :是Master节点,是大领导。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间
  • SecondaryNameNode:是一个小弟,分担大哥namenode的一部分工作量;是NameNode的冷备份;合并fsimage和fsedits然后再发给namenode
  • DataNode: Slave节点,奴隶,干活的。负责存储client发来的数据块block;执行数据块的读写操作
  • 热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作
  • 冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失
  • fsimage:元数据镜像文件(文件系统的目录树)
  • edits:元数据的操作日志(针对文件系统做的修改操作记录
  • namenode内存中存储的是=fsimage+edits
  • SecondaryNameNode负责定时默认1小时,从namenode上,获取fsimage和edits来进行合并,然后再发送给namenode。减少namenode的工作量

NameNode(NN)、SencondryNameNode(SNN)、DataNode(Dn)介绍

  • *NameNode(NN)
    • 接受客户端的读写服务
    • 保存metadata的信息,包括:文件的owership和permissions、文件包含哪些block、block保存在哪些DataNode节点上(在启动时由DataNode上报)
    • NameNode的metadata信息会在启动后加载到内存中
      a. metadata信息在磁盘上的存储文件为fsimage
      b.Block的位置信息不保存在fsimage中(由DataNode上报)
      c.edits中保存对metadata的操作日志
  • SecondryNameNode(SNN)
    • 它不是NN的备份(但可以做NN的部分备份工作),它的主要工作是帮助NN合并edits log,减少NN的启动时间
    • SNN合并时机
      a.根据配置文件设置的时间间隔fs.checkpoint.period默认是3600秒
      b.根据配置文件设置的edits log的大小fs.checkpoint.size默认的edits log大小为64MB
  • SNN合并流程
    a. NN创建一个新的edits log来接替老的edits的工作
    b. NN将fsimage和旧的edits拷贝到SNN上
    c. SNN上进行合并操作,产生一个新的fsimage
    d. 将新的fsimage复制一份到NN上
    f. 使用新的fsimage和新的edits log
  • DataNode(DN)
    • 存储数块(block)
    • 启动DN线程时,DN会自动想NN汇报Block的信息
    • NN向DN发送心跳检测,与其DN保持联系(3秒一次),如果NN连续10分钟没有收到DN的心跳,则认为该DN已经lost,并从其他DN中备份一份该DN上的所有Block
    • block的放置策略
      • 第一个副本,放置在上传文件的DN上,如果是集群外提交,则随便选择一台磁盘、内存、CPU不太忙的节点存储
      • 第二个副本,放置在与第一个副本不同机架上的节点上
      • 第三个副本,放置在与第二个副本相同机架上的相邻节点上
      • 更多副本随机放置

HDFS写入流程

HDFS上传文件
原理
  • NameNode具有RackAware机架感知功能,可以配置
  • 若client为DataNode节点,那存储block时,规则为:副本1,同client的节点上;副本2,不同机架节点上;副本3,同第二个副本机架的另一个节点上;其他副本随机挑选
  • 若client不为DataNode节点,那存储block时,规则为:副本1,随机选择一个节点上;副本2,不同副本1机架上;副本3,同副本2相同的另一个节点上;其他副本随机挑选
  • client想DataNode发送Block1;发送过程以流式写入

HDFS的读取流程

HDFS读取文件

HDFS读取多副本
  • client向NameNode发送读请求
  • NameNode查看Metadata信息,返回文件的block的位置
    block1 = 1,5,6
    block2 = 8,1,2
    block3 = 5,8,9
  • block的位置是有先后顺序的,先读block1,再读block2、block3。而且block1去node1上读取,然后block2去node8上读取,block3去node5上读取

副本选择

为了降低整体的带宽消耗和读取延时,HDFS会尽量让读取程序读取离它最近的副本。如果在读取程序的同一个机架上有一个副本,那么就读取该副本。如果一个HDFS集群跨越多个数据中心,那么客户端也将首先读本地数据中心的副本

安全模式

Namenode启动后会进入一个称为安全模式的特殊状态。处于安全模式的Namenode是不会进行数据块的复制的。Namenode从所有的 Datanode接收心跳信号和块状态报告。块状态报告包括了某个Datanode所有的数据块列表。每个数据块都有一个指定的最小副本数。当Namenode检测确认某个数据块的副本数目达到这个最小值,那么该数据块就会被认为是副本安全(safely replicated)的;在一定百分比(这个参数可配置)的数据块被Namenode检测确认是安全之后(加上一个额外的30秒等待时间),Namenode将退出安全模式状态。接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些数据块复制到其他Datanode上

通信协议

所有的HDFS通讯协议都是建立在TCP/IP协议之上。客户端通过一个可配置的TCP端口连接到Namenode,通过ClientProtocol协议与Namenode交互。而Datanode使用DatanodeProtocol协议与Namenode交互。一个远程过程调用(RPC)模型被抽象出来封装ClientProtocol和Datanodeprotocol协议。在设计上,Namenode不会主动发起RPC,而是响应来自客户端或 Datanode 的RPC请求

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容