DataNode 及单链表合并遍历
一、分布式文件系统HDFS
这种架构同时满足了,高性能(几千台服务器同时提供服务,同时读同时写),高可用(部分DataNode坏掉了可以及时的恢复数据),数据自动跨服务器,跨机架自动备份三个副本。文件的大小没有上限。
1.NomeNode
它是做源数据控制的,也就是操作系统文件控制块儿的角色,记录数据的文件名,创建者修改时间等等
2.DataNodes
数据块儿存在这里,DataNode是服务器。
一个数据块儿会跨服务器,跨机架存储三份儿,通过这种形式达到了高可以。
1.当一个DataNode启动了之后会向NameNode注册,也就是NameNode会知道新启动了一个DataNode
2.DataNode会向NameNode定时发送心跳,当么有心跳超时的时候,NameNode就会判定某个DataNode坏掉了。
3.这个时候NameNode就会检查坏掉的这台服务器上存储的数据块儿有哪些
4.再去检查这些数据块儿的备份块儿在哪些服务器上
5.检查到之后,通知这些有备份数据块儿的服务器,让他们把数据块儿保存到其它的服务器上。然后服务器之间会自动执行复制。
6.最后每个数据块儿会恢复成3个备份
请画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图
二、单链表合并
有两个单向链表(链表长度分别为 m,n),这两个单向链表有可能在某个元素合并,如下图所示的这样,也可能不合并。现在给定两个链表的头指针,在不修改链表的情况下,如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的 x 元素。
请用(伪)代码描述算法,并给出时间复杂度和空间复杂度。
查找合并元素的时间负载度为O(m*n) = O(n^2),空间复杂度为O(m+n)因为是俩链表儿,消耗内存空间最大的就是俩链表儿。
执行的结果如下:
评论