欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

hadoop小文件合并

墨初 知识笔记 155阅读

如何解决hadoop小文件问题?

Hadoop主要设计批处理大量数据的大文件,不是很多小文件。 解决小文件问题的主要目的就是通过合并小文件为更大的文件来加快Hadoop的程序的执行,解决小文件问题可以减少map ()函数的执行次数,相应地提高hadoop作业的整体性能。 1、 在客户端将小文件合并为大文件。 2、 使用Hadoop的CombineFileInputFormat<K,V>实现小文件的合并。 将小文件提交到MapReduce/Hadoop之前,需要先把这些小文件合并到大文件中,再把合并的大文件提交给MapReduce驱动器程序。

为什么在 hadoop 中存储大量小文件很低效?

其次,处理小文件并非 Hadoop 的设计目标,HDFS 的设计目标是流式访问大数据集(TB级别)。 因而,在 HDFS 中存储大量小文件是很低效的。 访问大量小文件经常会导致大量的 seek,以及不断的在 DatanNde 间跳跃去检索小文件。

如何在hadoop环境中设置块大小?

在Hadoop的环境中,块大小是可以通过参数配置的,这个参数由一个名为dfs.block.size定义。 如果一个应用要处理一个超大的文件,可以通过这个参数设置更大更大得到块文件,比如256MB或512MB。 Hadoop的应用中,Hadoop可以很好的处理大文件,不过当文件很多,并且文件很小时,Hadoop会把每一个小文件传递给map ()函数,而Hadoop在调用map ()函数时会创建一个映射器,这样就会创建了大量的映射器,应用的运行效率并不高。 如果使用和存储小文件,通常就会创建很过的映射器。 例如,如果有2000个文件,每一个文件的大小约为2-3MB,在处理这一批文件时,就需要2000个映射器,将每一个文件发送到一个映射器,效率会非常低的。

什么是 hadoop archives (har files)?

Hadoop提供了一些选择: Hadoop Archives (HAR files)是在 0.18.0 版本中引入到 HDFS 中的,它的出现就是为了缓解大量小文件消耗 NameNode 内存的问题。 HAR 文件是通过在 HDFS 上构建一个分层文件系统来工作。 HAR 文件通过 hadoop archive 命令来创建,而这个命令实际上是运行 MapReduce 作业来将小文件打包成少量的 HDFS 文件(译者注:将小文件进行合并成几个大文件)。
声明:无特别说明,转载请标明本文来源!