我正在阅读hadoop权威指南,它是这样写的MapReduce适合更新数据库的大部分,并且它使用Sort&合并以重新生成依赖于传输时间的数据库。
此外,RDBMS只适用于更新大型数据库的较小部分,它使用受搜索时间限制的B树
有人能详细说明这两种说法的真正含义吗?
我真的不确定这本书的意思,但如果你还有原始数据,你通常会做一个map reduce工作来重建整个数据库。
hadoop真正的好处是它是分布式的,所以性能并不是一个真正的问题,因为你可以添加更多的机器。
举个例子,您需要重建一个包含10亿行的复杂表。使用RDBMS,您只能垂直扩展,因此您将更多地取决于CPU的能力和算法的速度。您将使用一些SQL命令来完成此操作。你需要选择一些数据,处理它们,做一些事情,等等。所以你很可能会受到搜索时间的限制。
使用hadoop-map-reduce,您可以添加更多的机器,所以性能不是问题。假设您使用了10000个映射器,这意味着任务将被划分为10000个映射容器,由于hadoop的性质,所有这些容器通常都已经在本地存储了硬盘上的数据。每个映射器的输出在其本地硬盘驱动器上始终是键值结构化格式。映射器使用关键字对这些数据进行排序。
现在的问题是,他们需要将数据组合在一起,所以所有这些数据都将被发送到一个reducer。这种情况通过网络发生,如果你有大数据,通常是最慢的部分。reducer将接收所有数据,并对它们进行合并排序以进行进一步处理。最后你有一个文件,可以直接上传到你的数据库。
如果您有大量数据,从映射器到还原器的传输通常需要最长的时间,而网络通常是您的瓶颈。也许这就是根据转会时间而定的意思。