大数据 - Hadoop系列《五》- HDFS文件块大小及小文件问题

系列文章:

大数据- Hadoop入门-CSDN博客

大数据 - Hadoop系列《二》- Hadoop组成-CSDN博客

大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述_大量小文件的存储使用什么分布式文件系统-CSDN博客

大数据 - Hadoop系列《三》- MapReduce(分布式计算引擎)概述-CSDN博客

大数据 - Hadoop系列《四》- MapReduce(分布式计算引擎)的核心思想-CSDN博客

目录

5.1 HDFS文件块大小(面试题)

问题:能不能将块设置的小一些?

问题:不能过小,那能不能过大?

5.2 小文件问题

2. 小文件过多会造成的问题

3. 小文件的解决办法

🥙3.1 使用Hadoop Archive(HAR)将小文件进行归档

🥙3.2 使用SequenceFile合并小文件

🥙3.3 使用CombineFileInputFormat合并小文件:


5.1 HDFS文件块大小(面试题)

HDFS中的文件在物理上是分块存储(Block), 块的大小可以通过配置参数(dfs blocksize)来规定,默认大小在Hadoop2x/3x版本中是128M,1x版本中是64M.

问题:能不能将块设置的小一些?

理论上是可以的,但是如果设置的块大小过小,会占用大量的namenode的元数据空间,而且在读写操作时,加大了寻址时间,所以不建议设置的过小

问题:不能过小,那能不能过大?

不建议,因为设置的过大,传输时间会远远大于寻址时间,增加了网络资源的消耗,而且如果在读写的过程中出现故障,恢复起来也很麻烦,所以不建议

总结:HDFS块的大小设置主要取决于磁盘传输速率

5.2 小文件问题

1. 小文件是指文件大小明显小于hdfs上块大小的文件

2. 小文件过多会造成的问题

  1. HDFS上每个文件都要在NameNode上面创建对应的元数据,这个元数据的大小约为150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用NameNode的内存空间,另一方面就是元数据文件过多,使得寻址索引速度变慢。

  2. 小文件过多,在进行MR计算时,需要启动过多的MapTask,每个MapTask处理的数据量很小,导致MapTask的处理时间比启动时间还小,白白消耗资源。

3. 小文件的解决办法

  解决小文件问题的本质就是将小文件进行合并,可以通过以下几种方式解决小文件问题:

注意:和HAR不同的是,这种方式还支持压缩,可以减少减少存储空间的占用。但SequenceFile文件不能追加写入,也不能修改, 适用于一次性写入大量小文件的操作。

🥙3.1 使用Hadoop Archive(HAR)将小文件进行归档

        使用Hadoop自带的HAR将小文件进行归档,将多个小文件打包成一个HAR文件,这样NameNode中的元数据也就存储一份。在减少namenode内存使用的同时,仍然可以对文件进行透明的访问。

🥙3.2 使用SequenceFile合并小文件

可以使用SequenceFile格式将大批的小文件合并成一个大文件,再使用MapReduce程序进行操作,从而提高系统性能。

🥙3.3 使用CombineFileInputFormat合并小文件:

在MR读取数据时将多个小文件合并成一个文件进行处理,只开启一个MapTask,提高了任务的执行效率。

 

相关推荐

  1. Linux文件分割文件

    2024-04-01 06:16:01       16 阅读
  2. HadoopHDFS分布式文件系统

    2024-04-01 06:16:01       6 阅读
  3. python:文件分批/导入数据库方式记录

    2024-04-01 06:16:01       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 06:16:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 06:16:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 06:16:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 06:16:01       20 阅读

热门阅读

  1. Docker知识简略

    2024-04-01 06:16:01       17 阅读
  2. UDP网络编程

    2024-04-01 06:16:01       17 阅读
  3. ES6:Set()与weakSet()

    2024-04-01 06:16:01       15 阅读
  4. Flutter与iOS和Android原生页面交互

    2024-04-01 06:16:01       19 阅读
  5. 设计模式-单例模式(枚举)

    2024-04-01 06:16:01       20 阅读
  6. 排序算法笔记

    2024-04-01 06:16:01       19 阅读
  7. 文件系统 FTP Ubuntu 安装入门介绍

    2024-04-01 06:16:01       18 阅读
  8. SOA、分布式、微服务之间的关系?

    2024-04-01 06:16:01       16 阅读