hadoop

 1. 组成

Client切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。

三个守护进程:

NameNode:Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求,了解决NameNode的单点故障,为NameNode保存一个热备,使得nameNode有两个,Active NameNode,Standby NameNode,当active nn挂了以后standby nn 能立马变为active nn。

Secondary NameNode:辅助NameNode,分担其工作量;定期合并fsimage和edits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。

DataNode:Slave节点,存储实际的数据,汇报存储信息给NameNode。1.x版本默认数据块大小为:64M    2.x版本默认数据块大小为:128M.

2. NameNode和Secondary NameNode交互过程:

将整个文件系统的目录树保存在fsimage_txid上。并将namenode(以及客户端)和datanode交互的所有动作保存在文件edits(editlog)中,fsimage文件+edits文件=hdfs在某一时刻的快照。hdfs重新启动时,必须获得hdfs关闭前的状态,因此需要将fsimage和edits中保存的信息加载入namenode的内存,hdfs集群通常是长期不关机的,这会造成edits文件无限变大。hadoop使用secondarynamenode来减小edits文件:过程:namenode重命名edits为edits_new,secondarynamenode通过HTTP的GET请求方式去获取namenode上的fsimage和edits_new文件,并进行合并产生新的fsimage文件,再将新的fsimage文件post到namenode,namenode加载新的fsimage文件并将旧的edits_new重命名为edits_txid。

参考:https://blog.csdn.net/enl_green/article/details/82656935

3.hadoop HA架构

zookeeperFailoverControl(ZKFC):监控NN的健康状态,向ZK集群定期发送心跳 ,让自己被选举,当自己被ZK选举为主时,zkfc进程通过rpc调用让nn转换为active状态

JN:journalnode,用于active nn,standby nn的同步数据,本身由一组的JN节点组成的集群,奇数,3台(CDH)。

DataNode: 同时向 active nn 和 standby nn 发送心跳和块报告。

ACTIVE NN: 读写的操作记录写到自己的editlog,同时写一份到JN集群,接收DN的心跳和块报告.

STANDBY NN: 同时接收JN集群的日志,显示读取执行log操作(重演),使得自己的元数据和active nn节点保持一致, 接收DN的心跳和块报告.

 

 

过程:当通过client端提交请求的时候,首先会找到处于 active 状态的nn,然后提交请求,然后就是HDFS的读写流程,记录读和写的操作写入edit log,同时将日志发送到 journalnode 集,standby 节点获取日志后进行重演。同时每个DataNode会向NameNode节点发送心跳的块报告。当active NN节点挂了,通过zk集群选举(它存储了NN节点的状态),通知ZKFC,把standby NN节点切换到active状态。ZKFC会定期的发送心跳 。

4.  YARN HA架构

RM: a.启动时会通过向ZK写一个lock文件,写成功则为active,否则standby。standby RM会一直监控lock文件的是否存在,如果不存在就会尝试去创建,争取为active rm。
   b.会接收客户端的任务请求,接收和监控nm的资源的汇报,负责资源的分配与调度,启动和监控 ApplicationMaster(AM)。

AM:ApplicationMaster : nm机器上的container,单个application(job)的task的管理和调度,并向rm进行资源的申请,向nm发出 launch container指令,接收NM的task的处理状态信息。

ZKFC: 自动故障转移 只作为RM进程的一个线程 而非独立的守护进程来启动

RMstatestore:  active RM 将作业信息存储在ZK中,当active rm挂了,另外一个standby rm成功转换为active rm后,ZK中读取相应的作业信息,重新构建作业的内存信息。然后启动内部服务,开始接收NM的心跳,构建     集群资源的信息,并接收客户端的提交作业的请求等。
NM: 节点上的资源的管理,启动container 容器 运行task的计算,上报资源,container情况汇报给 RM 和任务的处理情况汇报给 ApplicationMaster(AM)。

 

 5. hadoop HA 和 YARN HA区别

相同点:都是为了解决单点故障,都需要两个相同的角色互为主备,数据都实时同步,且都需要从中间节点拉取数据。
不同:
①zkfc: hdfs中,zkfc是一个进程监控nn,而yarn中只是作为rm进程中的一个线程监控。
②hdfs ha 通过中间集群JN读写请求和重演实现数据同步,而yarn ha通过zk存储。
③在active状态切换时,hdfs ha可以直接从standby切换为active,而yarn ha切换为active rm后,还需要从zk的rmstore目录下读取作业信息,且读取过程中无法对外提供服务。

6.惰性删除

hdfs删除文件之后空间不释放
针对此种情况主要是hdfs的回收站功能,为了防止文件误删除,删除的文件会先放到回收站里。
删除的时候也可以直接彻底删除,只需 hdfs dfs -rm -r -skipTrash即可
        也可以禁用hdfs的回收站功能,hdfs回收站的功能控制是zaicore-site.xml文件中
        <property>
      <name>fs.trash.interval</name>
           <value>0</value>
  </property>
        0代表不启用回收站功能,如果是其他正整数的话代表该分钟之后会自动删除

7. file   cacheFile  cacheArchive

hadoop
-file   :本地文件,上传到集群中
-cacheFile :hdfs集群上的文件
-cacheArchive :将压缩文件上传后解压。#file,file指向解压后的目录

8.

 

posted @ 2021-12-02 14:41  dsfsadfdgd  阅读(336)  评论(0编辑  收藏  举报