Dee*_*pak 34 hadoop mapreduce hdfs
这是一个涉及Hadoop/HDFS的概念性问题.假设您有一个包含10亿行的文件.并且为了简单起见,我们考虑每条线的形式<k,v>
,其中k是从开头开始的线的偏移量,值是线的内容.
现在,当我们说要运行N个映射任务时,框架是否将输入文件拆分为N个拆分并在该拆分上运行每个映射任务?或者我们是否必须编写一个分区函数来执行N分割并在生成的分割上运行每个映射任务?
我想知道的是,拆分是在内部完成还是我们必须手动拆分数据?
更具体地说,每次调用map()函数时,它的Key key and Value val
参数是什么?
谢谢,迪帕克
Pet*_*ann 24
该InputFormat
负责提供劈叉.
通常,如果您有n个节点,HDFS将在所有这n个节点上分发文件.如果你开始一个工作,默认情况下会有n个映射器.感谢Hadoop,计算机上的映射器将处理存储在此节点上的部分数据.我认为这是所谓的Rack awareness
.
所以简而言之:上传HDFS中的数据并启动MR作业.Hadoop将关注优化执行.
小智 14
文件被拆分为HDFS块并复制块.Hadoop根据数据位置原则为拆分分配节点.Hadoop将尝试在块所在的节点上执行映射器.由于复制,有多个这样的节点托管相同的块.
如果节点不可用,Hadoop将尝试选择最接近托管数据块的节点的节点.例如,它可以在同一个机架中选择另一个节点.由于各种原因,节点可能不可用; 所有映射槽可能正在使用中,或者节点可能只是关闭.
幸运的是,一切都将由框架来处理.
MapReduce数据处理由输入分割的概念驱动.为特定应用程序计算的输入拆分数决定了映射器任务的数量.
映射数通常由输入文件中的DFS块数驱动.
在可能的情况下,将这些映射器任务中的每一个分配给存储输入分割的从节点.资源管理器(或JobTracker,如果您在Hadoop 1中)尽力确保在本地处理输入拆分.
如果由于跨越数据节点边界的输入分裂而无法实现数据局部性,则一些数据将从一个数据节点传输到另一个数据节点.
假定有128 MB块和最后一个记录不适合在块一个和在传播B座,然后在数据B座将被复制到节点具有阻止一
看看这个图.
看看相关的问题
我认为Deepak提出的问题更多是关于如何确定map函数每次调用的输入,而不是每个map 节点上的数据。我是根据问题的第二部分说这句话的: 更具体地说,每次调用map()函数时,其Key键和Value val参数是什么?
实际上,同样的问题也将我带到这里,并且如果我是一位经验丰富的hadoop开发人员,我可能会像上面的答案一样解释它。
为了回答这个问题,
根据我们为InputFormat设置的值,将拆分给定地图节点上的文件。(这是使用setInputFormat()在Java中完成的!)
一个例子:
conf.setInputFormat(TextInputFormat.class); 在这里,通过将TextInputFormat传递给setInputFormat函数,我们告诉hadoop 将映射节点处的输入文件的每一行都视为映射函数的输入。换行或回车用于信号行结束。有关更多信息,请参见TextInputFormat!
在此示例中:键是文件中的位置,值是文本行。
希望这可以帮助。
块大小和输入分割大小之间的差异。
输入分割是数据的逻辑分割,主要在 MapReduce 程序或其他处理技术的数据处理过程中使用。输入分割大小是用户定义的值,Hadoop 开发人员可以根据数据大小(您正在处理的数据量)选择分割大小。
输入分割主要用于控制MapReduce程序中Mapper的数量。如果您没有在MapReduce程序中定义输入分割大小,那么在数据处理过程中默认的HDFS块分割将被视为输入分割。
例子:
假设您有一个 100MB 的文件,HDFS 默认块配置为 64MB,那么它将被分成 2 个部分并占用两个 HDFS 块。现在您有一个 MapReduce 程序来处理此数据,但您尚未指定输入拆分,那么基于块的数量(2 个块)将被视为 MapReduce 处理的输入拆分,并且将为该作业分配两个映射器。但是假设,您在 MapReduce 程序中指定了拆分大小(例如 100MB),那么两个块(2 块)将被视为 MapReduce 处理的单个拆分,并且将为该作业分配一个 Mapper。
现在假设,您已经在 MapReduce 程序中指定了拆分大小(例如 25MB),那么 MapReduce 程序将有 4 个输入拆分,并且将为该作业分配 4 个 Mapper。
结论:
来源:https ://hadoopjournal.wordpress.com/2015/06/30/mapreduce-input-split-versus-hdfs-blocks/
归档时间: |
|
查看次数: |
49140 次 |
最近记录: |