hdfs的实现目标和局限
1.实现目标
- 兼容廉价的硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性
2.局限
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件
namenode和datanode
secondaryNameNode的工作情况
hdfs数据出错与恢复
1. 名称节点出错
- 名称节点保存了所有的元数据信息,
- 其中,最核心的两大数据结构是FsImage和Editlog,如果这两个文件发生损坏,那么整个HDFS实例将失效。
- 因此,HDFS设置了备份机制,把这些核心文件同步复制到备份服务器SecondaryNameNode上。
当名称节点出错时,就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog数据进行恢复。
2. 数据节点出错
- 每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态
- 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不可读”,名称节点不会再给它们发送任何I/O请求
- 这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一些数据块的副本数量小于冗余因子
- 名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本
HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置
3. 数据出错
- 网络传输和磁盘错误等因素,都会造成数据错误
- 客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读取到正确的数据
- 在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息写入到同一个路径的隐藏文件里面
- 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个块
hdfs读写过程
1. 读过程
2. 写过程
NoSQL数据库具有以下几个特点:
• (1)灵活的可扩展性
• (2)灵活的数据模型
• (3)与云计算紧密融合
四种常见的NOSQL
- 键值数据库
- 列族数据库
- 文档数据库
- 图形数据库
Nosql的三大基石
- cap
- base
- 最终一致性
云数据库
在UMP系统中,Zookeeper主要发挥三个作用:
• 作为全局的配置服务器
• 提供分布式锁(选出一个集群的“总管”)
• 监控所有MySQL实例
UMP系统架构
mapreduce
mapreduce的体系结构
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的体系结构
YARN的目标就是实现“一个集群多个框架”,为什么?
- 一个企业当中同时存在各种不同的业务应用场景,需要采用不同的计算框架
• MapReduce实现离线批处理
• 使用Impala实现实时交互式查询分析
• 使用Storm实现流式数据实时分析
• 使用Spark实现迭代计算 - 这些产品通常来自不同的开发团队,具有各自的资源调度管理机制
为了避免不同类型应用之间互相干扰,企业就需要把内部的服务器拆分成多个集群,分别安装运行不同的计算框架,即“一个框架一个集群” - 导致问题
• 集群资源利用率低
• 数据无法共享
• 维护代价高 - YARN的目标就是实现“一个集群多个框架”
• 即在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算框架
• 由YARN为这些计算框架提供统一的资源调度管理服务,并且能够根据各种计算框架的负载需求,调整各自占用的资源,实现集群资源共享和资源弹性收缩
可以实现一个集群上的不同应用负载混搭,有效提高了集群的利用率
• 不同计算框架可以共享底层存储,避免了数据集跨集群移动
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。