带你快速了解Hadoop之HDFS(一)

Hadoop-HDFS

Hadoop历史

Hadoop进化史 带你快速了解Hadoop之HDFS(一)

Hadoop官网

http://hadoop.apache.org/

带你快速了解Hadoop之HDFS(一)
  • Hadoop Common 基础型功能
  • Hadoop Distributed File System 负责存放数据
  • Hadoop YARN 负责资源的调配
  • Hadoop MapReduce 大数据的计算框架
  • Hadoop Ozone 数据存放到仓库
  • Hadoop Submarine 机器学习引擎

分布式文件系统架构

  • FS File System
    • 文件系统是基于硬盘之上的一个文件管理系统的工具
    • 我们用户操作文件系统可以和硬盘进行解耦
  • DFS Distributed FileSyetem
    • 分布式文件系统
    • 管理网络中跨多台计算机存储的文件系统称为分布式文件系统
    • 将我们的数据存放在多台电脑上存储
    • 分布式文件系统有很多,HDFS(Hadoop Distributed FileSyetem)是Hadoop自带的分布式文件系统
    • HDFS是Map Reduce计算的基础

文件切分思想

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

Block(块)拆分标准

  • 数据块Block

    • 磁盘进行数据 读/写的最小单位
    • 在Hadoop 1默认大小为64M,在Hadoop 2及其之后默认大小为128M
      • 块这么大是为了最小化寻址开销
    • 同一个文件中,每个数据块的大小要一致除了最后一个节点外
      • 不同文件中,块的大小可以不一致
      • 文件大小不同可以设置不同的块的数量
      • HDFS中小于一个块的大小的文件不会占据整个块的空间
    • 真实情况下,会根据文件大小和集群节点的数量综合考虑块的大小
    • 数据块的个数=Ceil(文件大小/每个块的大小)
  • 拆分的数据块需要等大

    • 数据计算的时候简化问题的复杂度(否则进行分布式算法设计的时候会因为数据量不一很难设计)
    • 数据拉取的时候时间相对一致
    • 通过偏移量就知道这个块的位置
    • 相同文件分成的数据块大小应该相等
  • 注意事项

    • 只要有任意一个块丢失,整个数据文件被损坏
    • HDFS中一旦文件被存储,数据不允许被修改
      • 修改会影响偏移量
      • 修改会导致数据倾斜
      • 修改数据会导致蝴蝶效应
    • 但是可以被追加(一般不推荐)
      • 追加设置需要手动打开
    • 一般HDFS存储的都是历史数据.所以将来Map Reduce都用来进行离线数据的处理
    • 块的大小一旦文件上传之后就不允许被修改
      • 128M-512M

Block数据安全

  • 只要有任意一个块丢失,整个数据文件被损坏
  • 肯定要对存储数据做备份
  • HDFS是直接对原始数据进行备份的,这样能保证回复效率和读取效率
  • 备份的数据肯定不能存放在一个节点上,使用数据的时候可以就近获取数据
  • 备份的数量要小于等于节点的数量
  • 每个数据块默认会有三个副本,相同副本是不会存放在同一个节点上
  • 副本的数量可以变更
    • 可能近期数据被分析的可能性很大,副本数可以多设置几个
    • 后期数据很少被分析,可以减少副本数

Block的管理效率

  • 需要专门给节点进行分工
    • 存储 DataNode
    • 记录 NameNode
    • 日志 Secondary NameNode
      带你快速了解Hadoop之HDFS(一)

      准备安装环境

      修改集群环境

      修改配置文件

      拷贝软件到其他主机

      将配置好的软件发到其他两台主机

      修改环境变量

      • 三台主机都需要修改

      • 重新加载三台主机的环境变量

      格式化NameNode

      • 启动

      测试集群

      • 访问 node01替换成IP地址

      • 如果出以下下页面代表成功

        带你快速了解Hadoop之HDFS(一)
    • 文件数据

      • 文件的真实数据,文件真正存放的内容,这个数据就是存储在硬盘上的二进制数据

    NameNode

    带你快速了解Hadoop之HDFS(一)

DataNode

功能

  • 存放的是文件的数据信息和验证文件完整性的校验信息
    • 数据会存放在硬盘上
    • 1m=1条元数据;1G=1条元数据
    • NameNode非常排斥存储小文件,一般小文件在存储之前需要进行压缩
  • 汇报
    • 启动时
      • 汇报之前先验证Block文件是否被损坏
      • 向NameNode汇报当前DataNode上Block的信息
    • 运行中
      • 向NameNode保持心跳机制
      • 客户可以向DataNode读写数据
  • 当客户端读写数据的时候,首先去NameNode查询file与Block与DataNode的映射
    • 然后客户端直接与DataNode建立连接,然后读写数据

来源:悉贝

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月20日
下一篇 2021年11月20日

相关推荐