Hadoop1.x HDFS系统架构

HDFS系统架构

HDFS以流式数据访问(一次写入,多次读取)模式来存储超大文件,运行于商用硬件集群上。超大文件是指GB,TB,PB的文件。目前已经有存储到PB级别的Hadoop集群了。

计算机字节关系

Hadoop1.x HDFS官方架构图

HDFS中的概念

针对上图来分析HDFS中的各个概念。

数据块

每个磁盘都有数据块的概念,在HDFS中也有数据块的概念,HDFS中的所有文件都是分割成块存储在Datanode上的,每个块默认64M。。每个块都有多个副本存储在不同的机器上:默认有3个副本(存放在3台机器上),3个副本不可能存放在同一个机器上。

HDFS副本存放策略

以下是HDFS文件存储架构图

黄色:表示每台机器

绿色:文件被分割出的块

例如:

上图中part-0文件,有2个块。块1和块3只在2个机器上分别出现过2次。

上图中part-1文件,有3个块。块2,4,5分别在不同的机器上各出现3次

HDFS中也可以显示块信息,使用fsck命令

例如:下面的命令将列出文件系统中各个文件由哪些块构成

  1. $ hadoop fsck / -files -blocks

Namenode 和 Datanode

HDFS的设计是主(Master)从(Slave)结构的。也就是,一个管理者(Namenode)和多个工作者(Datanode)组成。

一个HDFS集群包含了一个单独的Namenode和多个Datanode。

管理者(Namenode):Namenode是主节点,它是一个中心服务器,负责管理整个文件系统的命名空间和控制着客户端对文件的访问。它不保存文件的内容,而是保存着文件的元数据(文件名称,所在目录,文件权限,文件拥有者,文件有多少块,每个块有多少副本,块都存在哪些节点上)。元数据保存在内存中。

Namenode维护着整个文件系统树以及树内的所有文件。这些信息以两个文件的形式永久保存在磁盘上。命名空间镜像文件和编辑日志文件

Namenode负责文件的元数据操作,Datanode处理文件内容的读写请求。

跟文件相关的流不经过Namenode,只会询问该文件跟哪个Datanode有关系。

副本存放在哪些Datanode上是由Namenode来控制。读取文件时,Namenode尽量让用户先读取最近的副本。

Namenode全权管理数据块的复制,周期性的从集群中的每个Datanode接收心跳信号和块状态报告。

Namenode和Datanode通信就是通过这两种方式:

心跳信号:意味着该Datanode节点工作正常

块状态报告:包含了一个该Datanode上所有数据块的列表

工作者(Datanode):Datanode的作用很简单,就是存储文件的块数据。以及块数据的校验和。

一个数据块在Ddtanode以文件存储在磁盘上,包括两个文件:数据本身和元数据(数据块的长度,块数据的校验和,时间戳)

Datanode启动后向Namenode注册,通过后,周期性(1小时)的向Namenode上报所有块信息。

心跳是3秒一次,如果超过10分钟没有收到某个Datanode的心跳。则认为该节点不可用。

HDFS架构分析

HDFS架构图

  1. 客户端(HDFS Client):如果想对文件进行读写的话,首先需要通过Namenode来获取一些信息。Namenode存储着命名空间(namespace)和元数据(metadata)
  2. 辅助节点(Secondary):用于辅助Namenode工作,主要工作是nameSpace的备份工作。将Namenode的镜像文件和操作日志进行合并的。
  3. 数据节点(Datanode):Namenode和Datanode通信是通过心跳和块报告。每个文件被分割成不同的块,存在不同的机器的本地磁盘上。

来自为知笔记(Wiz)

时间: 2024-11-10 03:12:52

Hadoop1.x HDFS系统架构的相关文章

大型网站系统架构演化之路

前言 一.最开始的网站架构 二.应用.数据.文件分离 三.利用缓存改善网站性能 四.使用集群改善应用服务器性能 五.数据库读写分离和分库分表 六.使用CDN和反向代理提高网站性能 七.使用分布式文件系统 八.使用NoSql和搜索引擎 九.将应用服务器进行业务拆分 十.搭建分布式服务 小结 前言 一个成熟的大型网站(如淘宝.天猫.腾讯等)的系统架构并不是一开始设计时就具备完整的高性能.高可用.高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计

HDFS是什么?HDFS适合做什么?我们应该怎样操作HDFS系统?(第3篇)

第四章  HDFS文件系统 Hadoop 附带了一个名为 HDFS(Hadoop分布式文件系统)的分布式文件系统,专门存储超大数据文件,为整个Hadoop生态圈提供了基础的存储服务. 本章内容: 1) HDFS文件系统的特点,以及不适用的场景 2) HDFS文件系统重点知识点:体系架构和数据读写流程 3) 关于操作HDFS文件系统的一些基本用户命令 1. HDFS特点: HDFS专为解决大数据存储问题而产生的,其具备了以下特点: 1) HDFS文件系统可存储超大文件 每个磁盘都有默认的数据块大小

Hbase系统架构

HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型.它存储的是松散型数据. HBase特性: 1 高可靠性 2 高效性 3 面向列 4 可伸缩 5 可在廉价PC Server搭建大规模结构化存储集群 HBase是Google BigTable的开源实现,其相互对应如下: Google HBase文件存储系统  GFS  HDFS海量数据处

HBase系统架构及数据结构(转)

原文链接:Hbase系统架构及数据结构 HBase中的表一般有这样的特点: 1 大:一个表可以有上亿行,上百万列 2 面向列:面向列(族)的存储和权限控制,列(族)独立检索. 3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏. 下面一幅图是Hbase在Hadoop Ecosystem中的位置. 二.逻辑视图 HBase以表的形式存储数据.表有行和列组成.列划分为若干个列族(row family) Row Key 与nosql数据库们一样,row key是用来检索记

日志收集分析系统架构

日志收集分析系统架构   一.部署架构 日志收集系统一般包括如图所示三层.Web服务器层,日志收集层,日志存储层.Web服务器层是日志的来源,一般部署web应用供用户访问,产生日志,该节点上一般需要部署日志收集程序的agent.日志收集层手机web服务器产生的日志传输给日志存储层,存储层一般使用分布式文件系统HDFS,日志可以存储在hdfs上或者hbase上. 以scribe作为日志收集系统架构,scribe分为scribe agent和scribe server 以kafka作为日志收集系统架

HBase 系统架构

HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型.它存储的是松散型数据. HBase特性: 1 高可靠性 2 高效性 3 面向列 4 可伸缩 5 可在廉价PC Server搭建大规模结构化存储集群 HBase是Google BigTable的开源实现,其相互对应如下:   Google HBase 文件存储系统 GFS HDFS 海量数据处理 MapRedu

列式存储 HBase 系统架构学习

   一.Hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务.因此,它可以容错地存储海量稀疏的数据. HBase在列上实现了BigTable论文提到的压缩算法.内存操作和布隆过滤器.HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据

大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台. 亮点一:真实环境还原,课程采用了VM环境重现大网站集群服务器环境,真实环境还原再现. 亮点二:基础实用,细节决定成败,课程内容在演练过程中重点介绍各种细节,保证初级人员快速入门及高级进阶. 亮点三:讲师丰富的海量平台运作经验 讲师tom5多

列式存储hbase系统架构学习

一.Hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务.因此,它可以容错地存储海量稀疏的数据.HBase在列上实现了BigTable论文提到的压缩算法.内存操作和布隆过滤器.HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据,也可以