为了账号安全,请及时绑定邮箱和手机立即绑定

关于视频中读流程所举的例子有些疑问

按照写的流程,在client想要写入数据时,会像namenode发起写入请求,然后namenode会寻找这次能够满足写入条件的datanode,然后将这些信息返回给client,client再将分片数据一次写入。我的理解是,此时处理这次写入操作的datanode是已经确定的(如视频中datanode1、2、3),也就是说datanode1、2、3上面都会有这次的数据分片,因为他只在开始的时候做了一次可用datanode的查询。那么,会出现读流程中所举的例子那样,分片1在datenode1、3上,分片2在datanode2、3上这种情况吗?写的时候不应该是备份到相同的datanode上吗?

正在回答

2 回答

这里是两个例子,分别是写流程和读流程。读流程这里因为篇幅原因没有画更多的节点。这里想表达的意思是同一个文件不同的数据块可能分布在不同的节点之上。client根据客户端提供的数据块的地址找对应的datanode去读取!这里我当时描述的可能不太清楚。

0 回复 有任何疑惑可以回复我~
#1

怕翻船的忒修斯 提问者

我明白您的意思,我想问的是会出现分片1分布在12节点上,分片2分布在23节点的这种情况吗?
2018-02-12 回复 有任何疑惑可以回复我~
#2

叁金 回复 怕翻船的忒修斯 提问者

会啊。一个文件的多个数据块会分布在不同的机器上。 这个分布要考虑到不同机架(防止断电断网对数据读取造成影响),他会优先存储到当前连接的datanode,所以某个文件的数据块1在datanode1和2 数据块2在datanode2和3是有可能的。
2018-02-12 回复 有任何疑惑可以回复我~
#3

怕翻船的忒修斯 提问者 回复 叁金

老师您的意思是他每个分片写入的时候都会再次去寻找合适的datanode吗?而不是说我在这次写入的最开始就已经决定了这次所有分片(分片abc)都存在123这个三个节点中吗?
2018-02-26 回复 有任何疑惑可以回复我~
#4

叁金 回复 怕翻船的忒修斯 提问者

哦哦哦。现在才明白你的问题到底在哪。 客户端上传数据的时候将数据进行分割,然后请求namenode获取要存储的datanode列表。 正常情况下,分开abc都会存储在节点123上。 但是,如果传输过程之中某一个节点失效了无法进行传输。 namenode会重新分配一个新的节点。 这有可能导致 不同的分片会在不同的节点。 如果不出问题正常情况下,他们所在的地址是一致的
2018-02-26 回复 有任何疑惑可以回复我~
#5

怕翻船的忒修斯 提问者 回复 叁金

明白了!谢谢老师!
2018-03-05 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

关于视频中读流程所举的例子有些疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信