我是hadoop新手,如果我的问题很琐碎,请原谅。本地文件系统与hdfs不同。在创建mapreduce程序时,我们使用fileinputformat.addinputpath()函数创建文件输入路径。它是否将数据拆分为多个数据节点,并同时执行输入拆分?如果是,此数据将在datanodes中保留多长时间?我们能把mapreduce程序写进hdfs中已有的数据吗?
gopyfrb31#
hdfs不是您的本地文件系统—它是一个分布式文件系统。这意味着您的数据集可以大于集群中单个计算机的最大存储容量。hdfs默认使用64MB的块大小。每个块被复制到集群中至少3个其他节点,以考虑冗余(例如节点故障)。因此,使用hdfs,您可以将整个集群看作一个大型文件系统。当您编写mapreduce程序并设置输入路径时,它将尝试在hdfs上定位该路径。然后,输入被自动划分为所谓的输入分割-固定大小的分区,其中包含来自输入文件的多条记录。一 Mapper 为每个拆分创建。接下来是 map 函数(您定义的)应用于每个剥离中的每个记录,生成的输出存储在节点的本地文件系统中,其中 map 函数从运行。这个 Reducer 然后将此输出文件复制到其节点并应用 reduce 功能。如果执行时出现运行时错误 map 如果任务失败,hadoop将在另一个节点上运行相同的mapper任务,并让reducer复制该输出。reducer使用从所有mapper任务生成的输出,因此到目前为止,reducer不关心被馈送到mapper的输入分割。
Mapper
map
Reducer
reduce
smtd7mpg2#
1: HDFS 实际上是分布式存储的解决方案,在本地化的存储空间中会有更多的存储上限和备份问题。 HDFS 是服务器群集存储资源作为一个整体,通过 nameNode 存储目录和块信息管理, dataNode 负责区块存储容器。 HDFS 可以看作是一种更高层次的抽象本地化存储,它可以通过解决分布式存储的核心问题来理解。2:如果我们使用 hadoop fileinputformat ,首先创建一个 open () 方法 filesystem 连接到 namenode 要获取位置消息,请将这些消息返回给客户端。然后创建一个 fsdatainputstream 从不同的节点逐个读取。。最后关闭 fsdatainputstream 如果我们将数据放入hdfs客户端,数据将被分割成多个数据并存储在不同的机器上(大于128m[64m])数据持久性存储在硬盘上因此,如果您的文件比普通服务器的压力大得多&需要分布式计算,那么您可以使用hdfs
HDFS
nameNode
dataNode
hadoop fileinputformat
open ()
filesystem
namenode
fsdatainputstream
uajslkp63#
根据问题将答案分组:hdfs与本地文件系统对, HDFS 和本地文件系统不同。 HDFS 是一个 Java -在本机文件系统(如 ext3 ). 它被设计成分布式的、可扩展的和容错的。数据节点保存数据多长时间?当数据被摄取到hdfs中时,它被分割成块,复制3次(默认情况下),并分布在整个集群数据节点中。这个过程都是自动完成的。这些数据将保留在数据节点中,直到被删除并最终从垃圾箱中清除。输入拆分计算addinputpath()指定hdfs文件或目录,从中读取文件并发送到Map器进行处理。在到达这一点之前,数据应该已经在hdfs中可用,因为它现在正试图被处理。因此,数据文件本身被分割成块,并在整个数据节点中复制。文件、它们的块以及它们驻留在哪个节点上的Map—这由称为 NameNode .现在,根据这个api指定的输入路径, Hadoop 将计算处理文件所需的InputSplit数。在作业开始时由 MapReduce 框架。然后每个inputsplit都由Map器处理。这一切都会在作业运行时自动发生。现有数据的mapreduce是的,mapreduce程序可以在hdfs中的现有数据上运行。
Java
ext3
NameNode
Hadoop
MapReduce
3条答案
按热度按时间gopyfrb31#
hdfs不是您的本地文件系统—它是一个分布式文件系统。这意味着您的数据集可以大于集群中单个计算机的最大存储容量。hdfs默认使用64MB的块大小。每个块被复制到集群中至少3个其他节点,以考虑冗余(例如节点故障)。因此,使用hdfs,您可以将整个集群看作一个大型文件系统。
当您编写mapreduce程序并设置输入路径时,它将尝试在hdfs上定位该路径。然后,输入被自动划分为所谓的输入分割-固定大小的分区,其中包含来自输入文件的多条记录。一
Mapper
为每个拆分创建。接下来是map
函数(您定义的)应用于每个剥离中的每个记录,生成的输出存储在节点的本地文件系统中,其中map
函数从运行。这个Reducer
然后将此输出文件复制到其节点并应用reduce
功能。如果执行时出现运行时错误map
如果任务失败,hadoop将在另一个节点上运行相同的mapper任务,并让reducer复制该输出。reducer使用从所有mapper任务生成的输出,因此到目前为止,reducer不关心被馈送到mapper的输入分割。
smtd7mpg2#
1:
HDFS
实际上是分布式存储的解决方案,在本地化的存储空间中会有更多的存储上限和备份问题。HDFS
是服务器群集存储资源作为一个整体,通过nameNode
存储目录和块信息管理,dataNode
负责区块存储容器。HDFS
可以看作是一种更高层次的抽象本地化存储,它可以通过解决分布式存储的核心问题来理解。2:如果我们使用
hadoop fileinputformat
,首先创建一个open ()
方法filesystem
连接到namenode
要获取位置消息,请将这些消息返回给客户端。然后创建一个fsdatainputstream
从不同的节点逐个读取。。最后关闭fsdatainputstream
如果我们将数据放入hdfs客户端,数据将被分割成多个数据并存储在不同的机器上(大于128m[64m])数据持久性存储在硬盘上
因此,如果您的文件比普通服务器的压力大得多&需要分布式计算,那么您可以使用hdfs
uajslkp63#
根据问题将答案分组:
hdfs与本地文件系统
对,
HDFS
和本地文件系统不同。HDFS
是一个Java
-在本机文件系统(如ext3
). 它被设计成分布式的、可扩展的和容错的。数据节点保存数据多长时间?
当数据被摄取到hdfs中时,它被分割成块,复制3次(默认情况下),并分布在整个集群数据节点中。这个过程都是自动完成的。这些数据将保留在数据节点中,直到被删除并最终从垃圾箱中清除。
输入拆分计算
addinputpath()指定hdfs文件或目录,从中读取文件并发送到Map器进行处理。在到达这一点之前,数据应该已经在hdfs中可用,因为它现在正试图被处理。因此,数据文件本身被分割成块,并在整个数据节点中复制。文件、它们的块以及它们驻留在哪个节点上的Map—这由称为
NameNode
.现在,根据这个api指定的输入路径,
Hadoop
将计算处理文件所需的InputSplit数。在作业开始时由MapReduce
框架。然后每个inputsplit都由Map器处理。这一切都会在作业运行时自动发生。现有数据的mapreduce
是的,mapreduce程序可以在hdfs中的现有数据上运行。