HDFS是什么?

HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统。它是谷歌的GFS提出之后出现的另外一种文件系统。它有一定高度的容错性,而且提供了高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS 提供了一个高度容错性和高吞吐量的海量数据存储解决方案。

优点

1、存储超大文件

2、标准流式访问:“一次写入,多次读取”

3、运行在廉价的商用机器集群上

不足

1、不能满足低延迟的数据访问

2、无法高效存储大量小文件

3、暂时不支持多用户写入及随意修改文件

HDFS概念理解

hdfs架构图如下:

1、文件块(图中1、2、3、4带颜色的小正方形)

文件分成块存储(默认64M,如今版本是128是M),多台计算机存储。DateNode中存储以数字编号的方块(见上图)用于备份,每个块都会复制到几台机器上(默认3台),如果一个块不可用,可从其它地方读取副本。副本是3,表示一共3处有该块。如果配置文件中副本设置为 4 ,但是结果只有2台datanode,最后副本还是2

1000个1M的小文件会占用1024个块和1024个 inode,但是他只是占用1个块中的1M,不会占用整个空间,不过由于inode存储在NameNode的内存里,如果NameNode内存不足以存储inode,那么就不能再存储文件了、所以说HDFS并不适合存储小文件,有时候还要将小文件合并为大文件。

显示块信息命令:

hdfs fsck / -files –blocks //列出根目录下各个文件由哪些块存储。

//它只是从NameNode获取信息,不与DateNode交互。

hdfs fsck / -files –blocks //列出根目录下各个文件由哪些块存储。

//它只是从NameNode获取信息,不与DateNode交互。

2、 NameNode和DataNode

NameNode(名字节点): 管理文件系统命名空间;维护文件系统树内所有文件和目录,记录每个文件在哪个DateNode的位置和副本信息,协调客户端对文件的访问。 以两种文件格式存在:

fsimage_*:元数据镜像文件,即系统的目录树,包括文件目录和inodes元信息(文件名,文件大小,创建时间,备份级别,访问权限,block的size,所有block的构成),每个inode是hdfs的一个代表文件或者目录的元数据。这个镜像文件相当于hdfs的元数据额数据库文件。

edits_*:编辑日志文件,也就是事务日志文件,也就是针对文件系统做的修改操作记录,记录元数据的变化,相当于操作日志文件。一个文件的创建,追加,移动等。 NameNode内存中存储的是=fsimage+edits 检查点:NameNode启动时,从磁盘中读取上面两种文件,然后把edits_*里面记录的事务全部刷新到 fsimage_*中,这样就截去了旧的edits_*事务日志,这个过程叫checkpoint。

上面文件在~/hadoop-2.6/dfs/name/current目录下(在hdfs-site.xml) ,除此之外,还有VERSION(版本信息,包含文件系统唯一标识符)和seen_txid(事务管理,里面保存一个整数,表示edits_*的尾数)两个文件。

DataNode(数据节点):存储,检索数据块。定期向NameNode发送所存储的块的列表。存储的块大小是64M,并且尽量把数据块分布不同的DateNode节点上。

上图某文件被分成4块,在多个DataNode中存储,而且每块都复制两个备份,存储在其它DataNode中。这些数据的存储目录/home/hduser/hadoop-2.6/dfs/data(dfs-site.xml中指定)。例如下面文件:/home/hduser/hadoop-2.6/dfs/data/current/BP-1111-ip-2222/current/finalized/subbdir0/sudir0,该目录下的文件包括blk_{id}和blk_{id}.meta,前者是二进制格式的数据块,后者是数据块的元信息(版本信息,类型信息 )

DataNode负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据的创建,删除和复制工作。如果NameNode数据损坏,HDFS所有文件都不能访问,为了保证高可用性,Hadoop对NameNode进行了补充,即Sencondary NameNode。

3、 Secondary NameNode结点

系统同步运行一个Secondary NameNode,也称二级NameNode,周期的备份NameNode,它可以用来恢复NameNode。由于有一定的滞后,所以会带来数据的损失。为了防止宕机,一般我们会把它放在另外一台计算机。使用hdfs-site.xml中dfs.namenode.secondary.http-address属性可以通过浏览器查看Secondary NameNode的运行状态。 默认是1小时,从NameNode获取fsimage和edits进行合并,然后再发送给namenode,减少namenode的工作量。

HDFS体系架构

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。 一次写,多次读取:一个文件一旦创建,写入,关闭之后就不需要修改了。

读写流程如下: 读流程:客户端向NameNode请求访问某个文件,NameNode返回该文件位置在哪个DataNode上,然后客户端从DataNode上读取数据。 写流程:客户端向NameNode发出写文件写请求,NameNode告诉客户端向哪个DataNode写文件,然后客户端将文件写入该DataNode节点,随后该 DataNode将该文件自动复制到其它DataNode节点上,默认三份备份。

HDFS常见节点管理:1 节点添加 可扩展性是一个重要特征,往HDFS集群中添加一个节点步骤如下:

1) 对新节点进行系统配置(hostname,hosts,jdk,防火墙等)

2) 对新节点进行hadoop的安装和配置,和其它DataNode一样。

3) 在NameNode中修改~/hadoop-2.6/etc/hadoop/Slaves文件,加入新节点名称。

4) 启动(start-all.sh,或者start-dfs.sh,start-yarn.sh)

1) 对新节点进行系统配置(hostname,hosts,jdk,防火墙等)

2) 对新节点进行hadoop的安装和配置,和其它DataNode一样。

3) 在NameNode中修改~/hadoop-2.6/etc/hadoop/Slaves文件,加入新节点名称。

4) 启动(start-all.sh,或者start-dfs.sh,start-yarn.sh)

2 负载均衡 HDFS的数据在各个DataNode中的分布可能不均匀,尤其是DataNode出现故障或者新增节点时,采用下面命令可以重新平衡DataNode的数据块分布: $start-balancer.sh

3 安全机制 由于NameNode统一调度,没有它文件系统无法使用,采用下面两种机制确保其安全:

1) 把NameNode存储的元数据转移到其它文件系统上。

2) 使用Secondary NameNode同步备份。

1) 把NameNode存储的元数据转移到其它文件系统上。

2) 使用Secondary NameNode同步备份。

Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享相关推荐

  1. Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书) - 电子书下载(高清版PDF格式+EPUB格式)...

    Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 (大数据技术丛书)-董西成著 在线阅读                   百度网盘下载(ihhy) 书名:Hadoop技术内幕:深 ...

  2. 你理解常见如阿里,和友商大数据平台的技术体系差异以及发展趋势和技术瓶颈,在存储和计算两个方面进行概述

    题目: 你理解常见如阿里,和友商大数据平台的技术体系差异以及发展趋势和技术瓶颈,在存储和计算两个方面进行概述. 参考答案:开放性问题,无标准答案.

  3. python架构师工作职责_大数据架构师工作的岗位职责

    大数据架构师负责研发技术发展方向,新技术领域的探索,将新技术应用到公司大数据平台,提升公司效能.下面是学习啦小编整理的大数据架构师工作的岗位职责. 大数据架构师工作的岗位职责1 职责: 1.负责大数据 ...

  4. 大数据平台架构浅析——以讯飞大数据平台Odeon为例

    文章目录 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 功能 数据采集 数据开发 数据分析 数据编程 补充 大数据平台架构解析--以讯飞大数据平台Odeon为例 定义 Odeon大数据平 ...

  5. Web网站架构演变—高并发、大数据

    转 Web网站架构演变-高并发.大数据 2018年07月25日 17:27:22 gis_morningsun 阅读数:599 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可 ...

  6. 【企业架构设计实战】5 大数据架构设计

    数据架构概述 什么是数据? 一个企业的数字化核心是数据,数据化的价值依赖于数据的标准和质量,数据对一个企业来说至关重要,它也是整个信息化建设及企业架构的核心.数据具有多样性,有结构化的.非结构化的,与 ...

  7. python架构师工作职责_大数据架构师岗位的工作职责

    大数据架构师需要负责深入理解业务需求,对业务建模,设计系统架构,满足业务需求.以下是学习啦小编整理的大数据架构师岗位的工作职责. 大数据架构师岗位的工作职责1 职责: 1.负责数据仓库建设,基于数据驱 ...

  8. 民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?【转】...

    早在今年的上半年我应邀参加了由 Smartbi 主办的一个小型数据分析交流活动,在活动现场第一次了解到了民生银行的阿拉丁项目.由于时间关系,嘉宾现场分享的内容非常有限.凭着多年对行业研究和对解决方案的 ...

  9. 民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?...

    本文为天善智能联合创始人吕品原创. 早在今年的上半年我应邀参加了由 Smartbi 主办的一个小型数据分析交流活动,在活动现场第一次了解到了民生银行的阿拉丁项目.由于时间关系,嘉宾现场分享的内容非常有 ...

最新文章

  1. xmlrcp学习 - python中使用xmlrpc
  2. 指针系统学习7-返回指针值的函数
  3. node 跨域请求设置
  4. webpack的基本配置项
  5. java第十二章总结
  6. lastindexof方法_Java Vector lastIndexOf()方法与示例
  7. 【Java】基础知识整理
  8. 做完四个小项目的收获
  9. Python机器学习:评价分类结果005precisoion-Recall的平衡
  10. myan回复几个问题
  11. 如何面试一位前端工程师
  12. 摆花(2012Noip普及组第3题)
  13. linux使用小命令使用汇集
  14. 如何抓取html请求,网页抓取工具如何进行http模拟请求
  15. 该死的配置系统未能初始化
  16. 转载——傅里叶变换概念及公式推导
  17. 【每日随笔】2021 年终总结 ( 学习和博客 | 技术学习方向 | 专业学习方向 | 写博客的技巧总结 | 工作成果 | 2022 年展望及职业规划 | 对 CSDN 的建议和期望 )
  18. 深入解读:从DDIM到Improved Denoising Diffusion Probabilistic Models
  19. 经典智力题:火车运煤
  20. [osg]源码分析:osg::Vec3, osg::Vec3f

热门文章

  1. Python小白的数学建模课-10.微分方程边值问题
  2. %3c故乡%3e中语言描写的作用是什么,第三单元考试题
  3. clientmacaddr进不去系统win10_教你一分钟搞定戴尔电脑WIN10改WIN7
  4. python实例变量不存在_python – peewee实例匹配查询不存在
  5. ++ba--运算结果解析
  6. Qt 二级菜单无法输入中文
  7. Mysql的多表查询(表添加,多表查询练习:笛卡尔积、内连接、外连接、子查询、UNION组合查询)
  8. Clob类型转换为String
  9. [UWP]使用Picker实现一个简单的ColorPicker弹窗
  10. Java Web学习总结(10)学习总结-EL表达式