大数据开发hadoop(hadoop搭建大数据平台)
家电修理 2023-07-16 19:16www.caominkang.com电器维修
一为什么学习hdfs?
- 在没有hdfs之前,我们存储数据,将数据存放在硬盘中。
这样有个问题,如果硬盘坏了怎么办?我们数据将会丢失。
如果数据量非常大,我们的读写效率怎么保证。
以上俩个大的问题,是我们作为存储数据要思考的非常关键的俩个点。
- 分布式(解决IO瓶颈)
采用分布式方式进行存储。将我们的相连的数据,按照一定的规定进行切割放在不同的存储器中,才访问的时候,我们从不同的存储器中取出来,之后进行拼接,得到我们的最终结果,这种分布式的方式大大提高了查询的效率。高可用(解决单点故障)
将我们的数据进行复制备份,存放在多个存储器中,这样及时一个出现问题,那么其他的依旧可以使用。
此图说明了在存储器(datanodes)的数据存储架构。采用了了高可用和分布式的结构。
- 为什么出现NameNode?
因为我们的DataNode大多了,在真实环境中,我们的DataNode是非常多的,每次client进行访问的时候,寻找对应的地址都是非常苦难的NameNode是什么?
因为上述原因,我们在建立了一个NameNode。他的主要作用就是管理我们的DataNode。当client进行传输数据和读取数据的时候,先要通过NameNode进行查询,得到具体的位置,之后进行操作。包括监控每个DataNode是否宕机,这些都是NameNode的作用。NameNode怎么使用?
NameNode管理大量的DataNode,而且会进行频繁的IO。所以,在NameNOde中,我们会将数据存储在内存中,在重启的时候会存放在硬盘中,下次在打开在进行加载。
- 为什么出现Secondary NameNode?
随着NameNode的管理数据越来越多,内存会变得非常大,如果出现不正常的关机,例如宕机这种情况,会将我们的的内存中大量的数据全部都丢失,后期恢复非常麻烦。什么是Secondary Namenode?
对NameNode进行备份和维护。怎么使用?
- 方法一进行快照。
定期将NameNode的数据进行拍快照进行处理。
- 优点恢复快。缺点每次拍照有间隔,这样恢复的时候会丢失一些数据。
将NameNode的每个操作步骤进行记录,当需要的时候,直接将记录重新加载。
- 优点不会造成数据的丢失。缺点随着时间的推移,后期恢复工作量非常大,非常浪费时间。
我们定期将数据快照,之后在每个快照的中间,将数据进行写日志。
这个样子,我们就可以保证数据不会丢失,数据恢复也非常快。
在1.0中,我们对于DataNode进行了高可用,对于NameNode和SecondaryNameNode并没有进行高可用管理。
2. 新版本有什么改变? JournalNode- 我们对于SecondaryNameNode进行了多个进行部署,并且存储在硬盘上。
- ActiveNN 主节点。StandyNN 备用节点。
- 为什么出现?
我们对于NameNode进行了高可用。我们需要对NameNode进行监控。所以,出现了ZKFC。
- 如果其中一个NameNode宕机了,我们需要进行选举,选出一个来进行充当leader。
- 脑裂
- 为什么出现脑裂?
脑裂是指,我们的ANN和ZKFC都进行裆机了,这个时候,启动备用节点当主要节点,结果过了一会,坏的节点好了,这个时候都进行传输命令,这个时候,客户端不知道该听谁的怎么做?
- 只要保证在同一时刻,Cilent只能接受到一个NN的命令。对于刚好的那个机器,先和他谈,如果他愿意当备用,那直接变成备用,如果不愿意,直接杀死他的进程。
- 每个文件都进行三个备份,很多时候一些使用少的文件,没有必要备份那么多,所以,我们可以进行优化。对于有些DataNode存储数据量不一样,有些使用率非常高,有些使用率比较低,这个对于资源的消耗也是非常大的。
- 可擦除编码。
均衡处理数据
例如我们刚刚添加了一个硬盘,在之前的硬盘数据比较多,现在新的没有数据,这个时候,会自动的将数据进行做调整
- 客户端向hdfs发送写数据请求。filesystem向=通过rpc调用NameNode的create方法。
NN先检查是否有足够的空间存储数据,这个路劲上是否有数据。
有足够空间,创建一个空的对象,并返回一个成功的状态。
没有足够空间,直接抛出异常,给客户端显示错误的信息。HDFS接受到成功的转台,会创建一个对象FSDateOutputStream的对象给客户端使用。客户端向NameNode咨询第一个存放的位置。
通过机架感知策略(node1,node3,node8)需要将客户端和DataNode创建连接。
pipeline(管道)
客户端和node1相连。
nodo1和node3相连。
node3和node8相连。客户端将文件按照block进行切分数据,按照packet发发送数据。
默认一个packet大小为64k。一个block为128M,一个block为2048个packet。客户端使用FSDateOutputStream的对象将数据输出。
客户端先将第一个packet发送给node1.并赋予node1一个ack状体。
node1接收到数据之后会向node3发送数据,并赋予node3一个ack状态。
node3接受到数据之后回向node8发送数据,并赋予node8一个ack状态。
node8接受完这个packet之后会向node3返回true。
node3接受完这个packet之后会向node1返回一个true。
node1接受完这个packet之后会向client发送true。客户端接收到true之后说明这个packet发送完成,直到所有的packet全部都发送完成。客户端完成之后会向NameNode传输true。之后询问下一个packet的传输位置, 直到所有的全部传输完毕,管道就会被撤销。当所有的信息都被传输完成之后,NameNode会存储所有的文件与Block和NameNode的存储关系。
- 我们将硬盘中的数据写入buffered中。之后buffer中的数据按照512B为一个chunk(块)在加上checksum校验值存放,满了之后放在packet(包)中,本来一个packet能放128个chunk,加了一个checknum所以只能放127个。
4. 当packet满了的时候,存入dataqueue消息队列。
5. 之后数据经过dataQueue中,打他Queue的作用1从Dataqueue中取出数据。2存在ackQueue中。3将数据放在管道中
6. 之后数据在管道中进行传递。
7.如果数据在传输过程中发生失误。返回消息给ResponseProcessor中,将之前的数据重新放回到DataQueue中。
8. 如果数据没问题,那么返回成功值给ResponseProcessor将存在ackQueue中的数据进行杀死。
上一篇:手机电子邮箱怎么注册申请?
下一篇:winservices.exe是什么进程
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工