y*********0 发帖数: 406 | 1 100G的文本文件,4G内存,4个CPU。写一个程序:列出所有文本文件中的word
frequency,并output到一个最终文件中, 格式为 . 这个最终文件
的size也可能比内存小.
大家有啥建议? |
z****e 发帖数: 54598 | |
y*********0 发帖数: 406 | 3 能再具体点吗?
【在 z****e 的大作中提到】 : n cpu : 多线程
|
z****e 发帖数: 54598 | 4 很难再具体了
这只是一个topic
里面什么情况都可能出现
看你用什么语言用什么类,会有不同的问题出现
【在 y*********0 的大作中提到】 : 能再具体点吗?
|
z****e 发帖数: 54598 | 5 不过核心思想无非是分治
先把所有文件切割成4分
然后启动4个线程
对每一份文件进行word counting
最后归并所有结果
不难,只要文件不是很多
另外扫描查找效率最高的还是hashcode
大概就这样 |
j********r 发帖数: 25 | 6 Classical Map/Reduce problem.
【在 y*********0 的大作中提到】 : 100G的文本文件,4G内存,4个CPU。写一个程序:列出所有文本文件中的word : frequency,并output到一个最终文件中, 格式为 . 这个最终文件 : 的size也可能比内存小. : 大家有啥建议?
|
y*********0 发帖数: 406 | 7 这个问题是不是就用最经典map reduce word count的example就能解决?
【在 z****e 的大作中提到】 : 不过核心思想无非是分治 : 先把所有文件切割成4分 : 然后启动4个线程 : 对每一份文件进行word counting : 最后归并所有结果 : 不难,只要文件不是很多 : 另外扫描查找效率最高的还是hashcode : 大概就这样
|
z****e 发帖数: 54598 | 8 看你怎么想了
mapreduce当然是解决方法之一
你说到哪,人家就问到哪,这种开放性题,不能说有标准统一的答案
【在 y*********0 的大作中提到】 : 这个问题是不是就用最经典map reduce word count的example就能解决?
|
s*w 发帖数: 729 | 9 just practicing c++11 multi-threading and got the following code to try out
your example
problem with my code now:
1. it does not deal with last line of input file
2. it has deadlock for certain test file
Anyone familiar with c++11 multi-threading?
#include
#include
#include
#include
#include
#include
#include
#include
#include |
s*******m 发帖数: 58 | 10 这个完全不需要多线程,这是disk bound.
通过hash把大文件分割成一个个小文件,注意小文件的数目不能太多。
如果小文件还是太大,再换一个hash函数继续分割。直到能把一个文件完全
读进内存。
===========
由于uniqe word不一定那么多,可以先做sample估计一下有多少,然后决定是否要分割。 |
z****e 发帖数: 54598 | 11 这题如果不上多个node
这题就是完全的实现题,等于考察io的api
毫无意义 |
g*********e 发帖数: 14401 | 12 取决于字典的大小
如果字典足够小 每个线程安排一个local的统计hashmap 每次取900M的
文件给一个线程即可。最后把hashmap加起来。 |
z****e 发帖数: 54598 | 13 第一步审题
开篇就给了4个CPU
不实现并发的不知道在想什么
mapreduce底层就是并发实现
可能是害怕别人问到hadoop之类的东西吧
老话了,市面上流行什么,就吹什么
否则,麻烦大哟
现在熟练工的数量还少,还有机会,抓住机会
以后一旦市面上熟练工的数量饱和到一定程度
那对于工具的熟练掌握那就是必需的 |
z****e 发帖数: 54598 | 14 这个题目其实是cloud computing常见的作业 |