虽然我对hadoop的体系结构有一点了解,但在理解数据的确切位置方面还是有些空白。我的问题是“假设我有一些随机书籍的大量数据。。多个节点存储的图书数据以前是否使用hdfs,我们在每个节点上执行mapreduce并在系统中得到结果?'或'我们是否将数据存储在大型数据库中的某个位置,并且每当我们要执行mapreduce操作时,我们都会将数据块存储在多个节点中以执行操作?
j8yoct9x1#
两者都有可能,这取决于你的用例和需求。但是,hadoopmapreduce通常针对hdfs中存储的数据运行。该系统是围绕数据局部性设计的,要求数据采用hdfs格式。也就是说,为了提高性能,map任务在存储数据的同一块硬件上运行。也就是说,如果出于某种原因,您的数据必须存储在hdfs之外,然后使用mapreduce进行处理,那么这是可以做到的,但要做的工作要多一些,而且效率不如本地处理hdfs中的数据。所以让我们来看两个用例。从日志文件开始。日志文件,因为它们不是特别可访问的。它们只需要被卡在某个地方,然后保存起来,以备日后分析。hdfs非常适合这种情况。如果你真的需要一个日志,你可以得到它,但一般人会寻找输出的分析。所以将日志存储在hdfs中并正常处理它们。然而,hdfs和hadoop map reduce理想格式的数据(单个大平面文件中的许多记录)并不是我认为高度可访问的。hadoopmapreduce希望输入文件的大小为多兆字节,每个文件有许多记录。你越是偏离这个案子,你的表现就越会下降。有时您的数据需要随时在线,而hdfs对此并不理想。例如,我们将以你的书为例。如果这些书籍用于需要以在线方式访问内容(即编辑和注解)的应用程序中,则可以选择将它们存储在数据库中。然后,当您需要运行批处理分析时,可以使用自定义inputformat从数据库中检索记录并在mapreduce中处理它们。我目前正在用一个网络爬虫来完成这个任务,它将网页单独存储在amazons3中。网页太小,无法作为mapreduce的一个有效输入,因此我有一个定制的inputformat,为每个mapper提供几个文件。这个mapreduce作业的输出最终被写回s3,因为我使用的是amazonemr,hadoop集群就消失了。
1条答案
按热度按时间j8yoct9x1#
两者都有可能,这取决于你的用例和需求。但是,hadoopmapreduce通常针对hdfs中存储的数据运行。该系统是围绕数据局部性设计的,要求数据采用hdfs格式。也就是说,为了提高性能,map任务在存储数据的同一块硬件上运行。
也就是说,如果出于某种原因,您的数据必须存储在hdfs之外,然后使用mapreduce进行处理,那么这是可以做到的,但要做的工作要多一些,而且效率不如本地处理hdfs中的数据。
所以让我们来看两个用例。从日志文件开始。日志文件,因为它们不是特别可访问的。它们只需要被卡在某个地方,然后保存起来,以备日后分析。hdfs非常适合这种情况。如果你真的需要一个日志,你可以得到它,但一般人会寻找输出的分析。所以将日志存储在hdfs中并正常处理它们。
然而,hdfs和hadoop map reduce理想格式的数据(单个大平面文件中的许多记录)并不是我认为高度可访问的。hadoopmapreduce希望输入文件的大小为多兆字节,每个文件有许多记录。你越是偏离这个案子,你的表现就越会下降。有时您的数据需要随时在线,而hdfs对此并不理想。例如,我们将以你的书为例。如果这些书籍用于需要以在线方式访问内容(即编辑和注解)的应用程序中,则可以选择将它们存储在数据库中。然后,当您需要运行批处理分析时,可以使用自定义inputformat从数据库中检索记录并在mapreduce中处理它们。
我目前正在用一个网络爬虫来完成这个任务,它将网页单独存储在amazons3中。网页太小,无法作为mapreduce的一个有效输入,因此我有一个定制的inputformat,为每个mapper提供几个文件。这个mapreduce作业的输出最终被写回s3,因为我使用的是amazonemr,hadoop集群就消失了。