hdfs的实现目标和局限

1.实现目标

  • 兼容廉价的硬件设备
  • 流数据读写
  • 大数据集
  • 简单的文件模型
  • 强大的跨平台兼容性

2.局限

  • 不适合低延迟数据访问
  • 无法高效存储大量小文件
  • 不支持多用户写入及任意修改文件

namenode和datanode

image.png

secondaryNameNode的工作情况

image.png

hdfs数据出错与恢复

1. 名称节点出错

  • 名称节点保存了所有的元数据信息,
  • 其中,最核心的两大数据结构是FsImage和Editlog,如果这两个文件发生损坏,那么整个HDFS实例将失效。
  • 因此,HDFS设置了备份机制,把这些核心文件同步复制到备份服务器SecondaryNameNode上。
  • 当名称节点出错时,就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog数据进行恢复。

    2. 数据节点出错

  • 每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态
  • 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求
  • 这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一些数据块的副本数量小于冗余因子
  • 名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本
  • HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置

    3. 数据出错

  • 网络传输和磁盘错误等因素,都会造成数据错误
  • 客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读取到正确的数据
  • 在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息写入到同一个路径的隐藏文件里面
  • 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块

hdfs读写过程

1. 读过程

image.png

2. 写过程

image.png

NoSQL数据库具有以下几个特点:

• (1)灵活的可扩展性
• (2)灵活的数据模型
• (3)与云计算紧密融合

四种常见的NOSQL

  1. 键值数据库
    image.png
  2. 列族数据库
    image.png
  3. 文档数据库
    image.png
  4. 图形数据库
    image.png

Nosql的三大基石

  1. cap
  2. base
  3. 最终一致性

云数据库

在UMP系统中,Zookeeper主要发挥三个作用:

• 作为全局的配置服务器
• 提供分布式锁(选出一个集群的“总管”)
• 监控所有MySQL实例

UMP系统架构

image.png

mapreduce

mapreduce的体系结构

image.png
1)Client

  • 用户编写的MapReduce程序通过Client提交到JobTracker端
  • 用户可通过Client提供的一些接口查看作业运行状态

2)JobTracker

  • JobTracker负责资源监控和作业调度
  • JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点
  • JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源

3)TaskTracker

  • TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
  • TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用

4)Task

  • Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动

yarn的体系结构

image.png

YARN的目标就是实现“一个集群多个框架”,为什么?

  1. 一个企业当中同时存在各种不同的业务应用场景,需要采用不同的计算框架
    • MapReduce实现离线批处理
    • 使用Impala实现实时交互式查询分析
    • 使用Storm实现流式数据实时分析
    • 使用Spark实现迭代计算
  2. 这些产品通常来自不同的开发团队,具有各自的资源调度管理机制
    为了避免不同类型应用之间互相干扰,企业就需要把内部的服务器拆分成多个集群,分别安装运行不同的计算框架,即“一个框架一个集群”
  3. 导致问题
    • 集群资源利用率低
    • 数据无法共享
    • 维护代价高
  4. YARN的目标就是实现“一个集群多个框架”
    • 即在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架
    • 由YARN为这些计算框架提供统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩
    可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率
    • 不同计算框架可以共享底层存储,避免了数据集跨集群移动

自由自在像小鸟
4 声望1 粉丝