分享

请问,当从本地向hdfs复制文件时,且本地文件非常大,hdfs是如何存储它的

llike90 发表于 2013-10-25 10:45:56 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 10877
请问,当从本地向hdfs复制文件时,且本地文件非常大,hdfs是如何存储它的吗?如何分块吗?

已有(4)人评论

跳转到指定楼层
starrycheng 发表于 2013-10-25 10:45:56
从文件头开始均匀按块划分,各块均衡地分布存储到集群的各节点上,默认每块大小为64M,而且是完全地存储在DataNode节点上,以文件的形式存在.
回复

使用道具 举报

shihailong123 发表于 2013-10-25 10:45:56
回复 2# eyjian
    各块均衡地分布存储到集群的各节点上吗?  你的意思是各个分块分布在datanode上存储吗?
     应该是在每个datanode上存储一个副本吧吗?
回复

使用道具 举报

yunjisuanxue 发表于 2013-10-25 10:45:56
回复 2# eyjian
    提问,也就是说不会并行写入吗?假如文件大小超过dfs.block.size设置,那么文件将会放到多个节点上(每个节点一个block),写入文件时顺序写每个block,而不是并行同时写吗吗?
回复

使用道具 举报

sq331335144 发表于 2013-10-25 10:45:56
回复 4# feelflying
    HDFS不支持对同一个文件多用户写,只能是一个用户写,当写入文件时先是在本地憋够一个Block的大小再写到HDFS中的,就算超过了block size,文件也只是分成了几个block,第一份的blocks先是写到其中一个节点,然后再流传输到其它节点。可能写入时的节点间流传输,算得上并行写入吧,不过是用在备份的。所以,节点的增加应该也提升不了写入的性能。还是加机器的配置和网络带宽吧。
    没记错的话,应该是这样,你可以看看api的实现。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条