一、概述

Hadoop作为分布式存储,分布式计算的大数据生态系统,涵盖了从数据源到数据采集,数据存储,数据计算,数据分析,数据应用的各个场景,学习大数据的架构,了解各个组件对地工作原理和运行机制非常关键。

Hadoop生态系统以下将从以下几个有代表性的组件分布介绍工作原理及运行的机制。

二、HDFS组件

HDFS(Hadoop Distributed, Filesystem)大数据分布式的文件存储系统。

2.1概述

Hadoop作为分布式存储分布式计算的典范,其也经历了三个发展阶段:

第一阶段,集中存,集中算;对于集中算,遇到机器性能的瓶颈。

第二阶段,集中存,分开算;分布式计算,需要将任务做拆分到多台服务器,这时候会需要网络速度的瓶颈;

第三阶段,分开存,分开算;因分布都是采用了廉价的机器进行分布式的存储,将一个大的任务进行拆分,分开计算也解决了集中计算的痛点。

2.2 HDFS 分布式存储系统

背景:在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。

定义:统一管理分布在集群上的文件系统称为分布式文件系统 。

特点:Hadoop 非常适于存储大型数据 (比如 TB 和 PB), 其就是使用 HDFS 作为存储系统. HDFS 使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统

2.3 应用场景

适合的场景

1)存储非常大的文件:这里非常大指的是几百M,G,或者TB级别,需要高吞吐量,对延时没有要求

2)采用流式的数据访问方式:即一次写入,多次读取,数据集经常从数据源生成或者拷贝一次,然后再其上做很多分析工作。

3)运行于商业硬件上:Hadoop不需要特别贵的机器,可运行在普通廉价的机器,可以节约成本

4)需要高容错性;

5)为数据存储提供所需的扩展能力

不适合的场景

1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的
2) 无法高效的对大量小文件进行存储
  - 存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,
因为NameNode的内存总是有限的;
  - 小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
3) 不支持并发写入、文件随机修改
  - 一个文件只能有一个写,不允许多个线程同时写;
  - 仅支持数据append(追加),不支持文件的随机修改

2.4组成架构

1、NameNodenn):就是Master,它是一个 主管、管理者。
1)管理HDFS的名称空间;
2)配置副本策略;
3)管理数据块(Block)映射信息;
4)处理客户端读写请求。
2、DataNode:就是SlaveNameNode下达命令,DataNode执行实际的操作。
1)存储实际的数据块;
2)执行数据块的读/写操作
3、Client:就是客户端。
1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;
2)与NameNode交互,获取文件的位置信息;
3)与DataNode交互,读取或者写入数据;
4)Client提供一些命令来管理HDFS,比如NameNode格式化;
5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作;
4、Secondary NameNode并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode
提供服务。
1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ;
2)在紧急情况下,可辅助恢复NameNode
2.5 Block块的存放方式及介绍
所有的文件都是 block 的方式存放在 HDFS 文件系统当中,作用如下:
1. 一个文件有可能大于集群中任意一个磁盘,引入块机制,可以很好的解决这个问题
2. 使用块作为文件存储的逻辑单位可以简化存储子系统
3. 块非常适合用于数据备份进而提供数据容错能力。

在 Hadoop1.x 当中, 文件的 block 块默认大小是 64M, hadoop2/3.x 当中, 文件的 block 块大小默认是 128M, block 块的大小可以通过 hdfs-site.xml 当中的配置文件进行指定
Block大小设置的原理:
1. 如果寻址时间约为10ms,即查找到目标block的时 间为10ms。
2. 寻址时间为传输时间的1%时,则为最佳状态
(专家)因此,传输时间=10ms/0.01=1000ms=1s
3. 而目前磁盘的传输速率普遍为100MB/s。
4. block大小=1s*100MB/s=100MB

思考:为什么块的大小不能设置太小,也不能设置太大?

1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;
2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序 在处理这块数据时,会非常慢。
总结:HDFS块的大小设置主要取决于磁盘传输速率

2.6 HDFS文件副本与机架感知
副本机制与机架感知:
HDFS分布式文件系统的内部有一个副本存放策略:以默认的副 本数=3为例:
1. 第一个副本在Client所处的节点上。如果客户端在集群外,随机选一个。
2. 第二个副本在另一个机架的随机一个节点
3. 第三个副本在第二个副本所在机架的随机节点
2.7 HDFS安全模式

安全模式是hadoop的一种保护机制,用于保证集群中的数据块的安全性。当集群启动的时候,会首先进 入安全模式。当系统处于安全模式时会检查数据块的完整性。
假设我们设置的副本数(即参数dfs.replication)是3,那么在datanode上就应该有3个副本存在,假设只 存在2个副本,那么比例就是2/3=0.666。hdfs默认的副本率0.999。我们的副本率0.666明显小于0.999, 因此系统会自动的复制副本到其他dataNode,使得副本率不小于0.999。如果系统中有5个副本,超过我 们设定的3个副本,那么系统也会删除多于的2个副本。
在安全模式状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。在当整个系统达到安 全标准时,HDFS自动离开安全模式。

三、HDFS进阶理论

3.1 Hadoop写数据流程

Metadata 元数据,最小的数据单位,这里主要是数据名称,类型,大小,数据副本,数据地址,拥有者信息等。

 3.2 Hadoop读数据流程

3.3 NameNode工作机制

1、第一阶段:NameNode 启动
1)第一次启动 NameNode 格式化后,创建 Fsimage 和 Edits 文件。如果不是第一次启动,直接加载辑日志和镜像文件到内存。
2)客户端对元数据进行增删改的请求。
3)NameNode 记录操作日志,更新滚动日志。
4)NameNode 在内存中对元数据进行增删改。
2)第二阶段:Secondary NameNode 工作
1)Secondary NameNode 询问 NameNode 是否需要 CheckPoint。直接带回 NameNode是否检查结果。
2)Secondary NameNode 请求执行 CheckPoint。
3)NameNode 滚动正在写的 Edits 日志。
4)将滚动前的编辑日志和镜像文件拷贝到 Secondary NameNode。
5)Secondary NameNode 加载编辑日志和镜像文件到内存,并合并。
6)生成新的镜像文件 fsimage.chkpoint。
7)拷贝 fsimage.chkpoint 到 NameNode。
8)NameNode 将 fsimage.chkpoint 重新命名成 fsimage。

3.4 Fsimage和Edits概念

NameNode被格式化之后,将在$HADOOP_HOME/data/tmp/dfs/name/current目录中产生如下文件
1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文
件inode的序列化信息。
fsimage_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION
2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记
录到Edits文件中。
3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
4)每次NameNode启动的时候都会将Fsimage文件读入内存,加载Edits里面的更新操作,保证内存中的元
数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。

3.5 DataNode工作机制

1)一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包
括数据块的长度,块数据的校验和,以及时间戳。
2)DataNode 启动后向 NameNode 注册,通过后,周期性(6 小时)的向 NameNode 上报所有的块信息。
3)心跳是每 3 秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制块数据到另一台 机器,或删除某个数据块。如果超过 10 分钟没有收到某个 DataNode 的心跳,
则认为该节点不可用。
4)集群运行中可以安全加入和退出一些机器。
3.6 数据完整性
DataNode 节点保证数据完整性的方法:
1)当 DataNode 读取 Block 的时候,它会计算 CheckSum。
2)如果计算后的 CheckSum,与 Block 创建时值不一样,说明 Block 已经损坏。
3)Client 读取其他 DataNode 上的 Block。
4)常见的校验算法 crc(32),md5(128),sha1(160)
5)DataNode 在其文件创建后周期验证 CheckSum。
3.7 DataNode掉线时参数设置
1)DataNode进程死亡或者网络故障造成DataNode无法与NameNode通信
2)NameNode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超
时时长。
3)HDFS默认的超时时长为10分钟+30秒。
4)如果定义超时时间为TimeOut,则超时时长的计算公式为: TimeOut = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval。
5)而默认的dfs.namenode.heartbeat.recheck-interval 大小为5分钟, dfs.heartbeat.interval默认为3秒

【Hadoop】Hadoop组件 -之 HDFS组件相关推荐

  1. Hadoop 1.x:体系结构,主要组件以及HDFS和MapReduce的工作方式

    Before reading this post, please go through my previous post at "Introduction to Hadoop" t ...

  2. (超详细)大数据Hadoop之HDFS组件

    一. HDFS简介 1.1 HDFS的概述 在Hadoop生态圈中,HDFS属于底层基础,负责存储文件. 1.2 HDFS产生背景 HDFS全称为Hadoop Distributed File Sys ...

  3. Zookeeper 教程:Zookeeper作为Hadoop和Hbase的重要组件,为分布式应用程序协调服务

    目录 Zookeeper 教程 适用人群 学习前提 Zookeeper 概述 分布式应用 分布式应用的优点 分布式应用的挑战 什么是Apache ZooKeeper? ZooKeeper的好处 Zoo ...

  4. HADOOP基本操作命令,及其组件端口

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 hadoop的集群部署,可以参考https://blog.csdn.net/luanpeng825485697/article/details/819 ...

  5. Hadoop如何工作? HDFS案例研究

    Apache Hadoop软件库是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理. 它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储. 库本身不用于依靠硬 ...

  6. 云小课 | MRS基础入门之HDFS组件介绍

    摘要:HDFS是MapReduce服务中的基础文件系统,全称为Hadoop的分布式文件系统(Hadoop Distributed File System),可支持实现大规模数据可靠的分布式读写. 本文 ...

  7. Hadoop体系结构– YARN,HDFS和MapReduce

    Before reading this post, please go through my previous post at "Hadoop 1.x: Architecture and H ...

  8. 【快速入门大数据】hadoop和它的hdfs、yarn、mapreduce

    文章目录 导学 大数据概述 初识Hadoop 概述 核心组件 HDFS分布式文件系统 资源调度系统YARN MapReduce 优势 发展史 生态系统 发行版本选择 企业应用案例 第3章 分布式文件系 ...

  9. Hadoop、分布式文件系统HDFS、YARN、MAPREDUCE

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 1.1 什么是Hadoop Hadoop名字的由来 作者:Do ...

  10. Hadoop系列 (三):HDFS详细介绍

    文章目录 Hadoop系列文章 HDFS简介 HDFS基本概念 分布式文件系统特点 HDFS设计目标 HDFS架构 HDFS应用场景 HDFS三大组件 NameNode SecondaryNameNo ...

最新文章

  1. System.Net.Dns.GetHostByAddress(string) 已经过时
  2. django web 自定义通用权限控制
  3. 4-算法 与7无关的数最近的提交
  4. PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknow........
  5. 【论文查重】常用论文写作查重润色网站
  6. 设置小程序video标签宽高比例为9/16
  7. CPU飙升到100%问题排查
  8. 风口的猪-中国牛市(小米2016校招)
  9. 动环监控系统的监控对象有哪些?动环监控系统作用
  10. Python3网络爬虫(十三):王者荣耀那些事!(Fiddler之手机APP爬取)
  11. MySQL基础~多表查询分类与SQL92和99语法如何实现内连接和外连接
  12. 大数据平台docker一键搭建
  13. ios系统软件迁移到安卓_苹果一键换机到安卓(苹果安卓一键迁移的软件)
  14. Go语言mgo使用情况
  15. MVC有哪几种过滤器?
  16. 英语不好能学编程吗?
  17. python wechatsougou_python 使用qq登陆搜狗微信搜索
  18. 网易北京研发中心-网易传媒部门深度学习算法实习生面试总结
  19. 新东方托福词汇(List 26 ~ List 30)
  20. 基于WSL搭建ESP8266开发环境

热门文章

  1. php libiconv close_PHP 5.2.17 编译安装时出现 undefined reference to `libiconv_open’ 错误的解决方法...
  2. 自定义字体需要css的,CSS 自定义字体
  3. 天天生鲜项目需求分析——基于Django框架的天天生鲜电商网站项目系列博客(一)...
  4. WIN7无法卸载掉中文繁体注音输入法
  5. 快速西门子PLC入门(适合零基础)
  6. 软考论文写作攻略,让你轻松拿高分!
  7. mac谷歌浏览器怎么登陆账户_Mac如何安装谷歌浏览器 Mac安装谷歌浏览器的方法...
  8. (转发)详解汽车UDS诊断协议(二)
  9. Jaas demo 登陆验证
  10. 国二计算机资料,计算机国二MS_Office高级应用资料.doc