9.URl全排序

来源:互联网 发布:淘宝网店名称大全 编辑:程序博客网 时间:2024/06/07 18:46
每台机器上有1G个URL,平均每个100个bytes,机器内存64G,有10台这样的机器,如何对所有10台上的URL进行全排序?
答:此处的URL全排序,理解为将所有机器上的数据按照出现频度进行降序排列,分三步,1)先计算每个URL的出现次数 2)按出现次数进行排序 3)将结果保存到一个文件中
    每台机器上数据的大小为100G字节,大于每台机器的内存,这是多机+受限内存的情况。
    一般方法:
    1)hash+socker映射:将所有机器上的总共10X100G数据重新分布到10台机器上,使相同的URL能大部分分布到一台机器上;将每台机器上的100G数据,分成两份,每份50G ,能完全写入内存
    2) hash统计:统计每份数据中各个URL的出现频度之后,并采用内排序后,将结果(url 频度)存入文件,此时每个文件已去除重复记录,大小<50G,
    3) 外排序,将10台机器上的20个文件,用归并排序后写入到一个文件中。先每一台机器上的两个文件先合并为一个文件,然后在两两机器上的文件合并,依次直到在某台 机器的磁盘上存有单一结果文件
    MapReduce方法: