Hadoop学习笔记(1)-HDFS

自行整理, 学习用途, 侵知删歉

1.HDFS

  • 新加入的文件被分成block, 64M默认;
  • 默认每一个block复制3份,分布在多台node上
Paste_Image.png
  • HDFS can be deployed with or without high availability

2. HDFS without high availability, 3 deamons, [Mode A]:

  • NameNode(Master)
  • Secondary NameNode(Master)
  • DataNode (slave)
3 daemons

NameNode

  • NameNode 包含所有metadata

hdfs中文件位置信息
所属关系(ownership)和权限(permission)
独立block的名字
block的位置信息


Metadata

  • 存储在硬盘上, 当Namenode守护进程启动时读取
  • 文件名: fsimage (block的位置信息没有存在里面)

edits

  • 硬盘上,对metadata的更改被写进一份log文件,叫做edits

SlaveNode

  • 实际的文件内容以block的形式存储在slva node上
  • block文件名: blk_xxxxxxx
  • 每个slaveNode运行一个NataNode daemon, 控制对block的访问, 与NameNode通信

the Secondary NameNode(SN)

  • SN并不是NameNode的失效备援
  • SN将metadata的变化内容写到 edit log
  • SN周期性的将系统的metadata快照edit log合并成一份新的metadata快照, 并将新的metadata快照传送回NameNode
  • SN的运行环境经需要和NameNode一样的RAM

文件系统的metadata快照 和 Edit

  • fsimage包含了一个系统metadata的快照, 并不会在每次写入操作时更新
  • 当hdfs客户端进行一个写操作, 它首先记录在Primary Namenode的edits
  • 对所有edits进行更新(Namenode重启时)将会耗时很长, 所以这个事由the secondary namenode做

Checkingpointing the file system Metadata

  • SN周期性的检查NameNode里的in-memory file去获取fsimage和新产生edits
  • SN把fsimage放到内存, 然后应用edits中的更新内容, 然后构造新的fsimage文件,并将其送回primary NameNode
  • primary NameNode收到后, 更新 fsimage 和 新产生的edits
  • 默认情况下checkpoint = min{ 每小时或者每1,000,000传输进行一次 }

在这种模式下, 一个NameNode就是一个single point of failure, SN不是 ; 如果故障, HDFS会在故障的NameNode更换后恢复正常; risk比较低,恢复也比较简单


3.HDFS with high Availability [Mode B]:

为了排除Single Point of Failure
2个NameNode:
standbyNameNode和ActiveNameNode, standbyActive挂掉后代替它.
activeNameNode把metadata写到JournalNodes[Quorum机制]
standbyNameNode读取JournalNode[Quorum机制]来和Active NameNode保持同步

2个NameNode

  • 一个HDFS目录可以快照(snapshot),例如:


    Paste_Image.png
  • HDFS Cache

    • it is possible to cache HDFS files in off-heap memory on DataNodes
    • cache is in off-heap memory for DataNode user
  • HDFS HA 部署步骤

1.配置Hadoop的 configuration
2.安装和启动JournalNodes
3.如果没有安装, 则配置并启动一个ZooKeeper ensemble
4.如果从一个con-HA的配置转成HA, 初始化shared edits directory
5.安装, 引导, 启动Standby NameNode
6.安装, 规定(format),启动ZooKeeper failover controllers
7.重启DataNodes, Yarn, MapReduce守护进程

  • Journal Node配置

在每一个要运行JournalNode的host上
1.安装
- sudo yum install hadoop-hdfs-journalnode
2.在Journal Node 创建shared edits directory
-路径 dfs.journalnode.edits.dir
3.启动JournalNode
-sudo service hadoop-hdfs-journalnode start


4.HDFS写文件(client写到DataNode)

  1. client连接到NameNode
  2. NameNode设置好metadata的入口(entry), 并将block的名字和DataNode的列表发送给client
  3. client连接到第一个DataNode然后开始发送数据; 第一个发送完了给第二DataNode发送, 然后去第三个
  4. 流水线的请求数据包返回发送给client
  5. block写入完成,clientNameNode报告完成
关系图
  • 如果这个流水线的DataNode失败了:

    • 这个流水线就关闭了
    • 一个新的流水线启动, 开启2个好的节点, 数据就继续写到这2个好的节点
    • NameNode会知晓这个block是有备份的, 然后这个数据会在另一个DataNode重新备份
  • 当数据的block写完后, client会计算每一个block的checkSum

    • checkSum和data一起发送到DataNode
    • checkSum和每一个数据block一起写入
    • 保证了数据的一致性

Rack-aware

Hadoop了解rack awareness的概念:

  • 知晓node在哪里, 如何和另一个node关联
  • 帮助ResourceManager给靠近datanode分配处理资源
  • 帮助NameNode找到最近的block给client去读取
  • HDFS将data blocks复制在不同的节点, 不同的机架, 更好的安全性

第一份拷贝: 在client的同一个节点
第二份拷贝: 靠近的另一个机架上的一个节点
第三份拷贝: 同一机架上的不同节点上


5. HDFS读文件(client读DataNode)

  1. client连接NameNode
  2. NameNode返回文件的第一部分block的名字路径(距离最近的先返回)
  3. client连接到第一个DataNode开始读取block
  4. 如果连接失败, client会连接到list里的下一个节点去读block
Paste_Image.png

数据污染

  • client读取一个block时, 它会校对checkSum, 实时的checkSum会和block创建时的checkSum对比
  • 如果不同, client会读取下一个DataNode中的数据, 然后告知NameNode这里出现一个数据污染版本, NameNode会在别处重新备份这个block
  • DataNode默认每3周会检查block的checkSums

数据可靠性和恢复

  • DataNode每3秒发送心跳给NameNode
  • 一段时间没有收到心跳就可以认为DataNode挂了
  • NameNode会知道哪些block受影响, 然后让其他的节点复制这些block到一个新的节点
    *挂了的节点恢复后, NameNode会告知新备份的DataNode删除多余的备份

数据从不会经过NameNode, 不管是读写还是拷贝过程

`

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

推荐阅读更多精彩内容