分布式存储基石:HDFS

基本概念

HDFS分布式文件存储系统,是基于Java实现的,是Hadoop最重要的核心组件,支持顺序写入,而非随机定为读写。

HDFS前提和设计目标

  • 存储超大文件
    • HDFS适合存储大文件,单个文件大小通常在百兆以上
    • HDFS适合存储海量文件,总存储量可达PB,EB级
  • 硬件容错
    • 基于普通机器搭建,硬件错误是常态而不是异常,因此错误检测和快速、自动的恢复是HDFS最核心的架构目标
  • 流式数据访问
    • 为数据批处理而设计,关注数据访问的高吞吐量
  • 简单的一致性模型
    • 一次写入,多次读取
    • 一个文件经过创建、写入和关闭之后就不需要改变
  • 本地计算
    • 将计算移动到数据附近

基本构成

  • 数据块
    • 文件以块为单位进行切分存储,块通常设置的比较大(最小6M,默认128M)
    • 块越大,寻址越快,读取效率越高,但同时由于MapReduce任务也是以块为最小单位来处理,所以太大的块不利于对数据的并行处理
    • 一个文件至少占用一个块(逻辑概念)
  • nameNode与DataNode
    • nameNode负责维护整个文件系统的信息,包括:整个文件树,文件的块分布信息,文件系统的元数据,数据复制策略等;
    • dataNode存储文件内容,负责文件实际的读写操作,保持与nameNode的通信,同步文件块信息

nameNode深入

  • 启动过程:
  1. 开启安全模式:不能执行数据修改操作
  2. 加载fsimage
  3. 逐个执行所有Edits文件中的每一条操作将操作合并到fsimage,完成后生成一个空的edits文件
  4. 接收dataNode发送来的心跳消息和块消息
  5. 根据以上信息确定文件系统状态
  6. 退出安全模式
  • 安全模式:文件系统只接受读数据请求,而不接收删除、修改等变更请求
  • 什么情况下进入:nameNode主节点启动时,HDFS进入安全模式
  • 什么时候退出:系统达到安全标准时,HDFS退出安全模式
    • dfs.namenode.safemode.min.datanodes:最小可用datanode数量
    • dfs.namenode.safemode.threshold-pct:副本数达到最小要求的block占系统总block数的百分比
    • dfs.namenode.dafemode.extension:稳定时间
  • 相关命令:
    • hdfs dfsadmin -safemode get:查看当前状态
    • hdfs dfsadmin -safemode enter:进入安全模式
    • hdfs dfsadmin -safemode leave:强制离开安全模式
    • hdfs dfsadmin -safemode wait:一直等待直到安全模式结束

HDFS HA高可用性

  • dataNode:通过数据冗余保证数据的可用性
  • nameNode:在2.0以前存在SPOF(single point of failure单点故障)风险,从2.0之后:
  1. 把name.dir指向NFS(Network File System)
  2. QJM(Quorum Journal Manager)方案

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值