hadoop小文件存档

hadoop小文件存档
1.HDFS存档小文件弊端
每个文件均按块存储,每个块的元数据存储在NameNode的内存中,因此HDFS存储小文件会非常低效。因为大量的小文件会耗尽NameNode中的大部分内存。但注意,存储小文件所需的磁盘容量和数据块的大小无关。例如,一个1M的文件设置为128M的块存储,实际使用的是1M的磁盘你空间。
2.解决存储小文件办法之一
HDFS存文档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少NameNode内存使用的同时,允许对文件进行透明的访问。具体说来,HDFS存档文件对内还是一个一个独立文件,对NameNode而言却是一个整体,减少了NameNode的内存
3.案例实操
(1)需要启动YARN进程

[[email protected] hadoop-2.7.7]$ sbin/start-yarn.sh

(2)归档文件
把/user/linyouyi/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件存储到/user/linyouyi/output路径下。

[[email protected] hadoop-2.7.7]$ bin/hadoop archive -archiveName input.har –p /user/linyouyi/input /user/linyouyi/output

(3)查看归档

[[email protected] hadoop-2.7.7]$ hadoop fs -lsr /user/linyouyi/output/input.har
[[email protected] hadoop-2.7.7]$ hadoop fs -lsr har:///user/linyouyi/output/input.har

(4)解归档文件

[[email protected] hadoop-2.7.7]$ hadoop fs -cp har:///user/linyouyi/output/input.har/* /user/linyouyi

原文地址:https://www.cnblogs.com/linyouyi/p/11310572.html

时间: 2024-12-15 00:54:24

hadoop小文件存档的相关文章

大数据-Hadoop小文件问题解决方案

HDFS中小文件是指文件size小于HDFS上block(dfs block size)大小的文件.大量的小文件会给Hadoop的扩展性和性能带来严重的影响.HDFS中小文件是指文件size小于HDFS上block大小的文件.大量的小文件会给Hadoop的扩展性和性能带来严重的影响. 大数据学习群:716581014 小文件是如何产生的? 动态分区插入数据,产生大量的小文件,从而导致map数量剧增 reduce数量越多,小文件也越多,reduce的个数和输出文件个数一致 数据源本身就是大量的小文

hadoop小文件合并

1.背景 在实际项目中,输入数据往往是由许多小文件组成,这里的小文件是指小于HDFS系统Block大小的文件(默认128M), 然而每一个存储在HDFS中的文件.目录和块都映射为一个对象,存储在NameNode服务器内存中,通常占用150个字节. 如果有1千万个文件,就需要消耗大约3G的内存空间.如果是10亿个文件呢,简直不可想象.所以在项目开始前, 我们选择一种适合的方案来解决本项目的小文件问题 2.介绍 本地 D:\data目录下有 2012-09-17 至 2012-09-23 一共7天的

Hadoop小文件解决之道之一 Hadoop archive

简介 hdfs并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在namenode节点占用内存,如果存在这样大量的小文件,它们会吃掉namenode节点的大量内存. hadoop Archives可以有效的处理以上问题,他可以把多个文件归档成为一个文件,归档成一个文件后还可以透明的访问每一个文件,并且可以做为mapreduce任务的输入. 用法 hadoop Archives可以使用archive工具创建,同上一篇讲的distcp一样,archive也是一个mapre

Hadoop小文件问题及解决方案

1.概述 小文件是指文件size小于HDFS上block大小的文件.这样的文件会给hadoop的扩展性和性能带来严重问题.首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1千万个小文件,每个文件占用一个block,则NameNode大约需要2G空间.如果存储一亿个文件,则NameNode需要20G空间.这样NameNode内存容量严重制约了集群的扩展.其次,访问大量小文件速度远远小于访问几个大文件.HDFS最初是为流式访问大文件开发的

Hadoop之小文件处理与调优经验

HDFS上每个文件都要在namenode上建立一个索引,这个索引的大小约为150byte,这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用namenode的内存空间,另一方面就是索引文件过大是的索引速度变慢. 解决的方式:   1:Hadoop本身提供了一些文件压缩的方案 2:从系统层面改变现有HDFS存在的问题,其实主要还是小文件的合并,然后建立比较快速的索引. Hadoop自带小文件解决方案 1:Hadoop Archive: 是一个高效地将小文件放入HDFS块中的文件存档

Hadoop对小文件的解决方案

小文件指的是那些size比HDFS的block size(默认64M)小的多的文件.任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在namenode的内存中, 每一个object占用150 bytes的内存空间.所以,如果有10million个文件, 每一个文件对应一个block,那么就将要消耗namenode 3G的内存来保存这些block的信息.如果规模再大一些,那么将会超出现阶段计算机硬件所能满足的极限. 控制小文件的方法有: 1.应用程序自己控制 2.arc

关于hadoop处理大量小文件情况的解决方法

小文件是指那些size比HDFS的block size(默认64m)小的多的文件.任何一个文件,目录和bolck,在HDFS中都会被表示为一个object存储在namenode的内存中,每一个object占用150bytes的内存空间.所以,如果有10milion个文件,每一个文件对应一个block,那么就会消耗namenode 3G来保存这些block的信息.如果规模再大一点,那么将会超出现阶段计算机硬件所能满足的极限. 控制小文件的方法有: 1应用程序自己控制 2archieve 第一种是我

Hadoop HDFS编程 API入门系列之合并小文件到HDFS(三)

不多说,直接上代码.  代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs7; import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apa

Hadoop的小文件解决方案

小文件指的是那些size比HDFS的block size(默认64M)小的多的文件.任何一个文件,目录和block,在HDFS中都会被表示为一个object存储在namenode的内存中,每一个object占用150bytes的内存空间.所以,如果有10million(一千万)个文件,每一个文件对应一个block,那么就将要消耗namenode3G的内存来保存这些block的信息,如果规模再大一些,那么将会超出现阶段计算机硬件所能满足的极限. 相同大小下,小文件越多,对namenode造成的内存