在Hadoop书中据说我们可以在创建文件时指定每个文件的block大小。“增加拆分大小的最自然方法是在HDFS中设置更大的block,方法是设置dfs.block.size,或者在文件构建时基于每个文件。”知道如何在文件构建时执行此操作。我希望通过将其设置为value=file-size,文件不会被分割 最佳答案 您可以使用CLI:hadoopfs-Ddfs.block.size=file-size-putlocal_nameremote_location或者您可以在创建或复制文件时使用JavaAPI指定dfs.block.size
关于https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html有的话:theDataNodesareconfiguredwiththelocationofbothNameNodes,andsendblocklocationinformationandheartbeatstoboth.但是为什么这个信息会被发送到namenode和它的fallbackbrother呢?我认为这些信息已经包含在namenode的fs图像中。名称节点应该知道他把b
我了解HDFS中小文件和小块大小的缺点。我试图了解默认64/128MBblock大小背后的基本原理。拥有较大的block大小(例如2GB)是否有任何缺点。我读到的值大于该值会导致问题,我还没有深入研究其细节)。我看到的block大小太大的问题(请纠正我,可能部分或所有这些问题并不真正存在)-当数据节点出现故障时,复制1Gig文件可能会出现问题-这需要集群传输整个文件。当我们考虑单个文件时,这似乎是一个问题-但如果我们有更小的block大小,比如128MB(我认为这涉及更多开销),我们可能不得不传输很多更小的文件可能会给制图者带来麻烦。大块可能以每个映射器结束,从而减少映射器的可能数量。
首先,我是hadoop的新手:)我有一个大的gzip文件数据集(gzip文件中的TB文档,每个文件的大小约为100-500mb)。基本上,我需要对我的map-reduce作业的输入进行某种过滤。我想以各种方式分析这些文件。其中许多作业只需要分析特定格式的文件(特定长度,包含特定单词等-各种任意(倒置)索引),并且为每个作业处理整个数据集需要不合理的时间。所以我想创建指向HDFS中特定block/文件的索引。我可以手动生成所需的索引,但我如何准确指定我想处理哪些(数千个)特定文件/block作为映射器的输入?我可以在不将源数据读入例如数据的情况下执行此操作吗?数据库?我想要吗?还是我完全
考虑一个hadoop集群,其中hdfs-site.xml中的默认block大小为64MB。然而,后来团队决定将其更改为128MB。这是我对上述情况的问题?此更改是否需要重新启动集群,或者它会自动生效并且所有新文件都将具有默认的128MBblock大小?block大小为64M的现有文件会怎样?配置中的更改会自动应用于现有文件吗?如果它会自动完成,那么什么时候会完成-一旦更改完成或集群启动时?如果不是自动完成,那么如何手动完成此block更改? 最佳答案 Willthischangerequirerestartoftheclustero
Hadoop分布式文件系统中一个block是存储多个小文件,还是一个block只存储1个文件? 最佳答案 多个文件不存储在一个block中。顺便说一句,单个文件可以存储在多个block中。文件和blockID之间的映射保存在NameNode中。根据Hadoop:TheDefinitiveGuideUnlikeafilesystemforasingledisk,afileinHDFSthatissmallerthanasingleblockdoesnotoccupyafullblock’sworthofunderlyingstorag
如果我需要对大小在200到500MB之间的数千个(不可拆分的)gzip文件进行顺序扫描,这些文件的合适block大小是多少?为了这个问题,假设完成的处理速度非常快,因此重新启动映射器的成本并不高,即使对于大块也是如此。我的理解是:几乎没有block大小的上限,因为有“大量文件”用于适合我集群大小的映射器数量。为确保数据局部性,我希望每个gzip文件位于1个block中。但是,gzip文件的大小各不相同。如果我选择~500mb的block大小(例如,我所有输入文件的最大文件大小),数据将如何存储?选择“非常大”的block大小(如2GB)会更好吗?HDD容量是否在这两种情况下都被过度浪费
我已经使用saveAsTable方法在Hive中保存了一个远程数据库表,现在当我尝试使用CLI命令select*fromtable_name访问Hive表数据时,它给出了我的错误如下:2016-06-1510:49:36,866WARN[HiveServer2-Handler-Pool:Thread-96]:thrift.ThriftCLIService(ThriftCLIService.java:FetchResults(681))-Errorfetchingresults:org.apache.hive.service.cli.HiveSQLException:java.io.IO
在Hadoopfs中如何查找特定文件的block大小?我主要对命令行感兴趣,例如:hadoopfs...hdfs://fs1.data/...但它看起来并不存在。是否有Java解决方案? 最佳答案 其他答案中的fsck命令会列出block并允许您查看block数。但是,要查看实际的block大小(以字节为单位)并且没有多余的东西,请执行以下操作:hadoopfs-stat%o/filename默认block大小为:hdfsgetconf-confKeydfs.blocksize单位详情hadoopfs-stat命令中没有记录bloc
如果复制一个数据block,它会被复制到哪个数据节点?是否有任何工具可以显示复制block的位置? 最佳答案 如果知道文件名,可以通过DFS浏览器查找。转到您的名称节点网络界面,说“浏览文件系统”并导航到您感兴趣的文件。在页面底部,将有一个文件中所有block的列表,以及每个block的位置这些block位于。注意:当您点击HDFS文件系统中的实际文件时,它看起来像这样。或者,您可以运行:hadoopfsck/-files-blocks-locations它将报告所有block及其所有位置。