Hadoop点滴-Hadoop分布式文件系统
- Hadoop自带HDFS,即 Hadoop Distributed FileSystem(不是HaDoop FileSystem 的简称)
- 适用范围
- 超大文件:最新的容量达到PB级
- 流式数据访问:HDFS的构建思路:一次写入、多次读取时最高效的访问模式
- 低时间延迟的数据访问不适用HDFS
- 大量的小文件的限制:由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。根据经验,每个文件、目录、数据块的存储信息大约占150字节。举例来说,如果有一百万个文件,每个文件占用一个数据块,那至少需要300MB的内存。尽管存储上百万文件时可行的,但是存储数十亿个文件就超出了当前硬件的能力。
- 不支持多用户写入、任意修改文件:HDFS中的文件写入只支持单个写入者,而且写操作总是已只添加的方式在文件末尾写数据。不支持多个写入者操作,也不支持在文件的任意位置进行修改。
- 数据块
- 磁盘块一般为512字节,普通文件系统块一般为几千字节,HDFS块默认128MB
- 与普通文件系统不同,一个小于块大小的文件,不会占据整个块的大小(不会浪费块剩余空间)。如1MB的文件,只占用1MB空间,而不是128MB空间
- 块的大小不能设置的太大,Mapreduce中map任务通常一次只处理一个块中的数据,如果块太大,任务数据太少(少于集群中节点的数量),那么集群的分布式计算就发挥不出来
- 事实上,尽管不常见,也可存储一个文件,占用整个HDFS,该文件的块占满集群中的所有磁盘。
- 使用块,可以将数据存储于文件权限分开设计,简化设计框架
- namenode节点:整个集群只有1个namenode节点,管理文件系统的命名空间,他维护着系统树和整个树内所有的文件和目录。这些信息以两个文件形式永久保存在“本地磁盘”上,但并不永久保存块的位置信息,因为这些信息会在系统启动时根据datanode信息重建。
- datanode节点:可以有多个,受客户端或namenode调度,并且定期向namenode节点发送他们所存储的块列表。负责存储并检索数据块。
- 如果运行namenode节点损坏,文件系统上所有的文件将会丢失,对namenode实现容错非常重要
- 方法一:备份哪些组成文件系统元数据持久状态的文件,可以通过配置,是namenode节点在本地和NFS上同时存储持久状态(类似于oracle归档日志的多路写入)
- 方法二:运行一个辅助namenode,但不能用作namenode。辅助namenode的重要作用是定期合并编辑日志与命名空间镜像,运行在单独的机器上,需要占用大量CPU时间,并需要与主namenode一样大小的内存。但是,辅助namenode保存的状态总是滞后于主节点,所以主节点全部失效时,难免会丢失部分数据。在这种情况下,一般把存储在NFS上的namenode元数据复制到辅助namenode并作为新的主节点运行
- 联邦HFDS:在2.x发行版本中引入的联邦HDFS允许通过添加namenode实现扩展,其中每个namenode管理文件系统命名空间的一部分。例如一个namenode管理/user目录下所有的文件,而另一个namenode管理/share目录下的所有文件。
- 在联邦环境下,每个namenode维护一个命名空间卷,由命名空间的元数据和一个数据块池组成,数据块池包含该命名空间下文件的所有的数据块。命名空间卷之间是相互独立的,亮亮之间并不相互通信,设置其中一个namenode失效也不会影响其他namenode的可用性。数据块池不再进行切分,因此集群中的所有datanode需要注册到每个namenode
- 要想访问联邦HDFS集群,客户端需要使用挂在数据表将文件路径映射到namenode。
- 高可用
- Hadoop2增加了HDFS高可用(HA)的支持,配置了一对 活动-备用(active-standby)namenode
- namenode之间需要通过高可用
Hadoop点滴-Hadoop分布式文件系统的更多相关文章
- Hadoop基础-HDFS分布式文件系统的存储
Hadoop基础-HDFS分布式文件系统的存储 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS数据块 1>.磁盘中的数据块 每个磁盘都有默认的数据块大小,这个磁盘 ...
- 【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
1. HDFS概述 Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪 ...
- Hadoop点滴-Hadoop的IO
Hadoop自带一套原子操作用于数据的I/O操作. 如果系统中需要处理的数据量达到Hadoop的处理极限时,数据被损害的概率还是很高的 检测数据是否被损害的常见措施是,在数据第一次被引进系统时,计算校 ...
- 第3章:Hadoop分布式文件系统(1)
当数据量增大到超出了单个物理计算机存储容量时,有必要把它分开存储在多个不同的计算机中.那些管理存储在多个网络互连的计算机中的文件系统被称为"分布式文件系统".由于这些计算机是基于网 ...
- Hadoop 学习之路(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是Hadoop下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 2 ...
- Hadoop 系列(一)—— 分布式文件系统 HDFS
一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...
- Hadoop 三剑客之 —— 分布式文件存储系统 HDFS
一.介绍 二.HDFS 设计原理 2.1 HDFS 架构 2.2 文件系统命名空间 2.3 数据复制 2.4 数据复制的实现原理 2.5 副本的选择 2 ...
- [Hadoop 周边] Hadoop技术生态圈
Hadoop版本演进 当前Hadoop有两大版本:Hadoop 1.0和Hadoop 2.0. Hadoop1.0被称为第一代Hadoop,由分布式文件系统HDFS和分布式计算框架MapReduce组 ...
- Hadoop学习------Hadoop安装方式之(二):伪分布部署
要想发挥Hadoop分布式.并行处理的优势,还须以分布式模式来部署运行Hadoop.单机模式是指Hadoop在单个节点上以单个进程的方式运行,伪分布模式是指在单个节点上运行NameNode.DataN ...
随机推荐
- C#开发BIMFACE系列6 服务端API之获取文件信息
在<C#开发BIMFACE系列4 服务端API之源上传文件>.<C#开发BIMFACE系列5 服务端API之文件直传>两篇文章中详细介绍了如何将本地文件上传到BIMFACE服务 ...
- JVM宏观认知&&内存结构
JVM宏观认知 1.什么是虚拟机? 虚拟机是一种软件. 可分为系统虚拟机(仿真物理机)和程序虚拟机(执行单个计算机程序,比如JVM). 2.什么是Java虚拟机(JVM)? JVM是一种将字节码转化为 ...
- 2019 Multi-University Training Contest 1
2019 Multi-University Training Contest 1 A. Blank upsolved by F0_0H 题意 给序列染色,使得 \([l_i,r_i]\) 区间内恰出现 ...
- Codeforces Round #480 (Div. 2) C - Posterized
题目地址:http://codeforces.com/contest/980/problem/C 官方题解: 题解:一共256个像素网格,可以把这个256个分组,每个分组大小<=k.给出n个像素 ...
- 关于Math常用的方法
1. 常用的Math用法 Math.random() //0-1 的随机数 Math.round() //四舍五入取整 Math.ceil() //向上取整 Math.floor() //向下取整 M ...
- Linux之acl库的安装与使用(限制Linux某用户的访问权限)
acl库 作用:限制Linux某用户的访问权限 acl库的安装 首先github中下载acl代码: git clone https://github.com/acl-dev/acl 进入acl, 执行 ...
- linux部署html代码到linux服务器,并进行域名解析
本博客主要是说一下,如何将本地写好的html代码部署到linux服务器,并进行解析.下一篇博客将写一下,如何将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法. 1 ...
- 解决php中文乱码的两种方法
第一种是添加html标签变为如下格式: <html> <head> <meta http-equiv="Content-Type" content=& ...
- java读写文件IO
package Common.readFile; import Common.tool.User; import com.fasterxml.jackson.databind.ObjectMapper ...
- 前端利器躬行记(5)——Git
Git是一款开源的分布式版本控制系统,它的出现和Linux紧密相关.Linux内核项目组为了能更好地管理和维护Linux内核开发,于2002年开始启用商业的分布式版本控制系统BitKeeper.虽然软 ...