Hadoop三大组件
hadoop三大组件 mapreduce 分布式运算框架 yarn 任务调度平台 hdfs 分布式文件系统
1.HDFS数据存放策略:分块存储+副本存放。
2.数据拓扑结构(即数据备份):默认存放3份,可以通过修改配置文件hdfs-site.xml修改备份数量,如果本机在集群中,第一份就会存放到本节点即本机上,如果不在集群中,就通过负载均衡存放到一个相应的随机节点上,第二份存放在同机柜的不同节点上,第三份存放在不同机柜的某个节点上。
3.数据查找:就近原则,现在本节点上查找,再从本机柜上查找,最后再去不同机柜上查找。
4.单点故障:Hadoop1中,一个集群只有NameNode,一旦NameNode宕机,整个集群就无法使用。
5.RPC:(Remote-Procedure-Call远程过程调用)RPC是hadoop构建的基础,一种协议,通过网络从远程计算机程序上请求服务,采用client/sever客户机/服务机模式,客户端发动请求结果返回给客户端而不是服务端。
6.安装模式:NameNode启动时会进入该模式进行检测,检查数据块的完整性,处于该模式下的集群无法对HDFS进行操作,可以手动离开安全模式
hadoop dfsadmin -saftmode leave 推出安全模式(enter进入安全模式)
7.负载均衡:让DataNode处于均很状态,调整数据块,DataNode的工作任务等,例如:现有一个任务要分配给从节点运行,但是有些slave内存比较小,有些内存比较大,又有些slave正在执行别的任务,有些事空闲的,为了让各个slave既要饱和状态又要性能最好,就需要调整;再例如:原本有8个子节点,现在扩充了2个子节点,原先的8个子节点都要数据存储,也有相应的任务需要执行,而后加的2个子节点是空的,此时也需要负载均衡进行重新分配数据的存储和任务的执行。手动启动该机制运行:
$HADOOP_HOME/sbin/start-balancer.sh
8.机架感知:机架之间的交互用机架感知来进行。机架之间的通信是通过一些交换机,路由器,光纤等进行通信的,需要通过机架感知来交互。不同机架之间相互访问网络耗费较大且延迟也较高,所以理想状态下要查找数据刚刚好就在本机上,就不用耗费资源查找了,就需要通过机架感知。大型hadoop集群通过机架形式组织,而且同一机架上不同节点间的网络状况比不同机架之间的更为理想。
9.心跳机制:Hadoop是主从结构,即master/slave结构,master有NameNode,ResourceManager,SecondaryManager;slave有DataNode,NodeManager。master启动时会启动一个ipc服务(Inner-Process-Communication,通信间进程),等待slave连接。slave启动时,会主动连接ipc服务,并且每隔3秒连接一次master,这就是“心跳”。slave通过心跳机制汇报自己的状态,job完成情况等给master,同事master也通过心跳机制向slave下达命令,分配任务。同样的,ResourceManager和NodeManager之间也通过心跳机制进行交互。如果master长时间没有收到slave的心跳,那么master就认为该slave宕机了,如果slave宕机了,master就会把slave的数据通过负载均衡机制分配给其他slave上,正在执行的任务也会被作废,重新分配,重新执行。
10.HA机制:High Availablity高可用性,H2中用于结局NameNode的单点故障问题。通过配置Active/Standby两个NameNode解决热备份问题。active NN对外提供服务,standby NN只做备份,active NN将数据写入共享存储系统(NFS-NetWorkSystem,QJM,BooKeeper等)中而standby NN监听,一旦有新数据写入standby NN会读取这些数据写入自己的内存,保证和active NN保持同步,当active NN发生故障,standby NN可以立即顶替。每个节点上都有一个zookeeper。DN不断向active NN 和standby NN发送心跳,zookeeper会检测2个NN,active NN和standby NN通过共享存储系统保持一致,当zookeeper监测到active NN出现故障时,会立即通过故障转移控制器切换standby NN为激活状态。
注意:SecondaryNameNode不是HA,只是阶段性合并edits和fsimage,用以缩短NN启动的时间,NN失效时SecondaryNN不能立即提供服务,而且也不能保证数据和NN的一致性。