初学大数据(主要介绍分布式存储)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DonviYang/article/details/82990964

初学大数据(主要介绍分布式存储)

1.什么是大数据?
短时间内快速产生海量多种多样有价值的数据
2.大数据中的技术
①分布式存储
②分布式计算(包含以下两种)

	1)分布式批处理
			攒一段时间的数据,然后在未来某个时间处理这批数据
	2)分布式流处理
			不需要攒数据,直接处理,每产生一条数据,立马对这条数据进行处理,将结果推送到前端页面存储到数据库中。(双11天猫大屏幕、QQ实时在线分布情况都属于分布式流处理。)

3.部分概念
元数据:描述数据的数据
机架:Rack,现实中放服务器的架子,一般情况下一个机架放10条服务器。
4.为什么要用到分布式存储与计算?
假设有一个10PB的文件需要存储并处理,单台服务器的内存资源与计算资源都无法满足需求。因此引入分布式存储与计算。
5.分布式存储(HDFS)的基本思想?
用户client需要存储并处理一个10PB文件,假设将其分布存储在6台服务器上(6个Datanode)。此时,为记录每台服务器都存了哪些资源,引入一个代理(Namenode)。代理解决如何存、往哪存,如何取、去哪取的问题。

过程:当client需要存一个资源时,询问Namenode,后者返回一组地址等信息给client,client根据地址等信息向Datanode去存储;当client需要取其中的某个资源时,询问Namenode,后者告诉它文件在哪里,client直接去取资源。
在这里插入图片描述
6.Namenode的作用:
1)掌控全局,管理Datanode及元数据(元数据存储在内存中)
2)接受客户端的读写服务
3)收集Datanode汇报的Block列表信息
Namenode保存metadata信息包括:
文件ownship和permissions
文件大小、时间(Block列表:BloID)
Block副本位置(由Datanode上报)
4)接受client的读请求,返回地址
7.Datenode的作用:
1)存储block块,向Namenode发送心跳
2)接受client的读请求
8.HDFS的备份机制:
1)第一个block存储在负载不是很高的一台服务器上
2)第1个备份的block存储在与第一个block不同的机架随机一条服务器上
3)第2个备份在与第一个备份相同的机架随机一台服务器上
9.client向Datanode读/写数据的详细流程(2018-10-11更新)
Namenode返回给client一批地址之后,这些Datanode之间会形成一个Pipeline管道,管道中流的就是block切割成的一个个packet(64k)。这种方法不会造成阻塞,提高效率。(图中黑色为写数据过程,红色为读数据过程)
在这里插入图片描述
在这里插入图片描述
10.Namenode的持久化进程
为什么要把Namenode持久化?
Datanode有备份,可以防止数据损坏丢失等。但是作为掌控全局的Namenode,如果出现问题,后果比Datanode要严重的多,那么如何让其更加安全?使用的是持久化,即写入磁盘。
为什么要使用持久化,而不是备份?若使用备份,Namenode要与其他进程进行通信,并且备份与恢复至少存在两次io,极大浪费了Namenode的宝贵负载资源。故不用。
何时持久化?
合并触发机制:
1.超过3600秒未合并
2.如果edits文件超过64M
如何持久化?
edits主要保存在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录
fsimage保存了最新的元数据检查点,在HDFS启动时加载fsimage的信息,包含了整个HDFS文件系统的所有目录和文件的信息
edits.new保存的是在edits做持久化的10s中(这10s期间edits无法更新记录),HDFS进行的各种更新操作

在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页