hadoop不支持传统文件系统的挂载,使得流式数据装进hadoop变得复杂。

hadoo中,文件只是目录项存在;在文件关闭前,其长度一直显示为0:如果在一段时间内将数据写到文件却没有将其关闭,则若网络中断后,则我们得到的仅仅是一个空白文件;故:最好编写小文件,这样能尽快将其关闭-----错误。

【mapper 单个文件块 1:1】

由于hdfs的元数据保存在NameNode的内存中,因此创建的文件越多,所需的RAM就越多。从MapReduce角度看,小文件会导致效率低下。通常情况下,,每个Mapper都会被分配单个文件块作为

输入(除非使用了某些压缩编码)。如果过多的小文件,那么与待处理的数据相比,与待处理的数据相比,启动工作进程的代价就过高。这种碎片会导致更多的Mapper任务,使得总的Job运行时间增加。

【内存的容量严重制约了集群的扩展】

0-在HDFS中,任何Block、文件或者目录在内存中均以对象的形式存储,每个对象约占150Byte。若有1千万小文件,每个小文件占用1个Block,则NameNode约需要2GB空间:内存的容量严重制约了集群的扩展;

1-HDFS最初是为流式访问大文件而开发的,如果访问大量小文件,则需要不断从一个DataNode跳到另一个DataNode,严重影响了性能,导致最后处理大量小文件的速度远远小于处理同等大小的大文件的速度;每个文件要占用一个Solt,而Task启动将消耗大量的时间,从而导致大部分时间都耗费在启动和释放Task上。

【客户端 自身机制】

用户程序合并:

0-HadoopArchive SequenceFile CombineFileInputFormat

Q1、HDFS可以存储比单个磁盘空间还要大的文件吗?如果可以,什么原理?

Q2、HDFS是怎么实现数据的高可用(High Availability,HA)?

Q3、HDFS中让块分布在同一机架还是多个机架?

参考资料

(1)

HDFS特点:

1、大文件

大,huge,以兆字节为单位,100+MB;

小文件影响HDFS的性能的原因:元数据会消耗主节点NameNode的大量内存;

2、顺序访问

HDFS上的读和写操作都应该按照顺序处理。

只要文件的读取时有序的,MapReduce和其他执行引擎就可以高效地、任意次数地读取HDFS上的文件。

(2)

块抽象

块,block,由于存储文件的块抽象,你可以存储任意大小的文件。

块大小,blocksize,默认128MB。一个100MB的文件仅会占用一个HDFS块上的100MB。块会分布在多个节点上,可以存储比单个磁盘空间还要大的文件。

(3)

大多数系统通过(通常2个节点之间)复制整个数据结构来支持数据的高可用HA:这确保了如果其中一个节点或数据源失效了,另一个节点或数据的副本仍然可用的。

HDFS通过数据块的抽象在此基础上做了扩展,实现了2次改进:

i、默认情况下,HDFS想数据复制2次(而非1次),使得每个块共有3个副本;

ii、HDFS并不是把节点A上的所有块复制到节点B,而是吧这些块分布到多个节点之上;

示例:

HDFS把块默认复制2次至3个不同节点。

(4)

Hadoop components are rack-aware.

机架感知、Rack Awareness。

数据中心的机器通常放在机架或者某些用于承载服务器的容器中。一个机架上可以放置很多台机器。这些机器通宵场距离很近而且网络上下文中也很近。

相同机架上机器之间的连接通常比跨机器之间的连接更高效。通过向HDFS提供这种无理架构,分布式系统的性能和弹性都会得到改善。

可以让块分布在同一机架的多个节点上,这样连通性不收网络带宽的限制。

但让块分布在多个机架张,这样即使整个机架上的服务器全部失效,也可以保证块的数据不丢失。

hadoop 小文件 挂载 小文件对NameNode的内存消耗 HDFS小文件解决方案 客户端 自身机制 HDFS把块默认复制3次至3个不同节点。的更多相关文章

  1. 有关Java内存溢出及内存消耗的小知识

    内存溢出原理: 我们知道,Java程序本身是不能直接在计算机上运行的,它需要依赖于硬件基础之上的操作系统和JVM(Java虚拟机). Java程序启动时JVM都会分配一个初始内存和最大内存给这个应用程 ...

  2. 合并hive/hdfs小文件

    磁盘: heads/sectors/cylinders,分别就是磁头/扇区/柱面,每个扇区512byte(现在新的硬盘每个扇区有4K) 文件系统: 文件系统不是一个扇区一个扇区的来读数据,太慢了,所以 ...

  3. 解决HDFS小文件带来的计算问题

    hive优化 一.小文件简述 1.1. HDFS上什么是小文件? HDFS存储文件时的最小单元叫做Block,Hadoop1.x时期Block大小为64MB,Hadoop2.x时期Block大小为12 ...

  4. HDFS 小文件处理——应用程序实现

    在真实环境中,处理日志的时候,会有很多小的碎文件,但是文件总量又是很大.普通的应用程序用来处理已经很麻烦了,或者说处理不了,这个时候需要对小文件进行一些特殊的处理——合并. 在这通过编写java应用程 ...

  5. python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名。

    python小练习1:设计这样一个函数,在桌面的文件夹上创建10个文本,以数字给它们命名. 使用for循环即可实现: for name in range(1,11): desktop_path='C: ...

  6. hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

    sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeor ...

  7. Hadoop HDFS分布式文件系统设计要点与架构

      Hadoop HDFS分布式文件系统设计要点与架构     Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群 ...

  8. hadoop 提高hdfs删文件效率----hadoop删除文件流程解析

    前言 这段时间在用hdfs,由于要处理的文件比较多,要及时产出旧文件,但是发现hdfs的blocks数一直在上涨,经分析是hdfs写入的速度较快,而block回收较慢,所以分心了一下hadoop删文件 ...

  9. 【Hadoop】HDFS - 创建文件流程详解

    1.本文目的 通过解析客户端创建文件流程,认知hadoop的HDFS系统的一些功能和概念. 2.主要概念 2.1 NameNode(NN): HDFS系统核心组件,负责分布式文件系统的名字空间管理.I ...

随机推荐

  1. CSDN博客已经打不开了

    CSDN博客已经打不开了,移动和联通的网都一样,怀疑是辽宁节点到骨干网出现故障 tracert结果 4跳和5跳本来是国际出口,相当于出国绕了一圈再回来访问 Hop IP地址 所在地 耗时(ms) 1 ...

  2. 洛谷——P1462 通往奥格瑞玛的道路

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  3. [Js]删除数组指定元素

    写在前面 在最近的项目中,有用到js对数组的操作,之前自己几乎没有用到这种方法,这里就记录一下,算是对学到的东西的一种总结吧. 数组对象splice方法 splice() 方法向/从数组中添加/删除项 ...

  4. mysql之select,insert,delete,update

    写在前面 上篇文章学习了创建数据库和数据表,这篇文章将学习对数据表的增删改查操作. 系列文章 mysql之创建数据库,创建数据表 一个例子 上篇文章中,创建了数据库和数据表,数据表中还没有数据,这里我 ...

  5. 深入浅出 Cocoa 之 Core Data(4)- 使用绑定

    深入浅出 Cocoa 之 Core Data(4)- 使用绑定 罗朝辉(http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 前面讲解了 Core Data 的框架, ...

  6. MySQL开发36条军规

    转载地址:http://blog.itpub.net/22664653/viewspace-723506/ 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过 ...

  7. java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数

    如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他.下面是代码: package com.test; public class TestClass{ // 成员变量赋值第一个 ...

  8. 查看Linux上MySQL版本信息

    如果MySQL是用rpm或者yum安装的,可用 #rpm -qa|grep mysql查看. 如: [root@asd76 ~]# rpm -qa|grep mysqlmysql-5.1.73-3.e ...

  9. Win2003 IIS 安装方法 图文教程

    最近水一水 质量不高 见谅 一般大家先安装好win2003系统,图文教程 Win2003 服务器系统安装图文教程要通过控制面板来安装.具体做法为: 1. 进入“控制面板”. 2. 双击“添加或删除程序 ...

  10. bat文件转换为exe文件

    批处理文件转换为exe文件(简单的处理文件),点击下载 使用超简单的了,不多说.