我是新的Map减少,我想了解什么是序列文件数据输入?我学习过hadoop的书,但对我来说很难理解。
xfb7svmp1#
首先我们应该了解sequencefile试图解决哪些问题,然后了解sequencefile如何帮助解决这些问题。
sequencefile是hadoop中解决小文件问题的方法之一。小文件明显小于hdfs块大小(128mb)。hdfs中的每个文件、目录、块都表示为object,占用150字节。1000万个文件,将使用namenode大约3g的内存。十亿个文件是不可行的。
Map任务通常一次处理一个输入块(使用默认的fileinputformat)。文件数量越多,Map任务需要的数量越多,作业时间可能会慢得多。
这些文件是较大的逻辑文件的一部分。文件本身就很小,例如图像。这两种情况需要不同的解决办法。对于第一种方法,编写一个程序将小文件连接在一起(参见nathan marz关于一个名为consolidator的工具的文章,它正是这样做的)对于第二种方法,需要某种容器以某种方式对文件进行分组。
har文件har(hadoop存档)的引入缓解了大量文件对namenode内存的压力。HAR最好纯粹用于存档目的。序列文件sequencefile的概念是将每个小文件放到一个较大的单个文件中。例如,假设有10000个100kb的文件,那么我们可以编写一个程序将它们放入一个sequencefile中,如下所示,您可以使用filename作为键,content作为值。(来源:csdn.net)一些好处:namenode上需要的内存较少。继续10000 100kb文件示例,在使用sequencefile之前,10000个对象在namenode中占用了大约4.5mb的ram。在使用带有8个hdfs块的1gb的sequencefile之后,这些对象在namenode中占用了大约3.6kb的ram。sequencefile是可拆分的,因此适用于mapreduce。sequencefile支持压缩。支持压缩,文件结构取决于压缩类型。未压缩record compressed:将每个记录添加到文件中时进行压缩。(来源:csdn.net)块压缩(来源:csdn.net)等待数据达到要压缩的块大小。块压缩比记录压缩提供更好的压缩比。使用sequencefile时,块压缩通常是首选选项。这里的块与hdfs或文件系统块无关。
1条答案
按热度按时间xfb7svmp1#
首先我们应该了解sequencefile试图解决哪些问题,然后了解sequencefile如何帮助解决这些问题。
在hdfs中
sequencefile是hadoop中解决小文件问题的方法之一。
小文件明显小于hdfs块大小(128mb)。
hdfs中的每个文件、目录、块都表示为object,占用150字节。
1000万个文件,将使用namenode大约3g的内存。
十亿个文件是不可行的。
在mapreduce中
Map任务通常一次处理一个输入块(使用默认的fileinputformat)。
文件数量越多,Map任务需要的数量越多,作业时间可能会慢得多。
小文件场景
这些文件是较大的逻辑文件的一部分。
文件本身就很小,例如图像。
这两种情况需要不同的解决办法。
对于第一种方法,编写一个程序将小文件连接在一起(参见nathan marz关于一个名为consolidator的工具的文章,它正是这样做的)
对于第二种方法,需要某种容器以某种方式对文件进行分组。
hadoop中的解决方案
har文件
har(hadoop存档)的引入缓解了大量文件对namenode内存的压力。
HAR最好纯粹用于存档目的。
序列文件
sequencefile的概念是将每个小文件放到一个较大的单个文件中。
例如,假设有10000个100kb的文件,那么我们可以编写一个程序将它们放入一个sequencefile中,如下所示,您可以使用filename作为键,content作为值。
(来源:csdn.net)
一些好处:
namenode上需要的内存较少。继续10000 100kb文件示例,
在使用sequencefile之前,10000个对象在namenode中占用了大约4.5mb的ram。
在使用带有8个hdfs块的1gb的sequencefile之后,这些对象在namenode中占用了大约3.6kb的ram。
sequencefile是可拆分的,因此适用于mapreduce。
sequencefile支持压缩。
支持压缩,文件结构取决于压缩类型。
未压缩
record compressed:将每个记录添加到文件中时进行压缩。
(来源:csdn.net)
块压缩
(来源:csdn.net)
等待数据达到要压缩的块大小。
块压缩比记录压缩提供更好的压缩比。
使用sequencefile时,块压缩通常是首选选项。
这里的块与hdfs或文件系统块无关。