Hadoop学习笔记(1)-HDFS

2017-03-10  本文已影响92人  丸蛋蟹

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

1.HDFS

Paste_Image.png

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

3 daemons

NameNode

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


Metadata


edits


SlaveNode


the Secondary NameNode(SN)

文件系统的metadata快照 和 Edit

Checkingpointing the file system Metadata

在这种模式下, 一个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

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守护进程

在每一个要运行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报告完成
关系图

Rack-aware

Hadoop了解rack awareness的概念:

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


5. HDFS读文件(client读DataNode)

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

数据污染

数据可靠性和恢复

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

`

上一篇下一篇

猜你喜欢

热点阅读