美文网首页
Hadoop相关介绍

Hadoop相关介绍

作者: 壹点零 | 来源:发表于2018-02-04 10:33 被阅读0次

分布式存储系统HDFS(Hadoop Distributed File System)POSIX

  1. 分布式存储系统
  2. 提供了高可靠、高扩展性和高吞吐率的数据存储服务

分布式计算框架MapReduce

  1. 分布式计算框架(计算向数据移动)
  2. 具有易于编程、高容错性和高扩展性等优点

分布式资源管理框架YARN(Yet Anoter Resource Management)

  1. 负责集群资源的管理和调度

存储模型

  1. 文件线性切割成块(Block):偏移量offset(byte)这也是为啥不能在中间插入数据的原因
  2. Block分散存储在集群节点中
  3. 单一文件Block大小一致,文件与文件可以不一致
  4. Block可以设置副本数,副本数分散在不同节点中(副本数不要超过节点数量)
  5. 文件上传可以设置Block大小和副本数
  6. 已上传的文件Block副本数可以调整,大小不变
  7. 只支持一次写入多次读取,同一时刻只有一个写入者
  8. 可以append追加数据

架构模型

  1. 文件元数据MetaData,文件数据分开存储
    1. 元数据
    2. 数据本身
  2. (主)NameNode节点保存文件元数据:单节点posix
  3. (从)DataNode节点保存文件Block数据:多节点
  4. DataNode与NameNode保持心跳,提交Block列表
  5. HdfsClient与NameNode交互元数据信息
  6. HdfsClient与DataNode交互文件Block数据

NameNode(NN)

  1. 基于内存存储
    1. 只存在内存中
    2. 持久化
  2. NameNode主要功能
    1. 接受客户端的读写服务
    2. 收集DataNode汇报的Block列表信息
  3. NameNode保持metadata信息包括
    1. 文件owership和permissions
    2. 文件大小,时间
    3. (Block列表:Block偏移量),位置信息
    4. Block每副本位置(由DataNode上报)

NameNode持久化

  1. NameNode的metadata信息在启动后会加载到内存
  2. metadata存储到磁盘文件名为“fsimage”
  3. Block的位置不会保存到fsimage
  4. edits记录对metadata的操作日志

DataNode(DN)

  1. 本地磁盘目录存储数据(Block),文件形式
  2. 同时存储Block的元数据信息文件
  3. 启动DN时会向NN汇报block信息
  4. 通过向NN发送心跳保持与其联系(3秒一次),如果NN10分钟没有收到DN的心跳,则认为其已经lost,并copy其他的block到其他DN

HDFS优点

  1. 高容错性
    1. 数据自动保存多个副本
    2. 副本丢失后,自动恢复
  2. 适合批处理
    1. 移动计算而非数据
    2. 数据位置暴露给计算框架(Block偏移量)
  3. 适合大数据处理
    1. GB、TB、甚至PB级数据
    2. 百万规模以上的文件数量
    3. 10K + 节点
  4. 可构建在廉价机器上
    1. 通过多副本提高可靠性
    2. 提供了容错和恢复机制

HDFS缺点

  1. 低延迟数据访问
    1. 比如毫秒级
    2. 低延迟与高吞吐率
  2. 小文件存取
    1. 占用NameNode大量内存
    2. 寻道时间超过读取时间
  3. 并发写入、文件随机修改
    1. 一个文件只能有一个写者
    2. 仅支持append

SecondaryNameNode(SNN)

  1. 它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间
  2. SNN执行合并时间
    1. 根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒
    2. 根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值默认是64MB
SNN合并流程

Block的副本放置策略

  1. 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满的,CPU不太忙的节点
  2. 第二个副本:放置在于第一个副本不同的机架的节点上
  3. 第三个副本:与第二个副本相同机架的节点
  4. 更多副本:随机节点
Block副本放置策略

HDFS写流程

  1. Client:
    1. 切分文件Block
    2. 按Block线性和NN获取DN列表(副本数)
    3. 验证DN列表以后更小的单位流式传输数据
      1. 各节点,两两通信确定可用
    4. Block传输结束后
      1. DN向NN汇报Block信息
      2. DN向Client汇报完成
      3. Client向NN汇报完成
    5. 获取下一个Block存放的DN列表
    6. 循环1-5步骤
    7. 最终Client汇报完成
    8. NN会在写流程更新文件状态
HDFS写流程

HDFS读流程

  1. Client
    1. 和NN获取一部分Block副本位置列表
    2. 线性和DN获取Block,最终合并为一个文件
    3. 在Block副本列表中按距离择优选取
HDFS读流程

HDFS文件权限POSIX

  1. 与Linux文件权限类似
    1. r:read; w:write; x:execute
    2. 权限x对于文件忽略,对于文件夹标示是否允许访问其内容
  2. 如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan
  3. HDFS的权限目的:阻止好人做错事,而不是防止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你就是谁

安全模式

  1. namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作
  2. 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志
  3. 此刻namenode运行在安全模式。即namenode的文件系统对于客户端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)
  4. 在此阶段namenode收集各个datanode的报告,当数据块到最小副本数以上时,会被认为是“安全”的,在一定比例(可设置)的数据块被确定为“安全”后,在过若干时间,安全模式结束
  5. 当检测副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是namenode维护的,而是以块列表存储在datanode中

相关文章

网友评论

      本文标题:Hadoop相关介绍

      本文链接:https://www.haomeiwen.com/subject/vdfmzxtx.html