`

Hadoop Archive解决海量小文件存储

 
阅读更多

 

      单台服务器作为Namenode,当文件数量规模不断增大时,元数据的规模增长将是一个需要面对的问题,由于Namenode需要将所有元数据Load到内存中,单台Namenode可能会无法管理海量的元数据。另一个是HDFS中SequenceFile存储方式的讨论,利用Block压缩方式可以很好的解决空间压力。

 

 

      HDFS中文件是按Block来存储的,默认一个Block的长度是128MB,当HDFS中存在大量小文件(长度小于128MB)时,

不仅占用大量存储空间,而且也占用大量的Namespace,给Namenode带来了内存压力.

 

      Yahoo内部有一个生产集群,统计下来有57,000,000个小于128MB的文件,这些小文件消耗了95%的namespace,

占用了30%的存储空间。Namenode的压力一般也常常是因为有海量的小文件存在,如果没有这些小文件存在的话,

Namenode内存还没撑爆,估计存储空间就先爆了.

 

       Hadoop Archive: File Compaction for HDFS提到了解决方法,是利用Hadoop Archive(HAR),这个特性从Hadoop 0.18.0版本就已经引入了,他可以将众多小文件打包成一个大文件进行存储,并且打包后原来的文件仍然可以通过Map-reduce进行操作,打包后的文件由索引和存储两大部分组成,索引部分记录了原有的目录结构和文件状态。

 

Hadoop Archive

 

 

Har归档:

 

hadoop archive -archiveName test.har -p /A/B/C/D/ E1/F1 E2/F2 /A/G/

命令分析:

目标文件名:-archiveName test.har

源文件的父目录: -p /A/B/C/D/

源文件(夹可以有多个),如这里的E1/F1和E2/F2

所以源文件其实是: 父目录路径 + 相对子路径

最后一个参数就是目录文件夹了 dest path: 所以最终结果的路径是 dest path + achiveName

root@ubuntu:~/workspace# hadoop archive -archiveName files.har testhar/testhar/* testhar
 

      HAR对我们来说,就是把众多文件整合到一起,文件个数减小了,但是文件总体大小并没有减少(无压缩)。归档文件与原文件分别使用了不同的Block,并没有共用Block。当归档文件较多时,性能并不明显(典型的HDFS拷贝)。

 

package cn.edu.xmu.dm.har;


import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.HarFileSystem;
import org.apache.hadoop.fs.Path;

/**
 * desc:Har test
 * <code>HarMain</code>
 * @author chenwq (irwenqiang@gmail.com)
 * @version 1.0 2012/05/18
 *@since Hadoop 0.18
 */
public class HarMain {
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		conf.set("fs.default.name", "hdfs://127.0.0.1:9000");
			
		HarFileSystem fs = new HarFileSystem();
		fs.initialize(new URI("har:////user/root/testhar/files.har"), conf);
		FileStatus[] listStatus = fs.listStatus(new Path("user/root/"));
		for (FileStatus fileStatus : listStatus) {
			System.out.println(fileStatus.getPath().toString());
		}
	}
}
 

 

 

分享到:
评论
2 楼 chenwq 2012-05-20  
dm@master:/$ hadoop archive -archiveName tfidf.har -p /user/dm/chenwq in/ /user/dm/chenwq
1 楼 chenwq 2012-05-19  
hadoop archive -archiveName tfidf.har -p baiduwq bdbkFinal_item_content_mm/* baiduwq

相关推荐

    hadoop处理海小文件的改进方法

    ### hadoop处理海量小文件的改进方法 #### 一、引言 随着互联网技术的快速发展,数据量呈现出爆炸性增长趋势。在大数据处理领域,Hadoop作为一种流行的分布式计算框架,被广泛应用于各种大规模数据处理场景中。...

    基于Hadoop的小文件分布式存储技术研究.pdf

    根据提供的文件内容,本文主要研究了基于Hadoop的分布式存储技术,特别是针对海量小文件存储问题的解决方案。文章分别从Hadoop框架的介绍、小文件存储问题的分析以及具体的优化策略等方面展开。下面将详细介绍这些...

    HDFS海量小文件存取优化3

    1. **归档和合并**:通过将小文件打包成大文件(如Hadoop的Har Archive格式),减少NameNode的元数据负担。这样不仅减少了文件的数量,还使得文件读取更加高效。 2. **元数据服务优化**:如使用HDFS Federation或...

    hadoop+hbase jar包

    例如,互联网公司可能用Hadoop来处理海量的用户访问日志,而HBase则可以用来存储用户的实时行为数据,提供快速的查询服务。 5. 集成与开发:开发人员在使用Hadoop和HBase时,需要在代码中引入对应的jar包,并配置...

    基于Hadoop的校园网盘的设计与实现 (2).pdf

    1. **小文件处理**:Hadoop针对小文件处理有多种策略,如Hadoop Archive(HAR)、Sequence File和CombineFileInputFormat,这些策略可以有效管理和优化大量小文件的存储和读取。 2. **副本存放策略**:HDFS会根据...

    Hadoop源代码分析(完整版)

    - **GFS → HDFS**:Hadoop分布式文件系统,为Hadoop提供了基础的数据存储能力。 - **BigTable → HBase**:基于HDFS之上的一种分布式列式存储数据库。 - **MapReduce → Hadoop MapReduce**:提供了高效的数据处理...

    hadoop安装包下载地址

    它基于Google的MapReduce论文和其他相关论文设计而成,能够有效地支持海量数据的存储与计算任务。本文将详细介绍Hadoop安装包的下载地址及相关资源。 #### 下载地址 Hadoop的官方下载地址为:...

    hadoop0.20.2的eclipse3.3.2插件及开发环境帮助文档

    Hadoop是一个分布式文件系统,它允许存储和处理海量数据,而Eclipse则是一个强大的Java开发工具,通过特定的插件可以支持Hadoop开发。本文档将详细介绍如何在Eclipse 3.3.2中安装和配置Hadoop插件,以及如何利用这个...

    Hadoop chukwa

    它设计的初衷是为了在Hadoop生态系统中提供一个可靠且可扩展的数据摄入系统,以支持对海量分布式系统的操作数据进行分析。Chukwa的名字来源于一种非洲木琴,象征着其收集、整合和播放(数据)的能力。 Chukwa的核心...

    hadoop操作工具.rar

    Hadoop是一款开源的大数据处理框架,由Apache基金会开发,它主要设计用于处理和存储海量数据。这个名为“hadoop操作工具.rar”的压缩包文件很可能包含了帮助用户更有效地操作Hadoop集群的各种工具。以下是对这些标签...

    hadoop源代码归档

    Hadoop是Apache软件基金会的一个项目,其核心设计理念是分布式存储和计算,为海量数据提供了高可靠、高扩展性的解决方案。 【描述】"hadoop源代码归档"表明这是一个关于Hadoop源代码的集合,可能是为了便于开发者...

    hadoop-2.7.6在centos6.8上的编译步骤

    随着大数据技术的不断发展,Hadoop作为处理海量数据的重要工具之一,其部署与使用变得越来越重要。本文将详细介绍如何在CentOS 6.8环境下从源码编译安装Hadoop-2.7.6版本。通过这种方式,可以更好地理解Hadoop的工作...

    Hadoop源代码分析完整版

    - **HDFS (Hadoop Distributed File System)**:分布式文件系统,为Hadoop提供了可靠、高效的存储能力。HDFS的设计目标是在廉价硬件上实现高可用性、高性能的存储解决方案。 - **MapReduce**:一种分布式计算框架,...

    hadoop命令手册

    - **archive**:创建Hadoop档案文件,用于压缩和归档文件,便于存储和处理。 - **distcp**:分布式拷贝工具,可以跨Hadoop集群或从本地文件系统到Hadoop集群进行批量文件拷贝。 - **fs**:文件系统客户端,提供一...

    hadoop 源码分析 文档

    这两个组件共同构建了一个强大的、可扩展的云计算平台,旨在处理和存储海量数据。 HDFS是分布式文件系统,灵感来源于Google的GFS(Google File System)。HDFS的设计目标是在廉价硬件上实现高容错性和高吞吐量的...

    hadoop为分布式

    Hadoop是一种能够处理海量数据的分布式计算框架。它主要用于大数据存储与处理任务,支持大量的并行处理作业。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。为了更好地理解和测试Hadoop...

    Hadoop源代码分析 pdf 文字版

    - **GFS → HDFS**:Hadoop分布式文件系统(Hadoop Distributed File System),作为Hadoop的核心组成部分,负责存储海量数据。 - **BigTable → HBase**:构建在HDFS之上的一种分布式、可扩展的列式存储系统,适用...

    《Hadoop开发者》第四期

    - **分布式文件系统**:随着分布式文件系统的出现,如Google的GFS和Hadoop的HDFS,解决了大规模数据存储的问题。 - **分布式计算框架**:随后出现了MapReduce这样的分布式计算框架,它使得并行处理大规模数据成为...

    hadoop代码分析

    这种设计使得Hadoop能够适应不同的应用场景,并能够与多种文件系统(包括本地文件系统和云存储系统)无缝集成。 - **关键包及其功能**: - **tool**:提供命令行工具,如DistCp(用于复制数据)和archive(用于...

    Hadoop权威指引---中文版.pdf

    - HDFS支持数据的并行复制(distcp)和归档文件(Hadoop Archive,HAR),优化存储空间利用率。 4. **Hadoop的I/O** - Hadoop提供了数据完整性机制,确保数据在传输和存储过程中的准确性。 - 压缩技术可以减少...

Global site tag (gtag.js) - Google Analytics