HDFS:思想

写的不到位的地方,欢迎评论指出不足之处

单机处理

假设

有一个 1T的文件

I/O 磁盘处理速度是 500MB/s 

(机器硬盘:100+MB/s、固态硬盘:500MB/s、高速接口:1G - 3G/s )

分析

1T 约 1000GB、1GB = 1000MB、1000GB = 500MB * 2000、即 2000秒

2000秒 / 60秒 约 30分钟

即:循环一次需要30分钟,若一直找不到匹配数据,就要一直循环下去(30分钟 * N次)

规避I/O提高效率

一种

(重复字符串)

文件每次读取一行 

readLine().hashCode % 数量 (hashCode的值是唯一的,数量决定需要分割成多少块)

切割数量越多,内存压力越小,结果的数值一定小于数量

只有重复的数据,结果才会是一样的,才会分散到相同的块里

之后再对小文件进行处理

即:readLine进行一遍

       对所有小文件进行一遍

       共计时长:60分钟

注:适用不是数值,不用排序时,可做散列特征

二种

(数值全排序)

hashCode 不适用:读一行数值为3,hashCode 后会影响原数据特征

readLine() 进行判断数值区间,然后根据区间分散到指定块中 

再对所有块分别进行内部排序,在新的文件中追加数据    

即:readLine进行一遍

       对所有小文件进行一遍

       共计时长:60分钟

注:外部有序(按区域排序),内部无序(排序乱序)

三种

(数值全排序)

利用数据结构 

如:每次读取 50MB数据 ,进行排序后放在一个块中

外部无序(第1块里有:1、2、100、500,第二块:3、4、5、6),内部有序(排序后才形成的)


多机处理

简易说明:

  • 1T文件切割2000份,每份500MB,交于2000台机器处理。
  • HashCode % 数量:相当于要切割多少块,只有内容一样其结果才会一致,才会放入相同的块中
  • 假设数据均匀
  • 1号机:负责将1号块的内容,从所有机器上拉取回来,然后再进行数据处理
  • 2号机:负责处理2号块......
  • 以此类推
  • 最后可得出结果或是全排序

注:

  • 多机处理在数据分割和数据拉取合并时,时间相对会长,而数据处理时,由于已经分成很多块,容量变小,处理速度就会很快。速度快慢与硬件IO、网络等因素有关
  • 临时处理数据,之后不再使用,适用单机处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家道消乏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值