HDFS小文件解决方案---archive归档文件命令

小文件解决方案

背景

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

Archive概述

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

创建archive

  • hdfs dfs -archive -archiveName archive.har /path/to/file.txt /path/to/archive.har
    • -archiveName archive.har: 指定生成的归档文件名为archive.har。扩展名是*.har
    • /path/to/directory/: 要归档的整个目录的路径
    • /path/to/archive/: 归档文件的存储位置。
    • 多个文件进行归档操作的时候可以用:hdfs dfs -archive -archiveName archive.har /path/to/file1.txt /path/to/file2.txt /path/to/archive/
  • 注意:archive归档是通过MapReduce程序完成的,需要启动yarn集群

查看归档文件

查看归档之后的样子

bash 复制代码
hadoop fs -ls /outputdir /test.har

这里可以看到har文件包括:两个索引文件,多个part文件(本例只有一个)以及一个标识成功与否的文件。part文件是多个源文件的集合,通过index文件可以去找到源文件

例如上述的三个小文件1.txt,2.txt,3.txt内容分别是1,2,3.进行archive操作之后,三个小文件就归档到test.har里的part-0一个文件里。

查看归档文件之前的样子

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

提取archive

按顺序解压存档(串行):

bash 复制代码
hadoop fs -cp har:///outputdir/test.har/* /smallfile1
# 要并行解压存档,请使用DisCp,对应大的归档文件可以提高效率:
hadoop distcp har:///outputdir/test.har/* smallfile2

archive注意事项

相关推荐
TMT星球16 小时前
虎鲸文娱春苗编剧计划全面升级,已孵化20个剧本进入前期开发
大数据·人工智能
天国梦1 天前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
瓦学妹1 天前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
天天爱吃肉82181 天前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
EAIReport1 天前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
一名普通的电源工程师1 天前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能
SelectDB1 天前
Apache Doris 2026 Roadmap:AI 时代数据基础设施如何选型?Doris 给出了三层架构答案
大数据
Think_Higher1 天前
CID行业趋势周报|7.27—8.02:大盘表现、重点赛道与投测建议
大数据·人工智能
林澈在路上1 天前
2026 主流 AI 写歌 APP 全面测评|零基础原创歌曲工具选购指南
大数据·人工智能·aigc·音视频·音频
ZStack开发者社区1 天前
云回迁潮来临:AI工作负载为什么正在从公有云回流私有云
大数据·人工智能