zoukankan      html  css  js  c++  java
  • <Hadoop><SequenceFile><Hadoop小文件>

    Origin

    • 我们首先理解一下SequenceFile试图解决什么问题,然后看SeqFile怎么解决这些问题。

    In HDFS

    • 序列文件是解决Hadoop小文件问题的一个方法
    • 小文件是显著小于HDFS块(128M)的文件;
    • 在HDFS中,每个文件、目录、块都被表示成一个对象,占用150bytes;
    • 10million文件,会占用NameNode 3gb内存;

    In MapReduce

    • map task通常一次处理一个input block(使用default FileInputFormat);
    • 文件数量越多,就需要越多的map task,并且job时间会变慢

    Small file scenarios

    • 这些小文件是一个大的logical file的pieces;   ---->     可以通过写一个程序来连接这些小文件
    • 这些小文件是inherently small,比如,images     ----->    需要某种容器按某种方式来group这些文件。

    Solutions in Hadoop

    HAR

    • HAR(Hadoop Archives)是用来减轻大量文件给NameNode内存带来的压力的;
    • HAR are probably best used purely for archival purposes.
    • HAR可以把多个文件归档成为一个文件,归档成一个文件后还可以透明的访问每一个文件,并且可以做为mapreduce任务的输入。
    • About HAR:
      • Hadoop Archives是特殊的档案格式。
      • 一个HAR对应一个文件系统目录。
      • HAR包含原数据(_index和_masterinx)和数据文件(part-*)文件

    SequenceFile

    • SeqFile的概念就是将每个小文件放到一个更大的single file中;
    • 比如,有10,000,100KB文件,那么可以写一个程序将他们放到一个单一的SeqFile中,其中你可以使用filename作为key,内容作为value。
    • 这样做的好处:
      • NameNode中占用更少的内存
      • SeqFile是可分割的(splittable),因此很适合与MapReduce;
      • SeqFile支持压缩

    Summary

    • SequenceFile是Hadoop API提供的一种二进制文件,它的数据以<key, value>形式序列化到文件中
    • 这种二进制文件内部使用Hadoop的标准Writable接口实现序列化和反序列化。

    FYI

    满地都是六便士,她却抬头看见了月亮。
  • 相关阅读:
    rsync 安全复制使用程序
    mysql 的sleep线程过多处理方法
    test
    跨域问题的解决
    在VMWare里安装Win11虚机
    Nginx 基础入门(收藏)
    NMXweb版
    ORA12519: TNS:no appropriate service handler found 解决
    关于工作中的第一个项目的个人总结[主要是个人学到的东西,细节]
    处理警告:No configuration found for the specified action
  • 原文地址:https://www.cnblogs.com/wttttt/p/6844038.html
Copyright © 2011-2022 走看看