分享

请教个HDFS中文件大小的问题

skaterxu 发表于 2013-10-25 10:45:15 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 8800
我需要把原始数据文件存储在HDFS中,然后通过MapReduce分析,好像听说存入HDFS的文件大小是64M的话处理效率会高一点,有没有这个说法啊吗?
之前我自己测试的结果是,对于一个4.8G的数据:分为一个整体的文件(4.8G)和80个64M的小文件两种情况,测试发现处理一个4.8G的大文件的效率要高于处理80个64M的小文件,哪位高手能帮忙解释一下啊吗?

已有(5)人评论

跳转到指定楼层
a2325145 发表于 2013-10-25 10:45:15
你的测试可以说是对的,但也不是公平的。影响性能主要原因是“就近计算”,不知道80个文件是如何分布的,文件大小不一定64M是快,但肯定不能小于1M,估计至少10M以上才体现优势,如果单个文件很大,块大小设置成100~200M,性能应当都没,这个还和机器数量有关,因为相对越小,可以分布得越均衡。80个64M大小的文件,对单个文件来说,就是最不均衡的极端。这就好切分西瓜啦。
回复

使用道具 举报

leo_1989 发表于 2013-10-25 10:45:15
谢谢版主的解答,我测试用的两台datanode。数据是从namenode上导入到HDFS中的,如何查看文件的分布呢,用./hadoop fs -lsr检查的话两个datanode上面都有所有的80个64M文件啊。另外,按照版主的意思的话,对于总共4.8G的数据,文件大小分成多少时理论上处理效率会比较高呢吗?谢谢啦
回复

使用道具 举报

poptang4 发表于 2013-10-25 10:45:15
刚看了一下,应该是从哪个datanode上传的就存储在哪个机器上,从namenode上传时自动分配的吧吗?那如果两台所有数据在两台datanode上基本是均匀分配的话,文件大小设置成多大效率更高吗?
回复

使用道具 举报

goldtimes 发表于 2013-10-25 10:45:15
d顶 eyjan的说法,呵呵
建议楼主把你测试的环境大概说下:多少机器,80G文件分块后分布情况等这些是比较重要的。
文件的切分大小跟你的机器性能 还有机器的数量是有关系的:
好比你80G用一台机器算 肯定来说比10台机器一起算要慢的吧。
回复

使用道具 举报

top_gloria 发表于 2013-10-25 10:45:15
我需要把原始数据文件存储在HDFS中,然后通过MapReduce分析,好像听说存入HDFS的文件大小是64M的话处理效率 ...
needle2 发表于 2010-9-28 10:16



4.8G作为一个整体吗?你是在Hadoop上做的测试吗?
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条