草庐IT

collisions_block

全部标签

hadoop - 哪些场景我们不给文件分配 block ?

HDFSQuotaGuide空间配额如下。哪些场景不给文件分配block?Aquotaofzerostillpermitsfilestobecreated,butnoblockscanbeaddedtothefiles. 最佳答案 HDFS中的文件类似于更典型文件系统中的INode。它可能包含也可能不包含数据,并且只有在将数据添加到文件时才会创建block。例如,在下面的代码片段中,没有创建block,因为没有数据添加到文件中:FileSystemfs=...Pathp=...fs.create(p).close();而在下面,创建

hadoop - 如果压缩类型是 RECORD 而不是 block ,我们是否需要创建一个索引文件(使用 lzop)?

据我所知,需要一个索引文件来使输出可拆分。如果mapred.output.compression.type=SequenceFile.CompressionType.RECORD,还需要建立Index文件吗? 最佳答案 简答:RECORD和BLOCKcompression.type属性适用于序列文件,不适用于简单的文本文件(可以使用lzo或gzip或bz2独立压缩...)更多信息:LZO是一种压缩编解码器,它提供比gzip更好的压缩和解压缩速度,并且还具有拆分功能。LZO允许这样做,因为它由许多较小的(~256K)压缩数据block

hadoop - 确定代码中 Hadoop 错误的原因,因为标准日志不确定 : file splits, 容器内存或 block 大小

一段时间以来,我一直在浏览log4j日志,试图确定我的Hadoop作业崩溃的原因。本质上,该作业试图做的是在底层机器上发出命令,并收集该命令的输出-目前所有这些步骤都发生在map作业中(稍后我会尝试减少这些单独输出的总和)。我遇到的行为是-对于生成到BufferedReader的一定数量的输出,为了对话-其中28,一切正常工作几乎立即完成,然而当我将该数字增加到29时,map工作在完成67%时挂起-尝试三次-总是在67%处停止并最终因缺乏进展而自行终止。从下发作业的NameNode我们可以看到如下输出:17/10/0915:19:29WARNmapreduce.JobResourceU

hadoop - 作业运行期间可以更改 HDFS block 大小吗?自定义拆分和变体大小

我正在使用hadoop1.0.3。是否可以根据某些约束在运行时更改(增加/减少)输入拆分/block。是否有一个类可以重写以实现这种机制,如FileSplit/InputTextFormat?我们能否根据一项作业中的逻辑约束在HDFS中使用不同大小的block? 最佳答案 您不仅限于TextInputFormat...这完全可以根据您正在阅读的数据源进行配置。大多数示例都是以行分隔的明文,但这显然不适用于XML,例如。不,block边界在运行时不能改变,因为你的数据应该已经在磁盘上,并准备好读取。但是InputSplit依赖于给定作

java - 包含从 block 读取的映射器的 Hadoop java 文件

正如我们在Hadoop的MapReduce中所知,映射器从存储在HDFS节点中的block中读取数据。但是映射器实际上是如何从block中读取的呢?block是否连续向映射器发送字节,直到映射器达到其拆分大小?或者它还有别的作用吗?如果是这样,这发生在哪个java文件上?另外,我使用的是Hadoop2.7.1,以防万一。 最佳答案 HadoopMapReduce作业输入格式包含两个主要组件:InputSplit:将输入数据源(例如,输入文件)分成片段,这些片段构成了各个maptask的输入。这些片段被称为“split”。例如,大多数

hadoop - 更改 dfs.block 大小的值是否会影响现有数据

我的Hadoop版本是2.5.2。我正在更改主节点上hdfs-site.xml文件中的dfs.blocksize。我有以下问题:1)这个变化会影响HDFS中已有的数据吗2)我需要将此更改传播到Hadoop集群中的所有节点还是仅在NameNode上就足够了 最佳答案 1)WillthischangeaffecttheexistingdatainHDFS不,不会。它将保留旧文件的旧block大小。为了让它接受新的block更改,您需要重写数据。您可以对数据执行hadoopfs-cp或distcp。新副本将具有新的block大小,您可以删

java - hadoop中的 block 池

我正在阅读Hadoop教程,我对hadoop中的block池产生了疑问。block池-基本上每个block池都是相互独立管理的,每个block池都是属于一个命名空间的一组block。block池是虚拟概念,还是类似于block上的元数据,维护在内存中? 最佳答案 它是关于每个数据block的元数据。hadoop中的文件被分成block,然后这些block存储在不同的数据节点上。但是要再次访问这些数据,我们需要知道这些block存储在哪里。名称节点在block池的帮助下完成这件事。因此,block池是关于hadoop集群上每个文件的每

Hadoop block 管理

我是Hadoop的初学者(我已经学习了几个教程)。我目前正在研究Hadoop中的底层复制模型。我想知道模型的外观以及在哪里可以找到代码。中期结果:在研究了Hadoop的包之后,我找到了包“org.apache.hadoop.hdfs.server.blockmanagement”。在这里我找到了几个像BlockManager.java这样的类。但我已经走到了死胡同。你能给我一个网站/书籍的引用吗,我可以在其中找到Hadoop中的底层复制模型。有没有?如果没有,您有什么建议? 最佳答案 HDFS架构指南中有一个高级概述:http://

hadoop - 2 即使输入小于 block 大小,Map 任务也会启动,什么决定了 Map 任务的数量?

我在EC2微型实例上运行单机Hadoop设置。我写了一个简单的wordcount程序,没有明确指定应该运行的Map或Reduce任务的数量,输入文件小于1MB。本例中启动的MapTask数量为2,为什么?如果我使用conf.setNumMapTasks(1),那么只会启动1个map。即使输入文件 最佳答案 每个作业的默认maptask数为2。即“mapred.map.tasks”属性的默认值为2。在此处验证文档:http://hadoop.apache.org/docs/r1.0.4/mapred-default.html

java - hadoop 是否为非本地映射器缓存 hdfs-block?

假设我在DN1上运行映射器任务。我感兴趣的hdfs-block在DN2上。据我了解,hadoop不会缓存DN1上的block。这意味着如果我正在读取1MB的记录,而block是512MB,那么我将通过网络512次。这是正确的吗?也许我的问题措辞不正确。我知道数据局部性,我的问题是关于数据局部性不可能的时代。如果DN2上的一个block中有512MB的数据,但映射器在DN1上运行,并且记录读取器提供的每条记录都是1MB,这是否意味着我们要通过网络512次?或者hadoop是否缓存该block——这意味着它是否将512MB的block从DN2复制到DN1,然后开始为记录读取器提供服务。我认