草庐IT

hadoop - HDFS 中的默认 block 大小不是最小文件大小吗?

HDFS的默认block大小为60MB。那么,这是否意味着HDFS中的文件的最小大小为60MB?即如果我们创建/复制一个大小小于60MB(比如5字节)的文件,那么我的假设是HDFS中的文件的实际大小是1个block,即60MB。但是,当我将一个5字节的文件复制到HDFS时,当我看到文件的大小时(通过ls命令)我仍然看到该文件的大小为5字节。不应该是60MB吗?或者ls命令显示文件中数据的大小而不是HDFS上文件的block大小? 最佳答案 hdfsblock的默认大小并不意味着它将使用我们指定的所有空间,即60MB。如果数据大于60

hadoop - 重启后 HDFS block 损坏

我在ubuntu16.10上安装了Hadoop一切正常:我能够在HDFS中上传输入文件并执行map-reduce操作。但是当我重新启动我的PC时,所有HDFSblock都已损坏并且NameNode以安全模式启动所以我必须1)退出安全模式2)删除所有损坏的blockhdfsfsck-delete3)重新上传输入文件然后它可以正常工作,直到下次重新启动。有人可以帮我解决这个问题吗?谢谢 最佳答案 我解决了我的问题。我使用此链接检查我的配置文件http://www.bogotobogo.com/Hadoop/BigData_hadoop_

hadoop - HDFS 不复制 block

我最近安装了Hadoop(Cloudera)。我得到一个错误,我在复制block下(在ClouderaManager中,它是安装的gui)。所以当我跑的时候hdfsdfsadmin-report我明白了ConfiguredCapacity:555730632704(517.56GB)PresentCapacity:524592504832(488.56GB)DFSRemaining:524592193536(488.56GB)DFSUsed:311296(304KB)DFSUsed%:0.00%Underreplicatedblocks:5Blockswithcorruptreplic

hadoop - 我可以访问映射器中的完整 block 吗?

通常记录读取器将一行一行地传递给映射器或n行。可以在映射器中访问完整block吗?这意味着记录阅读器将完整block提供给映射器而不是逐行?这种方法有意义吗?谢谢 最佳答案 需要注意的是,splitsize默认不等于blocksize。要做你想做的事,你需要实现自定义InputFormat更确切地说是方法getSplits(JobContextcontext)。并使InputSplit大小等于block大小。 关于hadoop-我可以访问映射器中的完整block吗?,我们在StackOv

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大小,您可以删