大数据学习之旅---HDFS文件系统

2019/11/19 Caesar

前言

入门大数据技术,当选Hadoop。可以说Hadoop是大数据生态的基础,Hadoop是一套行业大数据标准开源文件,可以实现在分布式环境下提供海量数据的处理能力,我们就从Hadoop来开始学习大数据!

Hadoop是什么

  Hadoop在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。

Hadoop组成

  1. HDFS : Hadoop Distributed File System 分布式文件系统
  2. YARN : Yet Another Resource Negotiator 资源管理调度系统
  3. Mapreduce :分布式计算框架

HDFS

1. HDFS架构

image.png

主从架构:
NameNode (名称节点):NameNode维护文件系统名称空间。对文件系统名称空间或其属性的任何更改均由NameNode记录。应用程序可以指定HDFS应该维护的文件副本的数量。文件的副本数称为该文件的复制因子。此信息由NameNode存储。NameNode是所有HDFS元数据的仲裁器和存储库。
DataNode (数据节点):DataNode是存储数据的集群节点。

2. HDFS如何实现数据容错

2.1 数据复制

  HDFS将所有存储其中的文件分成若干个块,除最后一个块,其余块大小相等,默认为128M,可根据文件配置。复制文件的块的目的是为了容错,应用程序可以指定复制的副本数,即需要存储几份相同的数据。
  NameNode决定所有块复制的细节。它定期从众多 DataNode 中接受心跳信号和 Block Report,其中 Block Report 包含 DataNode 上所有块的列表。图示如下:

image.png

2.2 机制感知策略(可略)

  HDFS 通过机制感知策略,一种特定的算法来确定块的位置。
  NameNode和JobTracker通过调用管理员配置模块中的APIresolve来获取集群里每个slave的机架id。该API将slave的DNS名称(或者IP地址)转换成机架id。使用哪个模块是通过配置项topology.node.switch.mapping.impl来指定的。模块的默认实现会调用topology.script.file.name配置项指定的一个的脚本/命令。 如果topology.script.file.name未被设置,对于所有传入的IP地址,模块会返回/default-rack作为机架id。在Map/Reduce部分还有一个额外的配置项mapred.cache.task.levels,该参数决定cache的级数(在网络拓扑中)。例如,如果默认值是2,会建立两级的cache- 一级针对主机(主机 -> 任务的映射)另一级针对机架(机架 -> 任务的映射)。

2.3 副本放置策略

  HDFS 通过副本放置策略在集群上不同节点放置副本,副本数可通过配置文件更改,下面介绍大多数情况下采用的策略。
  当复制因子为3时,HDFS的放置策略是将一个副本放置在本地机架的一个节点上,将另一个副本放置在本地机架的不同节点上,将最后一个副本放置在不同机架的不同节点上。如果复制因子大于3,则在确定每个机架的副本数量低于上限(基本上是(副本-1)/机架+ 2)以下的同时,随机确定第4个及以下副本的位置。使用此策略,文件的副本不会均匀分布在机架上。三分之一的副本位于一个节点上,三分之二的副本位于一个机架上,其余三分之一则均匀分布在其余机架上。由于NameNode不允许DataNode具有同一块的多个副本,因此创建的副本的最大数量是当时DataNode的总数。

2.4 安全模式

  HDFS启动后,NameNode进入一个特殊的状态,称为安全模式。在安全模式下,NameNode不会发生数据块的复制,NameNode从DataNode接收心跳和Blockreport消息。Blockreport包含DataNode托管的数据块列表。每个Block都有指定的最小副本数。如果一个Block的副本数达到最小副本数,就被NameNode认为是已经安全复制的Block,即满足HDFS对于数据冗余容错的要求。经过一定百分比的Block被检查为安全复制的时间,再加上30S后,NameNode推出安全模式,至于那些没有达到最小副本数的Block,NameNode会将它们复制到其他DataNode。

3. HDFS元数据管理

3.1 NameNode

  HDFS命名空间由NameNode存储,NameNode有两种重要的数据结构,分别是FsImage 和 EditLog。称为EditLog的事务日志来永久记录文件系统元数据发生的每个更改。例如,在HDFS中创建一个新文件将导致NameNode将一条记录插入到EditLog中。NameNode使用其本地主机OS文件系统中的文件来存储EditLog。整个文件系统名称空间(包括块到文件的映射和文件系统属性)存储在名为FsImage的文件中。FsImage也作为文件存储在NameNode的本地文件系统中。

3.2 SecondyNameNode

  SecondyNameNode 是 NameNode 冷备,一般放在与 NameNode 不同位置的主机上。SecondyNameNode 主要有两个作用。一是在 NameNode 工作的时候, SecondyNameNode 通过对 NameNode 中 FsImage 和 EditLog 的操作来完成备份,提高 NameNode 的启动效率。二是在 NameNode宕掉的时候, 用来恢复数据,不过不能代替 NameNode 的作用,因为它没有元数据更新机制。

3.2.1 备份过程

  FsImage 存储着块到文件的映射和文件系统属性,Edits 存储着文件系统元数据发生的每个更改。在 NameNode 中,随着运行时间持续, Edits 文件越来越大, 如果 NameNode 再次启动,会将记录在 Edits 文件的操作合并在 FsImage 文件中,并清空 Edits。但是因为 Edits 文件过大,启动效率低。所以 SecondyNameNode 会经常性将 FsImage 和 Edits 通过网络拷贝到当前节点进行数据合并,再拷贝回 NameNode,并清空 Edits。同时 SecondyNameNode 也保留了 元数据。触发拷贝可以是两个条件,一个是时间因素(超过默认时间触发),一个是 Edits 文件大小(超过大小触发)。

4. 文件读写

4.1 读文件

读文件.PNG

  假设需求是在 HDFS 中下载文件至 Linux 本地,即读文件。客户端 Client 向 NameNode 发起读文件请求, NameNode 会做权限检查,确定 Client 是否有权限进行读文件,然后经过算法分析,获取文件的 Block 列表,列表包含内容为 各Block存储的最近的 DataNode,将列表返回给 Client。Client 获取到位置信息后,和对应的 DataNode 之间建立 pipeline 管道(水管),通过管道以 pakage 为单位将 Block 数据拷贝到 Client,然后由 Client 将各 Block 合并成一个最终的文件。

4.2 写文件

写文件.PNG

  假设需求是往 HDFS 中上传文件,即写文件。客户端 Client 向 NameNode 发起写文件请求, NameNode 会做权限检查,确定 Client 是否有权限进行写文件, NameNode 通过检测
” DataNode 信息池“ 来获取压力不太大的 DataNode 列表,将列表返回给 Client。Client 获取到位置信息后,和最近的一个 DataNode 之间建立 pipeline 管道(水管),通过管道以 pakage 为单位将 Block 数据拷贝到此 DataNode,然后该 DataNode 再与下一个 DataNode 建立管道,以此类推,将
Block 数据传输下去,在 DataNode 之间有一种应答机制:ack应答机制,当 DataNode 成功保存数据后,向前一个 DataNode 报告传输成功,并关闭管道。最终 Client 成功地将数据写入若干个 DataNode中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341