06 | 新技术层出不穷,HDFS依然是存储的王者
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
HDFS作为大数据存储的核心技术,以其高速、可靠和高可用的特点,稳固地占据着重要地位。文章从HDFS的设计目标出发,介绍了其实现大数据高速、可靠存储和访问的原理。通过将文件数据分割成数据块并在分布式服务器集群上进行并行读写和冗余存储,HDFS实现了PB级存储容量和高速访问。此外,文章还详细阐述了HDFS的高可用设计,包括数据存储故障容错、磁盘故障容错、DataNode和NameNode故障容错等方面。通过校验和、数据块复制和主从热备等策略,HDFS保证了数据的高可用性,为分布式系统的稳定运行提供了重要保障。总之,HDFS以其高速、可靠和高可用的特点,依然是大数据存储的不可或缺的技术基石。 HDFS通过大规模分布式服务器集群实现数据的大容量、高速、可靠存储和访问。文件数据以数据块的方式进行切分,存储在集群任意DataNode服务器上,实现了大容量存储。HDFS一般的访问模式是通过MapReduce程序在计算时读取,实现数据的高速访问。DataNode存储的数据块会进行复制,保证了数据的可靠性,并通过一系列的故障容错手段实现HDFS系统的高可用。思考题则提出了构建一个可以付费共享的分布式文件系统的场景,鼓励读者思考如何设计这个分布式文件系统。 如果我来设计这个分布式文件系统,我会考虑如何确保数据的安全性和隐私保护,以及如何建立公平的收费机制。同时,我会思考如何实现高效的数据存储和访问,以及如何处理设备故障和数据丢失的情况。我的设计方案将包括数据加密、备份策略、用户权限管理、智能负载均衡等方面的考虑,以确保系统的稳定性和可靠性。
《从 0 开始学大数据》,新⼈⾸单¥68
全部留言(96)
- 最新
- 精选
- 上个纪元的赵天师听过本期音频,我想,在现实的条件下,实现这样的设想非常困难,例如:【1】用户空间(尤其是手机,iPad)不能保障高可用的性能,随时被访问被验证;【2】网络条件要求过高,尤其是被需求或者需要均衡时频繁的文件迁移;【3】要验证HDFS所有备份块的可用性,因此个人中端上不能过多不同用户,过碎的数据块;【4】为了保证系统的高效一般一块数据不会过小,要不然会浪费过多的计算资源(进程),如果单块数据在128M左右,自然会受到终端存储规模的制约【5】等等诸多隐患。因此,稳定的分布式端点还是必要的,不然文件将在诸多节点中频繁移动浪费大量的网络资源。【补】过于复杂的架构网络,对验证的响应延时也造成了麻烦。边走边打字暂时先想到这些😬
作者回复: 很周全
2018-11-104117 - 文大头1、互联网上用户交分散,需要用CDN的模式,分层分区域部署NameNode,NameNode上数据汇总到上级,上级数据按需分发到下级。同一个区域的用户(DataNode)分配到同一个NameNode 2、用户DataNode机器可用性极差,按10%算,平均一个数据需要10个备份。不过可以有一定策略改进,比如让用户活跃时间跟用户等级挂钩,等级跟功能挂钩,以鼓励用户增加在线时间;存储数据可以分级别,高级别数据备份更多,可用性安全性速度更高,级别低备份少。 3、安全性考虑,其他用户存储在NameNode上的数据,不能被宿主机破解查看和修改 暂时想了这些,感觉再想下去要变成百度网盘或者迅雷了
作者回复: 想的很周全
2018-11-1243 - 牛油果讲技术不讲技术脉络的也都是流氓啊。那些去中心化存储的区块链项目,就没谁写出去中心存储应是借鉴或发展于hdfs等分布式存储方案。raid到hdfs立马好理解多了。我是看过ipfs,storj,sia等几个去中心化的存储方案。通过看今天的内容,我突然感觉开窍了,他们整得太复杂了,基于hdfs加上存储时空证明就能实现去中心化存储,实现高可用的技术细节考虑的当然不同了,而存储时空权益就把终端的高可用工作分散到具体用户了。当然,namenode是中心化部署还是代理节点部署还是要考虑一下。另,通过用户贡献的存储时长和空间换来的受益,这对用户的约束可能会随时间变化而减少,进而存储的可用性是不稳定的,但这里我想了两个方案:1,用户贡献出来的资源是为了储值的,获得权益是要零存整取,加大惩罚成本(这个估计他们实际做的会想到,我当时看时反正没看到);2,整个分布式系统加一套蓝光备份系统,这种低成本数据存储方案是对要求高可用数据的备选项。
作者回复: 深刻👍🏻
2018-11-2114 - 朱国伟关于DataNode 故障容错感觉处理起来好复杂啊 假设numReplicas=2 由于机器故障导致DataNode 1宕机 此时为了保证numReplicas=2会复制数据 像下面的情况怎么处理呢 - 等全部复制完了 DataNode1重启了 那此时numReplicas=3 这种情况会处理吗? - 或者复制到一半(即有些Block还没来得及复制) DataNode1重启了 这种情况又怎么办 - 或者集群勉强够用 实在没有多余的机器来复制DataNode1对应的数据了 又该如何 并且要是掉电或是网络异常 可能不是一个DataNode宕机 可能是怎个机架整个机房的DataNode的都宕机了
作者回复: DataNode即使重启也认为其上的数据已经丢失,不会再使用。
2018-11-10211 - 张晓生如果在一台nameNode服务器元数据有修改但是还没来得及热备到从nameNode服务器,这个时候刚好主nameNode服务器挂了,zookeeper选举出新的主服务器(之前的从节点),就会造成当前的主nameNode节点数据不正确。请问这种问题怎么解决呢?
作者回复: NameNode在本地有操作日志,可以利用这个日志进行恢复操作,但是前提是原来的主NameNode的硬盘没坏,还有就是恢复需要时间。
2019-01-1610 - wmg类似于hdfs的机制,只不过将用户设备作为datanode,namenode是中心化的(否则和区块链就比较类似)。有几个问题需要考虑:1.用户设备存储空间有限,所以block的大小不能太大;2.由于block不能太大所以元数据会比较大,对namenode存储空间要求较高;3.由于datanode是不可信的,所以需要对datanode设计身份识别机制,存储的数据也必须是加密,副本数量也要设置的多一些;4.由于所有的datanode都需要和namenode通信,所以datanode的数量会有限制,这样就限制了整个集群的存储空间,可以考虑多集群的方式,用户注册的时候利用负载平衡算法将用户划分到其中一个集群。暂时想到这么多,请老师指教。
作者回复: 很赞,不过NameNode不应该是存储空间的制约,该怎么办?
2018-11-127 - 奕这个思考题的实现思路是和IPFS的实现思路应该一样的
作者回复: 是的
2018-11-107 - 阿文请问下,数据报错转到其他 DataNode 上读取备份数据。这个过程需要 经过 NameNode 吗?
作者回复: 设计上是不需要的,client开始访问NameNode的时候已经获取了所有副本的信息,一个副本出错,client可以自己决定是否切换其他副本。 实现中client应该需要向NameNode汇报错误,NameNode可以据此修正出错的副本。
2021-06-293 - 极无宪如果 DataNode 监测到本机的某块磁盘损坏,就将该块磁盘上存储的所有 BlockID 报告给 NameNode? 如果已经损坏了,DataNode怎么获取到BlockID的,BlockID与数据不是存在一起的吗?
作者回复: 不是
2020-01-143 - 谢烟客既然 DataNode 已经完成了冗余备份了,是不是我们就可以在 DataNode 节点的存储选用上使用 raid0 提升一下性能呢?
作者回复: 没有必要,DataNode已经是对多个数据块并行访问磁盘,所以无需raid0
2018-11-153