大数据分布式存储原理
1.什么是大数据
短时间内快速的产生海量的多种多样的有价值的数据
2.大数据技术
2.1 分布式存储
2.2 分布式计算
① 分布式批处理(无法实现预测)
存一段时间的数据,等到将来某
大数据基础 1.什么是大数据 短时间内快速的产生海量的多种多样的有价值的数据 2.大数据技术 2.1 分布式存储 2.2 分布式计算 ① 分布式批处理(无法实现预测) 存一段时间的数据,等到将来某一时刻时再进行处理 ② 分布式流处理(实时处理)(无法实现预测) 数据不需要攒,直接处理,每产生一条数据,立马对这条数据进行处理。 2.3 机器学习 可以实现预测 3.分布式存储原理 3.1主要概念:元数据:描述数据的数据 NameNode:管理元数据 datanode:负责存储源数据 block:存储单元 一个存储单元的数据,不能拆分成两部分来存储 备份:解决数据安全 3.2上传文件步骤:①如果要上传一个大文件,计算大文件的block数量,大文件大小/128M=block数 ②客户端向namenode汇报 当前大文件的block数 当前大文件属主 (权限) 上传时间 for(Block block:blocks(大文件计算出来的block)){ ③客户端切割出来的一个block ④客户端向namenode请求block块的id号以及地址 ⑤因为namenode能够掌握全局,管理所有的DataNode,所以他会将负载不高的DataNode地址返回给客户端 ⑥客户端拿到地址后,找到DataNode去上传数据 写数据的详细流程:在DataNode之间建立一个管道 将一个block切割成一个个packet(64k),然后源源不断的往管道中输送 这样做的目的是并行存储 ⑦DataNode将block存储完毕后,会向namenode汇报当前的存储情况 } 3.3namenode的作用:掌控全局,管理DataNode以及元数据 元数据存储在内存中(因为内存不稳定,需要将元数据持久化到磁盘上) 元数据包括:文件owership,permissions 文件大小 上传时间 block列表:blockId block以及副本的位置(由DataNode汇报) 接受客户端的读写服务 接受客户端的读请求,返回地址 3.4DataNode的作用:存储block块,向namenode汇报并发送心跳 接受客户端的读请求 3.5备份机制 (默认有两个备份) 机架:用来放值服务器的,一般一个机架有10台服务器 ①第一个block存储在负载不是很高的一台服务器上(集群外提交) 第一个block存储在当前的节点(集群内提交) ②第一个备份的block存储在与第一个block不同的机架的随机一台服务器上 ③第二个备份的block存储在与第一个备份相同的机架不同的服务器上 3.6读数据的详细流程 当客户端获得了DataNode的地址时,直接去DataNode读取数据,DataNode之间不会建立管道 3.7持久化的详细流程 因为持久化的过程比较复杂,所以把这个过程交给namenode的代理secondary namenode来执行 角色在集群中都是用进程来表现的 合并触发机制:时间超过3600或者edits文件的大小超过64M edits文件存放的是:会改变元数据的操作 fsimage文件存放的是:元数据 当集群启动时,namenode会创建两个文件edits和fsimage,当满足合并触发机制时,secondary namenode 会将这两个文件 拉过来,然后对edits文件中的操作进行重演,将生成的元数据与fsimage文件中的合并,生成一个新的文件fsimage.ckpt 返回给namenode。在secondary namenode将两个文件拉过去时,为了防止在合并的过程中大数据存储技术,由于又有新的操作改变元数据, 导致元数据丢失,会创建一个新的文件edits.new来存放新的操作 并不是所有的元数据都会持久化。除了block的位置信息,其他的元数据都会持久化。原因:block位置信息经常改变 但这样的话,当HDFS集群重启时,namenode中的元数据就会有所丢失,导致集群无法对外提供服务。解决办法:HDFS集群 启动之时,所有的DataNode都会向namenode汇报当前节点的block信息 4.权限:依据Linux系统的用户系统 是用来防止好人做坏事(防君子,不防小人),你告诉他你是谁,他就会认为你是谁 5.安全模式:①加载fsimage,加载到内存中 ②如果edits文件不为空,那么namenode自己来合并 ③检查DataNode的健康情况 ④如果有DataNode挂掉了。指挥做备份 处于安全模式的过程中,能不能读文件内容? 如果fsimage已经加载到内存中,可以查看到文件目录,但是无法读取 6.HDFS集群不允许修改、文件一旦上传成功不能修改block块的大小。因为一旦修改,那么这个block块以后的block都会修改,这样 就造成了集群泛洪。 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |