5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)

5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)

1. Hadoop的前世今生

5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)_第1张图片

1.1. Hadoop进化史

  • Nutch

    • Hadoop最早起源于Nutch。
    • Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能
    • 但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
  • Google

    • 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
    • GFS : Google File System
    • MapReduce :数据计算的方法
  • Doug cutting 花费了自己的两年业余时间,将论文实现了出来

    • 2008年1月,HADOOP成为Apache顶级项目
  • Hadoop

    • 狭义上来说,hadoop就是单独指代hadoop这个软件
    • 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件
    • 5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)_第2张图片

1.2. Hadoop官网

  • 网址 http://hadoop.apache.org/
  • https://archive.apache.org/dist/hadoop/common/hadoop-3.1.2/
  • 5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)_第3张图片

1.3. Hadoop Model

5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)_第4张图片

  • Hadoop Common 基础型功能
  • Hadoop Distributed File System 负责存放数据
  • Hadoop YARN 负责资源的调配
  • Hadoop MapReduce 大数据的计算框架
  • Hadoop Ozone 数据存放到仓库
  • Hadoop Submarine 机器学习引擎

2.分布式文件系统架构

  • FS File System
    • 文件系统是基于硬盘之上的一个文件管理的工具
    • 我们用户操作文件系统可以和硬盘进行解耦
  • DFS Distributed File System:
    • 分布式文件系统
    • 将我们的数据存放在多台电脑上存储
    • 分布式文件系统有很多,
    • HDFS是mapreduce计算的基础

2.1.文件切分思想

  • 文件存放在一个磁盘上效率肯定是低的
    • 读取效率低
    • 如果文件特别大会超出单机的存储范围
  • 字节数组
    • 文件在磁盘真实存储文件的抽象概念
    • 数组可以进行拆分和组装,源文件不会受到影响
  • 切分数据
    • 对字节数组进行切分
  • 拼接数据
    • 按照数组的偏移量将数据连接到一起,将字节数组链接到一起
  • 偏移量
    • 当前数据在数组中的相对位置,你可以理解为 下标
    • 数组都有对应的索引(下标),可以快速的定位数据
  • 数据存储的原理:
    • 不管文件的的大小,所有的文件都是由字节数组构成
    • 如果我们要切分文件,就是将一个字节数组分成多份
    • 我们将切分后的数据拼接到一起,数据可以继续使用
    • 我们需要根据数据的偏移量将他们重新拼接到一起

2.2. Block拆分标准

  • 拆分的数据块需要等大
    • 数据计算的时候简化问题的复杂度
      • 进行分布式算法设计的时候,数据不统一,算法很难设计
    • 数据拉取的时候时间相对一致
    • 通过偏移量就知道这个块的位置
    • 相同文件,分成的数据块大小应该相等
  • 数据块 Block
    • 数据被切分后的一个整体称之为块
    • 在H1默认大小为64M,在H2及其以后默认大小为128M
    • 同一个文件中,每个数据块大小要一致除了最后一个节点外
      • 不同文件中,块的大小可以不一致
      • 文件大小不同可以设置不同的块的数量
    • 真实情况下,会根据文件大小和集群节点的数量综合考虑块的大小
    • 数据块的个数 =Ceil( 文件大小 / 每个块的大小)
  • 注意事项
    • HDFS中一旦文件被存储,数据不允许被修改
      • 修改会影响偏移量
      • 修改会导致数据倾斜
      • 修改数据会导致蝴蝶效益
    • 但是可以被追加,但是不推荐
      • 追加设置需要手动打开
    • 一般HDFS存储的都是历史数据。所以 将来Hadoop的mr都用来进行离线数据的处理
    • 块的大小一旦文件上传之后就不允许被修改
      • 128m -512M
    • 如果数据文件的切割点128M整好是一个单词的中间部分,切分数据如何保证数据的完整性?

2.3. Block数据安全

  • 肯定要对存储数据做备份
  • 备份的数据肯定不能存放在一个节点上
    • 使用数据的时候可以就近获取数据
  • 所以备份的数量要小于等于节点的数量
  • 每个数据块会有3个副本,相同副本是不会存放在同一个节点上
  • 副本的数量可以变更
    • 可能近期的数据被分析的可能性跟大,副本数可以多设置几个
    • 后期数据很少被分析,可以减少副本数

2.4. Block的管理效率

  • 需要专门给节点进行分工
    • 存储 DataNode
    • 记录 NameNode
    • 日志 secondaryNameNode
    • 5.Hadoop之HDFS(一)(Hadoop进化史与HDFS)_第5张图片

2.5. HDFS的特点

  • 优点
    • a)高容错性
      • i.保存多个副本,且提供容错机制。
      • ii.副本丢失或宕机自动恢复。默认存3份。
    • b)运行在廉价的机器上(商用机)
      • i.通过副本提高可靠性
      • ii.提供了容错和恢复机制
    • c)适合批处理
      • i.移动计算而非数据
      • ii.数据位置暴露给计算框架。NameNode上有位置
    • d)适合大数据的处理
      • i.TB,甚至PB级数据
      • ii.百万规模以上的文件数量
      • iii.10K+节点规模
    • e)流式数据访问
      • i.一次写入,多次读取,高吞吐量,所以可以同时处理大量数据
  • 缺点
    • a)不擅长低延迟数据访问
      • 比如毫秒级
    • b)不擅长小文件的分区
      • i.占用NameNode大量内存
      • ii.磁盘寻道时间超过读取时间
    • c)不擅长并发写入,文件随机修改
      • i.一个文件只能有一个写入者
      • ii.仅支持append,也就是添加(有组件实现删等)

毫秒级

  • b)不擅长小文件的分区
    • i.占用NameNode大量内存
    • ii.磁盘寻道时间超过读取时间
  • c)不擅长并发写入,文件随机修改
    • i.一个文件只能有一个写入者
    • ii.仅支持append,也就是添加(有组件实现删等)

你可能感兴趣的:(Hadoop,hadoop,hdfs,大数据,mapreduce,分布式)