首页 > 其他分享 >Hadoop小文件解决方案

Hadoop小文件解决方案

时间:2024-09-25 18:55:24浏览次数:9  
标签:文件 存档 解决方案 Hadoop Archive 归档 har archive

1.背景

HDFS并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在NameNode占用内存,如果存在大量的小文件,它们会吃掉NameNode节点的大量内存。如下所示,模拟小文件场景:

Hadoop小文件解决方案_Arc

2.Archive概述

Hadoop Archives可以有效的处理以上问题,它可以把多个文件归档成为一个文件,归档成一个文件后还可以透明的访问每一个文件。

 

Hadoop小文件解决方案_Arc_02

3.创建Archive

Usage: hadoop archive -archiveName name -p <parent> <src>* <dest>
           -archiveName 指要创建的存档的名称。扩展名应该是*.har。 
           -p 指定文件档案文件src的相对路径。
比如:-p /foo/bar a/b/c e/f/g,这里的/foo/bar是a/b/c与e/f/g的父路径,所以完整路径为/foo/bar/a/b/c与/foo/bar/e/f/g。

示例:

案例:存档一个目录/smallfile下的所有文件:
hadoop archive -archiveName test.har -p /smallfile /outputdir
这样就会在/outputdir目录下创建一个名为test.har的存档文件。
注意:Archive归档是通过MapReduce程序完成的,需要启动YARN集群。

Hadoop小文件解决方案_Hadoop_03

4.查看 Archive归档之后的样子

hadoop fs -ls /outputdir/test.har
    这里可以看到har文件包括:两个索引文件,多个part文件(本例只有一个)以及一个标识成功与否的文件。part文件是多个原文件的集合, 通过index文件可以去找到原文件。
    例如上述的三个小文件1.txt 2.txt 3.txt内容分别为1,2,3。进行archive操作之后,三个小文件就归档到test.har里的part-0一个文件里。

Hadoop小文件解决方案_Hadoop_04

5.查看Archive归档之前的样子

在查看har文件的时候,如果没有指定访问协议,默认使用的就是hdfs://,此时所能看到的就是归档之后的样子。
此外,Archive还提供了自己的har uri访问协议。如果用har uri去访问的话,索引、标识等文件就会隐藏起来,只显示创建档案之前的原文件:
Hadoop Archives的URI是:
har://scheme-hostname:port/archivepath/fileinarchive   
scheme-hostname格式为hdfs-域名:端口

Hadoop小文件解决方案_Hadoop_05

6.提取Archive

按顺序解压存档(串行):
hadoop fs -cp har:///outputdir/test.har/* /smallfile1
要并行解压存档,请使用DistCp,对应大的归档文件可以提高效率:
hadoop distcp har:///outputdir/test.har/* /smallfile2

Hadoop小文件解决方案_Hadoop_06

7.Archive使用注意事项

1. Hadoop archive是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。archive的扩展名是*.har;
2. 创建archives本质是运行一个Map/Reduce任务,所以应该在Hadoop集群上运行创建档案的命令; 
3. 创建archive文件要消耗和原文件一样多的硬盘空间;
4. archive文件不支持压缩,尽管archive文件看起来像已经被压缩过;
5. archive文件一旦创建就无法改变,要修改的话,需要创建新的archive文件。事实上,一般不会再对存档后的文件进行修改,因为它们是定期存档的,比如每周或每日;
6. 当创建archive时,源文件不会被更改或删除;

8.其他解决方法

# 使用Sequence File合并小文件
可以编写一个程序将所有的小文件写入到一个Sequence File中,即将文件名作为key,文件内容作为value序列化到Sequence File大文件中。

 

 

 

 

"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少



标签:文件,存档,解决方案,Hadoop,Archive,归档,har,archive
From: https://blog.51cto.com/u_8901540/12111439

相关文章

  • Hadoop数据存储及管理
    一、分布式文件存储面临的挑战1.海量数据存储问题采用多台服务器,支持横向扩展2.海量数据问题查询便捷问题使用元数据记录文件和机器的位置信息3.大文件传输效率慢问题分块存储,分别存储在多台机器上,并行操作提高效率4.数据丢失问题冗余存储,多副本机制5.解决用户查询视角......
  • Dockerfile文件详解
    什么是dockerfile?Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。dockerbuild命令用于从Dockerfile构建映像。可以在dockerbuild命令中使用-f标志指向文件系统中任何位置的Dockerfile。例......
  • sersync+rsync实现服务器文件实时同步
    sersync+rsync实现服务器文件实时同步一、为什么要用rsync+sersync架构?1、sersync是基于inotify开发的,类似于inotify-tools的工具2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用r......
  • rsync+inotfiy文件同步
    rsync+inotfiy文件同步1.部署rsync服务yuminstallrsync#安装rsync,如果嫌yum版本过低也可以源码安装2.vim/etc/rsyncd.conf#默认rsync没有配置文件,创建一个,文件中#和汉字仅为注释,使用中请将所有注释清除......
  • 《房产达人2》游戏报错hsZZJK.dll文件丢失怎么办?深度解析《房产达人2》hsZZJK.dll文件
    《房产达人2》游戏报错提示hsZZJK.dll文件丢失是一个常见的技术问题,这通常会导致游戏无法正常运行。下面将对hsZZJK.dll文件丢失的原因进行深度解析,并提供相应的解决方案。深度解析hsZZJK.dll文件丢失的原因游戏安装不完整或损坏:在安装《房产达人2》的过程中,如果由于网......
  • 《刀剑江湖路》游戏启动时闪退弹窗“找不到Common.dll”文件该怎么办?刀剑江湖路游戏崩
    在启动《刀剑江湖路》时,出现闪退并弹窗“找不到Common.dll”文件的状况,令人颇为头疼。要解决这个问题,您可以尝试重新安装游戏、检查系统环境,或者从可靠的途径获取该文件并放置到正确目录。本篇将为大家带来《刀剑江湖路》游戏启动时闪退弹窗“找不到Common.dll”文件该怎么办的......
  • 《守望先锋2》libcef.dll文件丢失无法运行?快速定位并解决《守望先锋2》libcef.dll文件
    《守望先锋2》在运行时提示libcef.dll文件丢失,这确实是一个可能导致游戏无法正常运行的问题。以下是一些快速定位并解决这一问题的步骤:一、了解libcef.dll文件libcef.dll文件通常与ChromiumEmbeddedFramework(CEF)相关,它对于游戏内嵌的网页内容展示与交互至关重要,如登录界面......
  • Photoshop CS8.0启动难题:专家支招Photoshop CS8.0 kernel32.dll文件丢失的应急处理与
    PhotoshopCS8.0(注意:实际上AdobePhotoshop的命名中并没有直接称为“CS8.0”的版本,这里可能是对某个版本或假设版本的指代)启动时遇到kernel32.dll文件丢失的问题,确实是一个令人头疼的难题。针对这一问题,专家提供了以下应急处理与预防措施:应急处理使用系统文件检查器(SFC):......
  • 新能源汽车液冷高压线束解决方案|派歌锐
    派歌锐新能源汽车液冷高压线束是一种高效且可靠的连接解决方案,专为解决电动汽车在高功率运行和快速充电过程中的散热问题而设计。派歌锐提供定制化的解决方案,以满足不同客户的具体需求。1.产品特点:   特殊绝缘体材料:派歌锐液冷高压电缆采用特殊的绝缘材料,有效防止绝缘老......
  • JetBrains IDEA 插件 AI Assistant 不可用 - 解决方案
    问题描述:如果购买了IDEA的AIAssistant插件,但是打开后不可用并有下面的提示:“很遗憾,AIAssistant目前在您所在的位置不可用”。Unfortunately,AIAssistantiscurrentlyunavailableinyourlocation. 1.打开网址https://account.jetbrains.com/profile-details......