0

这是使用 map 和 reduce 实现缩放的唯一方法吗?

我讨厌这一点的是,坚持不懈的无知都被抬高了。应该是 HDFS 通过一个接口暴露自己,你不应该关心它是用什么语言编写的,或者为什么。就像您如何编写 ODBC 一样,它将插入 Oracle、Sql Server 以及不在任何操作系统上运行的东西。

我知道 Hive,但我不认为它非常适合更繁重的计算,例如矩阵操作、高斯分析等。

另一个问题是编写复杂的指令集和这样的事情所带来的依赖。这意味着您必须弄清楚如何移植代码并将其与任何依赖项一起安装到服务器本身上。这是一个很大的基础设施成本!而且在(平台即服务)Paas 云中也很难做到。

例如使用 Hadoop 流的示例。你必须确保你的二进制文件是针对目标服务器内核编译的。例如。Linux 与 Windows 等。您还必须确保所有项目都引用相同版本的依赖项。这又是牛市。如果您有多个团队,则需要大量协调和开销。我们迁移到 SOA 是为了摆脱其中的一些问题。

我知道数据比代码重,将代码放在数据本身旁边效率更高,但这是实现规模的唯一方法吗?在处理 Hadoop 应该处理的数据量时,您是否绝对必须牺牲关注点分离。

例如,是的,您可以将 CLR 嵌入到 Sql server 中,但实际上这仅保留给真正严重的瓶颈,无法以任何其他方式解决。aka - 如果你想这样称呼它,它是一种 hack 或反模式。这样做太多,您的产品会与 Microsoft Sql Server 高度耦合。您不能只是将其换成 Oracle 或其他业务需要更改的东西。不好。

同样在所有计算历史中,我们总是将数据带到代码中,而不是相反。例如。您将数据从数据库加载到 Orm,加载到服务,加载到内存,加载到缓存,然后加载到指令集。这是有原因的,即 SOC

我的问题是,map & reduce + no sql 是否是您只需将代码放在数据旁边的情况之一,而不是根据需要将数据加载到指令集(例如,某处的负载平衡服务)云端)。

4

1 回答 1

0

这取决于你有多少数据。

在某些时候,通过网络移动数据变得不切实际。如果您需要对几 TB 的数据进行 map reduce,那么即使使用千兆网络,数据传输时间也很重要。

如果您的数据在云中,那么您还需要考虑从云服务传输数据的成本。

于 2012-04-15T15:56:04.383 回答