开发者学堂课程【Hadoop 企业优化及扩展案例:HDFS 小文件处理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/96/detail/1571
HDFS 小文件处理
目录:
一、HDFS 小文件弊端
二、HDFS 小文件解决方案
一、HDFS 小文件弊端
HDFS. 上每个文件都要在 NameNode 上建立--个索引,这个索引的大小约为150byte, 这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用 NameNode 的内存空间,另一方面就是索引文件过大使得索引速度变慢
二、HDFS 小文件解决方案
1.小文件的优化无非以下几种方式:
(1)在数据采集的时候,就将小文件或小批数据合成大文件再上传 HDFS
(2)在业务处理之前,在 HDFS 上使用 MapReduce 程序对小文件进行合并
(3)在MapReduce 处理时,可采用 CombineTextInputFormat 提高效率
2.HDFS小文件解决方案
(1.1)Hadoop Archive
是一个高效地将小文件放入 HDFS 快中的文件存档工具,它能移将多个小文件打包成一个 HAR 文件,遠祥就減少了 NameNode 的内存使用。
(1.2)Sequence File
Sequence File 由一系列的二进制key/value組成,如果key为文件名,value 为文件内容,则可以将大批小文件合并成一个大文件。
(1.3)CombineFilelnputFormatCombineFileInputFormat 是一种新的IuputFormat,用于将多个文件合并成一个単独的 Split,另外,它会考慮数据的存储位置。
(1.4)开启 JVM 重用
对于大量小文件 Job ,可以开启 JVM 重用会减少45%运行时间。
JVM 重用原理:
-个Map 运行在一个 JVM 上,开启重用的话,该 Map 在 JVM 上运行完毕后, JVM 继续运行其他 Map。
具体设置:
mapreduce.job.jvm.numtasks 值在 10-20 之间。