为什么hdfs不适合需要低延迟的应用程序?

7eumitmz  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(640)

我是hadoop和hdfs的新手,这让我很困惑,为什么hdfs不适合需要低延迟的应用程序。在大数据环境中,我们会将数据分布在不同的社区硬件上,因此访问数据应该更快。

3z6pesqy

3z6pesqy1#

hadoop完全是一个批处理系统,用于存储和分析结构化、非结构化和半结构化数据。
hadoop的map/reduce框架相对较慢,因为它被设计成支持不同的格式、结构和巨大的数据量。
我们不应该说hdfs比较慢,因为hbase没有sql数据库和基于mpp的数据源,比如impala、hawq都在hdfs上。这些数据源动作更快,因为它们不遵循mapreduce执行来进行数据检索和处理。
这种慢度的产生仅仅是因为基于map/reduce的执行的性质,它产生了大量的中间数据,节点之间交换了大量的数据,从而导致了巨大的磁盘io延迟。此外,它还必须在磁盘中保存大量数据,以便在各个阶段之间进行同步,从而支持从故障中恢复作业。此外,mapreduce中也没有办法将所有/子集的数据缓存到内存中。
apachespark是另一个批处理系统,但是它比hadoopmapreduce更快,因为它通过rdd将大部分输入数据缓存在内存中,并将中间数据保存在内存中,最终在完成或需要时将数据写入磁盘。

0sgqnhkj

0sgqnhkj2#

还有一个事实是,hdfs作为一个文件系统,针对大块数据进行了优化。例如,单个块通常是64-128MB,而不是更常见的.5-4KB。因此,即使是很小的操作,读写磁盘也会有很大的延迟。再加上它的分布式特性,与传统的文件系统相比,您将看到显著的开销(间接寻址、同步、复制等)。
这是从hdfs的Angular 来看的,我认为这是你的主要问题。hadoop作为一个数据处理框架,有它自己的一系列折衷和低效之处(在@hserus answer上有更好的解释),但它们基本上是针对同一个利基:可靠的批量处理。

hgtggwj0

hgtggwj03#

低延迟或实时应用程序通常需要特定的数据。它们需要快速地为最终用户或应用程序等待的少量数据提供服务。
这个 HDFS 是通过在分布式环境中存储大量数据而设计的,它提供了容错性和高可用性。数据的实际位置只有用户知道 Namenode . 它几乎随机地将数据存储在任何 Datanode . 它再次将数据文件分割成固定大小的小块。由于网络延迟、数据的分布和特定数据的过滤,使得数据可以快速地传输到实时应用程序中。因为它有助于运行mapreduce或数据密集型作业,因为可执行程序被传输到本地保存数据的机器(数据局部性原则)。

相关问题