我想运行一个hadoop单元测试,使用本地文件系统模式...我希望看到几个part-m-*文件被写入磁盘(而不是只有1个)。但是,由于它只是一个测试,我不想处理64M的数据(我相信默认大小是每个block~64megs)。在分布式模式下我们可以使用dfs.block.size我想知道是否有一种方法可以让我的本地文件系统写出小的part-m文件,也就是说,这样我的单元测试将用几个(尽管非常小)文件模拟大规模数据的内容。 最佳答案 假设您的输入格式可以处理可拆分文件(参见org.apache.hadoop.mapreduce.lib.i
我是Hadoop新手。部署后,我运行了基准测试,$hadoopjarhadoop-0.20.0-test.jarTestDFSIO-write-nrFiles1000-fileSize10。完成工作后,我查看了集群摘要,假设有1000个文件和目录,1000个block=总共2000个。然后我使用shellcmd删除相应的文件。那么ClusterSummary是:0个文件和目录1000个block=总共1000个。我认为删除后ClusterSummary中应该没有文件和block。但实际情况是:在我问这个问题之前是1000个区block。但是现在有0个block。这怎么会发生?
例如,我使用复制因子2将文件写入HDFS。我正在写入的节点现在拥有文件的所有block。文件所有block的其他副本分散在集群中所有剩余的节点周围。这是默认的HDFS策略。如果我将文件的复制因子降低到1,到底会发生什么?HDFS如何决定从哪些节点删除哪些block?我希望它尝试从文件block数最多的节点中删除block?为什么我要问-如果是这样,那将是有道理的-它会减轻文件的处理。因为如果所有block只有一个副本,并且所有block都位于同一节点上,那么由于数据传输到集群中的其他节点,使用map-reduce处理文件会更加困难。 最佳答案
由于一系列不幸的事件,一个程序从/dataN/dfs/dn/current/BP-XXXXXXX/current/finalized/subdirN/subdirN/blk_NNNNNNNNNN进入/tmp/blk_NNNNNNNNNN我没有从程序中获取任何日志记录来判断原始subdirN/subdirN/目录的位置。有什么方法可以根据fsimage文件、block文件本身或其他一些元数据找出这个block应该在哪里?我通过查找相应的*.meta文件能够恢复一些block,但仍然存在一些漏洞。复制使我免于最糟糕的情况,但我仍然缺少5个我想尝试恢复的“关键任务”文件。从hdfsfsck/
假设有5个文件,每个文件大小为150MB。现在,当我将这些文件放入hdfs(block大小为64mb)时,每个文件和总block数将是多少block。还有所有文件的拆分次数。以及有多少映射器 最佳答案 每个文件将有3个block(64mb、64mb、32mb)。所以总block数5*3=15因此拆分数将为15。因此映射器数(如果使用FileInputFormat)=15。解释:HDFSdonottakeanentireblocktostoreafilewithsize·Clientwillwritedateintoit·Afterw
我的文件大小是65MB和默认的hdfsblock大小(64MB),那么我的文件将分配多少个64MBblock?它是1-64MBblock、1-1MBblock还是2-64MBblock?如果它是2-64MBblock,它会浪费剩下的63MB还是会分配给其他文件? 最佳答案 block大小64MB表示block的上限大小。这并不意味着小于64MB的文件block将消耗64MB。它不会消耗64MB来存储1MB的block。如果文件是160兆字节,希望这对您有所帮助。 关于hadoop-HDF
在HDFS中,block分布在事件节点/从属之间。block的内容是简单的文本,那么有什么方法可以查看读取或访问每个数据节点中存在的block吗? 最佳答案 作为整个文件还是乱序读取单个block(比如block号3)?您可以通过包括JavaAPI在内的各种机制读取文件,但您不能从文件中间开始读取(例如,在block3的开头)。 关于hadoop-直接在数据节点中读取block的内容,我们在StackOverflow上找到一个类似的问题: https://st
假设我有一个300MB的文件。block大小为128MB。所以输入文件被分成以下几个block并放在HDFS中。Block1:128MBBlock2:128MBBlock3:64MB.现在每个block的数据中是否包含字节偏移量信息。也就是说,block是否具有以下偏移量信息?Block1:0-128MBofFileBlock2129-256MBofFileBlock3:257MB-64MBoffile如果是这样,我如何在Hadoop中获取Block2的字节偏移信息(即它从129MB开始)。这仅用于理解目的。是否有任何hadoop命令行工具可以获取此类有关block的元数据?编辑如果字
从HDFS读回文件时,我经常看到这些错误:{"id":"646626691524096003","user_friends_count":{"int":83},"user_location":{"string":"他の星から副都心線経由"},"user_description":{"string":"Exceptioninthread"main"org.apache.avro.AvroRuntimeException:java.io.IOException:Blocksizeinvalidortoolargeforthisimplementation:-40atorg.apache.a
我的目标是让HDFS的replicablock的位置节点自己定。查看HDFS的代码后,我在这里找到了调用轨迹(hadoop2.2版本)BlockManager.getDatanodeDescriptors(List)line:1400BlockManager.chooseTarget(String,int,DatanodeDescriptor,HashMap,long,List)line:1378FSNamesystem.getAdditionalBlock(String,long,String,ExtendedBlock,HashMap,List)line:2477NameNodeR