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

    满地都是六便士,她却抬头看见了月亮。
  • 相关阅读:
    jmeter:dubbo接口测试
    聊聊基准测试的MVP方案
    建立团队的性能文化
    针对 Intellij IDEA 2018.2 版本 异常退出问题
    maven settings.xml配置优化
    Windows安装MySQL
    String的intern()方法详解
    Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法
    Iterator迭代器快捷键
    $.each $.map $.filter 区别 Script
  • 原文地址:https://www.cnblogs.com/wttttt/p/6844038.html
Copyright © 2011-2022 走看看