如何生成海量数据?

时间:2011-12-29 12:59:03

标签: java hadoop nutch bigdata

我正在用nutch和hadoop进行一些测试,我需要大量的数据。 我想从20GB开始,到100GB,500GB,最终达到1-2TB。

问题是我没有这么多的数据,所以我正在考虑如何制作它。

数据本身可以是任何类型。 一个想法是获取一组初始数据并复制它。但它不够好,因为需要彼此不同的文件(忽略相同的文件)。

另一个想法是编写一个程序来创建带有虚拟数据的文件。

还有其他想法吗?

5 个答案:

答案 0 :(得分:7)

对于统计StackExchange站点,这可能是一个更好的问题(例如,参见my question on best practices for generating synthetic data)。

但是,如果您对作为操作和处理数据的基础结构的数据属性不太感兴趣,那么您可以忽略统计信息站点。特别是,如果你不专注于数据的统计方面,只想要“大数据”,那么我们可以专注于如何生成大量数据。

我可以提供几个答案:

  1. 如果您只对随机数字数据感兴趣,请从您最喜欢的Mersenne Twister实现中生成一个大流。还有/ dev / random(见this Wikipedia entry for more info)。我更喜欢一个已知的随机数生成器,因为结果可以被其他人恶心复制。

  2. 对于结构化数据,您可以查看将随机数映射到索引并创建一个将索引映射到字符串,数字等的表,例如在生成名称,地址数据库时可能会遇到的表等等。如果你有足够大的表或足够丰富的映射目标,你可以降低碰撞的风险(例如同名),但也许你想要发生一些碰撞,因为这些碰撞也是如此。

  3. 请记住,使用任何生成方法,您无需在开始工作之前存储整个数据集。只要您记录州(例如RNG),您就可以从中断的地方继续。

  4. 对于文本数据,您可以查看简单的随机字符串生成器。您可以为不同长度或不同特征的字符串的概率创建自己的估计值。同样可以用于句子,段落,文档等。 - 只需确定您要模拟的属性,创建“空白”对象,并用文本填充。

答案 1 :(得分:1)

如果您只需要避免完全重复,您可以尝试将两个想法结合起来 - 创建相对较小的数据集的损坏副本。 “腐败”操作可能包括:替换,插入,删除和字符交换。

答案 2 :(得分:0)

我会编写一个简单的程序来完成它。该程序不需要太清楚,因为写入磁盘的速度可能是你的瓶颈。

答案 3 :(得分:0)

差不多长时间评论:我最近扩展了一个磁盘分区,我知道移动或创建大量文件需要多长时间。要求操作系统在磁盘上提供一系列可用空间,然后在FAT中为该范围创建一个新条目,而不写入一些内容(重用以前存在的信息)会快得多。这将满足您的目的(因为您不关心文件内容),并且与删除文件一样快。

问题是在Java中可能难以实现。我找到了一个名为fat32-lib的开源库,但由于它没有使用本机代码,所以我觉得它在这里没用。对于给定的文件系统,并使用较低级别的语言(如C),如果您有时间和动力,我认为这是可以实现的。

答案 4 :(得分:0)

看一下TPC.org,它们有不同的数据库基准,包括数据生成器和预定义查询。

生成器具有缩放因子,允许定义目标数据大小。

还有myriad research projectpaper)专注于分布式“大数据”数据生成。 Myriad有一个陡峭的学习曲线,所以你可能不得不向软件的作者寻求帮助。