`
sungang_1120
  • 浏览: 322654 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类

合并HDFS和本地文件系统中的小文件

阅读更多

 

众所周知,HDFS中过多的小文件,会给NameNode造成很大的压力,所谓的小文件,是指远远小于文件块大小的文件。

在使用HDFS的过程中,应尽量避免生成过多的小文件。

 

本文以TextFile为例,介绍一下从本地–>HDFS、HDFS–>本地、以及HDFS–>HDFS的文件上传下载移动过程中,对小文件的合并方法

将本地的小文件合并,上传到HDFS

假设存放在本地的数据由很多个小文件组成,需要上传到HDFS。一般的做法是在本地使用脚本、程序先把小文件合并后再上传。

其实没有必要,HDFS中提供了一个很有用的命令 appendToFile,就可以解决这个问题。

假设本地有两个小文件1.txt和2.txt,里面内容如下:

  1. [liuxiaowen@dev ~]$ cat 1.txt
  2. 111111
  3. 111111
  4. 111111
  5. 111111
  6. [liuxiaowen@dev ~]$ cat 2.txt
  7. 222222
  8. 222222
  9. 222222
  10. 222222

使用下面的命令,可以将1.txt和2.txt合并,并上传到HDFS:

 

  1. [liuxiaowen@dev ~]$ hadoop fs -appendToFile 1.txt2.txt hdfs://cdh5/tmp/lxw1234.txt
  2. [liuxiaowen@dev ~]$ hadoop fs -cat hdfs://cdh5/tmp/lxw1234.txt
  3. 111111
  4. 111111
  5. 111111
  6. 111111
  7. 222222
  8. 222222
  9. 222222
  10. 222222

 

下载HDFS的小文件到本地,合并成一个大文件

假设在HDFS的/tmp/lxw1234/目录下,有两个小文件1.txt和2.txt

需要将它们下载到本地的一个文件中。

  1. [liuxiaowen@dev ~]$ hadoop fs -cat /tmp/lxw1234/1.txt
  2. 111111
  3. 111111
  4. 111111
  5. 111111
  6. [liuxiaowen@dev ~]$ hadoop fs -cat /tmp/lxw1234/2.txt
  7. 222222
  8. 222222
  9. 222222
  10. 222222

使用下面的命令:

 

  1. [liuxiaowen@dev ~]$ hadoop fs -getmerge hdfs://cdh5/tmp/lxw1234/*.txt local_largefile.txt
  2. [liuxiaowen@dev ~]$ cat local_largefile.txt
  3. 111111
  4. 111111
  5. 111111
  6. 111111
  7. 222222
  8. 222222
  9. 222222
  10. 222222

 

合并HDFS上的小文件

如果需要合并HDFS上的某个目录下有很多小文件,可以尝试使用下面的命令:

  1. [liuxiaowen@dev ~]$ hadoop fs -cat hdfs://cdh5/tmp/lxw1234/*.txt | hadoop fs -appendToFile - hdfs://cdh5/tmp/hdfs_largefile.txt
  2. [liuxiaowen@dev ~]$ hadoop fs -cat hdfs://cdh5/tmp/hdfs_largefile.txt
  3. 111111
  4. 111111
  5. 111111
  6. 111111
  7. 222222
  8. 222222
  9. 222222
  10. 222222

注意:这种处理方法在数据量非常大的情况下可能不太适合,最好使用MapReduce来合并。

 

本文转载:http://lxw1234.com/archives/2015/09/481.htm

分享到:
评论

相关推荐

    《Hadoop大数据开发实战》教学教案—03HDFS分布式文件系统.pdf

    本节课程主要介绍 HDFS 的概念、HDFS 存储架构和数据读写流程、HDFS 的 Shell 命令、Java 程序操作 HDFS、Hadoop 序列化、Hadoop 小文件处理、通信机制 RPC 等知识点。 HDFS 概念 HDFS(Hadoop Distributed File ...

    分布式文件系统HDFS原理与操作

    DataNode在启动时会遍历本地文件系统,产生一份HDFS数据块和本地文件的对应关系列表(blockreport),然后汇报给NameNode。 客户端读取HDFS中的数据文件时,首先会从NameNode获得组成文件的数据块位置列表,然后...

    HDFS分布式文件系统

    【HDFS 分布式文件系统】是大数据处理的基础,它为Hive、MapReduce、Spark等组件提供了...了解和熟练运用HDFS的shell客户端,可以有效地管理和操作存储在HDFS中的大数据,从而提升整个大数据处理系统的效率和可靠性。

    一种跨HDFS集群的文件资源分布式高效存储方法.pdf

    根据给定文件内容,以下是对该篇文档中提及知识点的详细阐述: 分布式系统与Hadoop分布式文件系统...以上内容充分展示了分布式系统中HDFS的优化存储方法,对于大型分布式系统设计和大数据存储管理具有重要的参考价值。

    HDFS基本命令.docx

    该命令可以将HDFS中的多个文件合并到本地文件系统。使用方法:hadoop fs -getmerge <hdfs_dir> 。 -put命令 -put命令用于从本地文件系统将文件拷贝到HDFS中。该命令可以将本地文件拷贝到HDFS中的指定目录。使用...

    基于Hadoop的分布式文件系统,使用Java语言开发实现了一个本地文件管理系统,其中文件存在于HDFS集群中.zip

    【标题】基于Hadoop的分布式文件系统通过Java实现的本地文件管理系统,将文件存储在HDFS集群中,展示了Hadoop的高效数据处理能力和Java在大数据领域的应用。 【内容详解】 Hadoop是Apache软件基金会开发的一个开源...

    云计算技术实验报告四HDFS文件的读写

    实验报告“云计算技术实验报告四HDFS文件的读写”主要涵盖了如何在Hadoop的分布式文件系统(HDFS)上进行文件操作,包括文件的上传和下载,以及文件的合并。该实验是针对计算机科学专业的《云计算技术》课程设计,...

    大数据技术原理与应用 第三章 分布式文件系统HDFS 学习指南

    (1)hadoop fs:适用于任何不同的文件系统,比如本地文件系统和 HDFS 文件系统。 (2)hadoop dfs:只能适用于 HDFS 文件系统。 (3)hdfs dfs:跟 hadoop dfs 的命令作用一样,只能适用于 HDFS 文件系统。 一些...

    基于Hadoop的分布式文件系统,使用Java语言开发实现了一个本地文件管理系统+源代码+文档说明

    基于Hadoop的分布式文件系统,使用Java语言开发实现了一个本地文件管理系统,其中文件存在于HDFS集群中,通过Java开发的客户端软件进行管理,其功能包括:1、文件分块、加密并上传待HDFS文件系统 2、文件块下载、...

    Hadoop分布式文件系统HDFS深入教程

    而传统文件系统更适用于随机访问和小文件的处理。 #### 3.1 传统文件系统与HDFS的对比特性 | 特性 | 传统文件系统 | HDFS | |---------------|-------------|----------------| | 数据块大小 | 小 | 大(默认128MB...

    HDFS海量小文件存取优化3

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

    大数据技术之Hadoop(HDFS文件系统).doc

    - `-appendToFile`用于追加本地文件到HDFS文件末尾。 - `-cat`用于查看HDFS文件内容。 - `-count`统计HDFS路径下文件和目录的数量。 - `-cp`复制HDFS上的文件或目录。 - `-get`将HDFS上的文件或目录下载到本地...

    Hadoop(HDFS文件系统)命令操作

    - **-appendToFile <localsrc> **:将本地文件追加到 HDFS 文件的末尾。 - **-cat [-ignoreCrc] **:显示 HDFS 文件的内容。忽略 CRC 校验。 - **-checksum **:显示文件的校验和。 - **-chgrp [-R] GROUP PATH**:...

    2大数据技术之Hadoop(HDFS文件系统).doc

    - `bin/hadoop fs -put`:将本地文件上传到HDFS。 - `bin/hadoop fs -get`:从HDFS下载文件到本地。 - `bin/hadoop fs -cat`:查看HDFS上的文件内容。 - `bin/hadoop fs -mv`:重命名或移动HDFS上的文件或目录。 - `...

    02_Hadoop 分布式文件系统(HDFS).docx

    这些元数据被存储在一个称为fsimage的磁盘文件中,同时,所有的修改操作则记录在一个edits日志中。SecondNameNode并非备用的NameNode,而是帮助NameNode定期合并fsimage和edits,生成新的检查点,减轻NameNode的压力...

    深入理解Hadoop HDFS高级教程.txt打包整理.zip

    9. 高级特性:HDFS支持文件的追加操作,以及在文件系统内的文件移动和重命名。HDFS还引入了快照功能,允许用户在特定时间点创建文件系统的快照,用于备份和恢复。 10. 实战应用:HDFS广泛应用于互联网公司,如...

    一种分布式文件系统—HDFS.pdf

    NameNode的元数据包括文件系统命名空间和目录树结构,这些信息被存储在本地磁盘上的两个主要文件中,一个是命名空间镜像文件,另一个是文件改动日志文件。NameNode还负责跟踪所有DataNode节点的状态,以及管理数据...

    分布式文件系统-HDFS1

    分布式文件系统-HDFS1是Hadoop的核心组成部分,用于提供大规模数据存储和处理的能力。Hadoop是一种开源框架,它使得用户可以在普通硬件上构建和运行处理大量数据的应用程序。HDFS,全称Hadoop Distributed File ...

Global site tag (gtag.js) - Google Analytics