【问题标题】:Best design for data structure (big data)数据结构(大数据)的最佳设计
【发布时间】:2013-02-14 16:29:05
【问题描述】:

我有很多页面(5.000.000.000+),我需要建立一个反向链接结构。 对于每个页面,我需要提取所有出站链接。

例如原始数据。

www.mypage1.com = outbound1, outbound2, outbound3
www.mypage2.com = ouput4, outbound2, outbound1

预期结果。

outbound1=www.mypage1.com,www.mypage2.com
outbound2=www.mypage1.com,www.mypage2.com
outbound3=www.mypage1.com
outbound4=www.mypage2.com

实际上,我正在使用 hadoop 进行 map-reduce,它运行良好。但经过一些分析,我意识到有些 url 至少有 500mb 的入站链接信息。

5.000.0000.000 页乘以 500 mb 是很多数据...

每个 url 的长度为 100 字节,所以我的第一个提示是制作某种散列来减小每个 url 的大小。但这会给流程增加一些开销,因为我们需要一个服务来检索给定 url 的哈希值,反之亦然。

那么,您认为最好的方法是什么?有什么想法吗?

【问题讨论】:

  • 你不需要大数据结构,你可能需要oracle db。
  • 2.5 艾字节?真的吗?即使您可以将每个 URL 压缩成一个字节(通过 Magic™),您也需要 25 PB。如果您确实说的是实话,我建议您与您团队中的一位专家交谈(如果不是,请雇用一些专家。与所有存储和计算能力相比,他们几乎没有成本。)跨度>
  • 我为什么要对这个问题撒谎......?一个简单的“我不知道,我从来没有遇到过那种问题”就足够了......
  • 你是如何存储链接的?它们只是其他网址吗?
  • 我不相信每个 URL 都有 500MB 的数据指向它,但只有少数异常值。假设一个 URL 的长度约为 100 个字节,这意味着有 5.000.000 个页面链接到它。如果这将是每个 url 的平均值,那么您甚至无法存储原始数据。顺便说一句:您大约有多少个不同的传出网址?

标签: java hadoop bigdata


【解决方案1】:

尽管单人团队的任务不切实际,但我可以建议:

  1. 根据“power low” 500mb 将只有很少的链接,其中大部分将有一小部分链接。所以你应该重新估计你的链接分布。
  2. 要压缩链接,您可以对还原的链接(即 com.google.mail)使用 trie。

【讨论】:

  • 我已经完成了链接分发,我知道该怎么做了,谢谢!顺便说一句,还原的链接很好,我会试试看。
猜你喜欢
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多