1T 文件操作的思考( 理解)
1. 分治思想引入案例
2. 单机处理大数据的问题
3. 集群分布式处理大数据
4. 集群分布式处理大数据优劣的辩证
1.1 分治 思想引入案例
1. 十万个元素(单词)需要存储,如何存储?
2. 如果想查找某一个元素,最简单的遍历方式的复杂度是多少?
3. 如果我们期望复杂度是 O(4)呢?
• 分而治之的思想非常重要,常见于以下技术:
1. Redis 集群
2. Hadoop
3. Hbase
4. ElasticSearch
1.2 单机 处理大数据的问题
需求:
有一个非常大的文本文件,里面有非常多的行,只有两行内容一样,它们出现在未知的位置,需要查找到它们。硬件:单台机器,而且可用的内存很少,也就 500MB。
• 假如 IO 速度是 500MB/S 1000*2
• 1T 文件读取一遍需要约 30 分钟
• 循环遍历需要 N 次 IO 时间
• 分治思想可以使时间降为 2 次 IO
如何对 1TB 文件进行排序?
• 假如 IO 速度是 500MB/S
• 1T 文件读取一遍需要约 30 分钟
方式 1:外部有序,内部无序。
逐一读入内存排序
方式 2:逐一读取 500M 排序,内部有序,
外部无序 ,然后进行归并排序
1.3 集群分布式处理大数据
需求:
• 有一个非常大的文本文件,里面有几百亿行,只有两行内容一样,它们出现在未知的位置,需要查找到它们。
• 分钟、秒级别完成
• 硬件:*台机器,而且可用的内存 500MB。
由于涉及到计算机之间文件传输,千兆带宽,100MB/s
拉取网卡 100MB/S
10000MB
之前忽略了上传时间:1TB/100MB = 10000S /3600S = 3H
1.4 集群分布式处理大数据优劣的辩证
• 2000 台真的比一台快吗?
• 如果考虑分发上传文件的时间呢?
• 如果考虑每天都有 1TB 数据的产生呢?
• 如果增量了一年,最后一天计算数据呢?
• 1 天 2*30=1H 3H1M2S
• 2 天 2H 3H1M4S
• 3 天 3H 3H1M6S
• 4 天 4H 3H1M8S