如果多个客户端同时访问一个数据文件hdfs如何分配任务

如果多个客户端同时访问一个数据文件hdfs如何分配任务,第1张

HDFS会将数余镇含据文竖笑件分成多个数据块。根据查询相关公开信息显示,HDFS会根据客户端的请求,将这些数据块复制到其他数据节点上,以提高数据的可靠性和容错性。在数据访问时,HDFS会通过NameNode节点来协调数旅圆据块的读写 *** 作,避免数据冲突和数据损坏。

上半句话,访问文件不外乎读和写,需要读写时调用函数FileSystem&open()和FileSystem&create(),返回的对象是FSDataInputStream和FSDataOutputStream。 data直译成中文就是数清前绝据,stream直译成中文就是流。 这两个对象分别继承于java.io.DataInputStream和java.io.DataOutputStream, 是java的常用的文件读写类。 需要读时用DataInputStream的函数readInt(), readFloat()...,悔慧写时也差不多。

下半句话,两个关键词, ”单个客户“和”追加“。单个客户指不能有两个线程同时写;追加指写的形式只能是在文件后加内容(append),不能覆盖(overwrite)。 这两个限制都是设计上简化考虑。 多个线程同时append时,由于hdfs是一份文件存于多个答姿机器,保证在每台机器上两个线程写的顺序一致(从而结果一致)是一个很难的问题(当然不是做不到), 出于简单考虑, 就不这么做了。 多个线程同时overwrite就更麻烦。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12206870.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存