HDFS基本介绍

  • HDFS的Master-Slave结构
  • HDFS角色作用简介
  • HDFS 分块存储
  • 抽象成数据块的好处
  • HDFS 副本机制
  • 名字空间(NameSpace)
  • NameNode 功能
  • DataNode 功能
  • 机架感知原理

HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

HDFS使用Master和Slave结构对集群进行管理。一般一个 HDFS 集群只有一个 Namenode 和一定数目的Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

HDFS的Master-Slave结构


1)HDFS集群包括,NameNode和DataNode以及Secondary Namenode。
2)NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
3)DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个datanode上存储多个副本。
4)Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。最主要作用是辅助namenode管理元数据信息

HDFS角色作用简介

NameNode(Master)管理者 - 只负责管理,管理集群内各个节点。SecondaryNameNode 辅助管理 – 只负责辅助NameNode管理工作。DataNode(Slave) 工作者,是负责工作,周期向NameNode汇报,进行读写数据。

HDFS 分块存储

hdfs将所有的文件全部抽象成为block块来进行存储,不管文件大小,全部一视同仁都是以block块的统一大小和形式进行存储,方便我们的分布式文件系统对文件的管理所有的文件都是以block块的方式存放在HDFS文件系统当中,在Hadoop1当中,文件的block块默认大小是64M,
Hadoop2当中,文件的block块大小默认是128M,block块的大小可以通过hdfs-site.xml当中的配置文件进行指定
 <property><name>dfs.block.size</name><value>块大小 以字节为单位</value>//只写数值就可以</property>

数据超过128M,便进行切分,如果没有超过128M,就不用切分,有多少算多少,不足128M的也是一个快。这个快的大小就是100M,没有剩余28M这个概念。

抽象成数据块的好处


1.  一个文件有可能大于集群中任意一个磁盘 20T/128 = xxx块,这些block块属于一个文件
2.  使用块抽象而不是文件,可以简化存储子系统。
3.  块非常适合用于数据备份进而提供数据容错能力和可用性

块缓存

通常DataNode从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在DataNode的内存中,
以堆外块缓存的形式存在。默认情况下,一个块仅缓存在一个DataNode的内存中,当然可以针对每个文件配置
DataNode的数量。作业调度器通过在缓存块的DataNode上运行任务,可以利用块缓存的优势提高读操作的性能。

HDFS 副本机制

HDFS视硬件错误为常态,硬件服务器随时有可能发生故障。为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。
应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。数据副本默认保存三个副本,我们可以更改副本数以提高数据的安全性在hdfs-site.xml当中修改以下配置属性,即可更改文件的副本数
<property><name>dfs.replication</name><value>3</value>
</property>

低版本Hadoop副本节点选择第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。第二个副本和第一个副本位于不相同机架的随机节点上。第三个副本和第二个副本位于相同机架,节点随机。


Hadoop2.7.2副本节点选择第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。第二个副本和第一个副本位于相同机架,随机节点。第三个副本位于不同机架,随机节点。

名字空间(NameSpace)

HDFS 支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。
文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。 Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被Namenode 记录下来。 HDFS 会给客户端提供一个统一的目录树,客户端通过路径来访问文件,
形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。 

NameNode 功能

我们把目录结构及文件分块位置信息叫做元数据。Namenode 负责维护整个hdfs文件系统的目录树结构,
以及每一个文件所对应的 block 块信息(block 的id,及所在的datanode 服务器)。
Namenode节点负责确定指定的文件块到具体的Datanode结点的映射关系。在客户端与数据节点之间共享数据。

管理Datanode结点的状态报告,包括Datanode结点的健康状态报告和其所在结点上数据块状态报告,
以便能够及时处理失效的数据结点。

总结:NameNode 的功能1.维护目录树。2.Namenode节点负责确定指定的文件块到具体的Datanode结点的映射关系。3.管理Datanode结点的状态报告。

DataNode 功能

文件的各个 block 的具体存储管理由 datanode 节点承担。每一个 block 都可以在多个datanode 上。
Datanode 需要定时向 Namenode 汇报自己持有的 block信息。 存储多个副本(副本数量也可以通过参数设置
dfs.replication,默认是 3)。
向Namenode结点报告状态。每个Datanode结点会周期性地向Namenode发送心跳信号和文件块状态报告。心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令如复制块数据到另一台机器,
或删除某个数据块。如果超过10分钟没有收到某个datanode的心跳,则认为该节点不可用。DataNode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。
执行数据的流水线复制。当文件系统客户端从Namenode服务器进程获取到要进行复制的数据块列表后,
完成文件块及其块副本的流水线复制。一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,
一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。


总结:DataNode 的功能1.负责管理它所在结点上存储的数据的读写,及存储数据。2.向Namenode结点报告状态。3.执行数据的流水线复制。

机架感知原理

机架感知需要人为进行配置,编写Python脚本“RackAware.py”。内容为服务器IP与交换机的对应关系。(开源hadoop,使用RackAware.sh)

#!/usr/bin/python
#-*-coding:UTF-8 -*-
import sys  rack = {  "12.12.3.1":"SW6300-1",  "12.12.3.2":"SW6300-1",  "12.12.3.3":"SW6300-1",  "12.12.3.4":"SW6300-1",  "12.12.3.5":"SW6300-1",  "12.12.3.6":"SW6300-1",  "12.12.3.25":"SW6300-2",  "12.12.3.26":"SW6300-2",  "12.12.3.27":"SW6300-2",  "12.12.3.49":"SW6300-3",  "12.12.3.50":"SW6300-3",  "12.12.3.51":"SW6300-3",  "12.12.3.73":"SW6300-4",  "12.12.3.74":"SW6300-4",  "12.12.3.75":"SW6300-4",  }
if __name__=="__main__":  print "/" + rack.get(sys.argv[1],"SW6300-1-2")

使用以下命令验证

[root@node01 sbin]# python RackAware.py 12.12.3.1
/SW6300-1
[root@node01 sbin]# python RackAware.py 12.12.3.25
/SW6300-2
[root@node01 sbin]# python RackAware.py 12.12.3.75
/SW6300-4
[root@node01 sbin]# python RackAware.py 12.12.3.100
/SW6300-1-2

编辑core-site.xml配置文件,将脚本配置为topology.script.file.name的值

<property>
<name>topology.script.file.name</name>
<value>/home/bigdata/apps/hadoop/etc/hadoop/RackAware.py </value>
</property>

觉得有用的点个赞吧

HDFS(一)HDFS基本介绍相关推荐

  1. JAVA大数据(二) Hadoop 分布式文件系统HDFS 架构,MapReduce介绍,Yarn资源调度

    文章目录 1.分布式文件系统HDFS 1.HDFS的来源 2.HDFS的架构图之基础架构 2.1 master/slave 架构 2.2 名字空间(NameSpace) 2.3 文件操作 2.4副本机 ...

  2. HDFS Federation(HDFS 联盟)介绍

    1. 当前HDFS架构和功能概述 我们先回顾一下HDFS功能.HDFS实际上具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage man ...

  3. HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo

    26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式 ...

  4. HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo...

    26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式 ...

  5. 【HDFS】HDFS与getconf结合使用,获取配置信息

    1.获取所有参数 [hadoop@node01 ~]$ hdfs getconf hdfs getconf is utility for getting configuration informati ...

  6. 【HDFS】HDFS操作命令

    1.上传文件 #用法:hdfs dfs -put /本地路径 /hdfs路径 hdfs dfs -put /linux本地磁盘文件 /hdfs路径文件 hdfs dfs -copyFromLocal ...

  7. HDFS High Availability体系介绍(Using the Quorum Journal Manager)

    一.背景 HDFS集群中只有一个Namenode,这就会引入单点问题:即如果Namenode故障,那么这个集群将不可用,直到Namenode重启或者其他Namenode接入. 有两种方式会影响集群的整 ...

  8. HDFS操作及命令介绍

    HDFS常用命令 <path> - hdfs中一个或多个路径,如果未指定,默认为/user/<currentUser> <localsrc> - 本地文件系统的的一 ...

  9. HDFS(一) HDFS设计目标

    介绍 HDFS(Hadoop Distributed File System)是一个分布式文件系统,可以运行在廉价的硬件上.与其他已有的分布式文件系统类似,但是最明显的区别就是HDFS时一个高容错.可 ...

  10. php 连接hadoop hdfs,Hadoop HDFS操作

    启动HDFS 首先,格式化配置HDFS文件系统,打开NameNode(HDFS服务器),然后执行以下命令. $ hadoop namenode -format 格式化HDFS后,启动分布式文件系统.以 ...

最新文章

  1. 内存检测工具Dr. Memory的使用
  2. Oracle 创建及调用存储过程,脚本示例
  3. Python官方文档学习心得(第六篇)
  4. mac 黑窗口连接mysql_mac系统下mysql环境变量设置及远程连接
  5. 用VB轻松调用其他程序
  6. 信号与系统考研复习例题详解_小语种日语日本文学复习考研资料加藤周一《日本文学史序说(上)》笔记和考研真题详解...
  7. Python3不需要uuid:导入/usr/local/lib/python3.x/site-packages/uuid.py提示if not 0 time_low 32L错误
  8. .NET 2.0 调用FFMPEG
  9. Hadoop2.7.1+Hbase1.2.1集群环境搭建(3)1.x和2.x都支持的集群安装方式
  10. ctfshow-WEB-web2
  11. 【手机上的APP都是用什么编程语言写的】
  12. 中青年人脑白质的年龄效应和性别差异:DTI、NODDI 和 q 空间研究
  13. 当前电子计算机发展的局限性,当前高中信息技术教学现状及教学改革探究
  14. 技术宅教你如何煎一个特别牛逼且装逼的牛排
  15. BACnet协议读取与发送
  16. 线性插值、抛物插值、Lagrange插值 | Lagrange拉格朗日插值法(一)
  17. Oracle数据库中processes参数设置
  18. 2018沈阳J How Much Memory Your Code Is Using?
  19. 信息系统项目管理师,第四版应该如何应对
  20. matlab负无穷大到正无穷大怎么打,matlab中怎么定义n从负无穷到正无?

热门文章

  1. uniapp学习,阿里云图标引入的三种方式,小程序头部底部搭建,
  2. python opencv 背景建模 混合高斯模型
  3. linux下查看磁盘分区的文件系统格式
  4. 转载:道路车辆先进驾驶辅助系统(ADAS)术语及定义
  5. Camera-FOV
  6. 基于PaddleRec框架Mind推荐算法实现穿衣搭配推荐
  7. 机器学习 scikit-learn1 预测贷款用户是否会逾期
  8. ROS:使用usb_cam软件包调试usb摄像头
  9. 计算机学的建模是什么意思,cg建模是什么意思
  10. 贴吧python登录_爬虫:利用python完成百度贴吧数据采集