“作为大数据入门基础知识,依次介绍hadoop历史、hdfs文件系统、mapreduce计算、yarn资源管理。”
01
Hadoop介绍
大数据概念
概念:大数据(bigdata)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
单位BKBMBGBPEPBEBZBYB基数次方特性(4V)
数据量大(Volume)
类型繁多(Variety)
价值密度低(Value)
速度快、时效高(Velocity)
大数据挑战
存储:每天几TB、GB的数据增量,并且还在持续的增长中。
分析:如何从巨大的数据中挖掘出隐藏的商业价值。
管理:如何快速构建并且保证系统的安全、简单可用。
Hadoop架构演变历史
02
Hadoop集群
Hadoop高可用
对于HDFS,NN存储元数据在内存中,并负责管理文件系统的命名空间和客户端对HDFS的读写请求。但是,如果只存在一个NN,一旦发生“单点故障”,会使整个系统失效。
虽然有个SNN,但是它并不是NN的热备份
因为SNN无法提供“热备份”功能,在NN故障时,无法立即切换到SNN对外提供服务,即HDFS处于停服状态。
HDFS2.x采用了HA(HighAvailability高可用)架构。
在HA集群中,可设置两个NN,一个处于“活跃(Active)”状态,另一个处于“待命(Standby)”状态。
由zookeeper确保一主一备(讲zookeeper时具体展开)
处于Active状态的NN负责响应所有客户端的请求,处于Standby状态的NN作为热备份节点,保证与active的NN的元数据同步
Active节点发生故障时,zookeeper集群会发现此情况,通知Standby节点立即切换到活跃状态对外提供服务
确保集群一直处于可用状态
如何热备份元数据:
StandbyNN是ActiveNN的“热备份”,因此ActiveNN的状态信息必须实时同步到StandbyNN。
可借助一个共享存储系统来实现状态同步,如NFS(NetworkFileSystem)、QJM(QuorumJournalManager)或者Zookeeper。
ActiveNN将更新数据写入到共享存储系统,StandbyNN一直监听该系统,一旦发现有新的数据写入,就立即从公共存储系统中读取这些数据并加载到StandbyNN自己内存中,从而保证元数据与ActiveNN状态一致。
块报告:
NN保存了数据块到实际存储位置的映射信息,为了实现故障时的快速切换,必须保证StandbyNN中也包含最新的块映射信息
因此需要给所有DN配置Active和Standby两个NN的地址,把块的位置和心跳信息同时发送到两个NN上。
Hadoop联邦
虽然HDFSHA解决了“单点故障”问题,但HDFS在扩展性、整体性能和隔离性方面仍有问题
系统扩展性方面,元数据存储在NN内存中,受限于内存上限(每个文件、目录、block占用约字节)
整体性能方面,吞吐量受单个NN的影响
隔离性方面,一个程序可能会影响其他程序的运行,如果一个程序消耗过多资源会导致其他程序无法顺利运行
HDFSHA本质上还是单名称节点
HDFS联邦可以解决以上三个问题
HDFS联邦中,设计了多个命名空间;每个命名空间有一个NN或一主一备两个NN,使得HDFS的命名服务能够水平扩展
这些NN分别进行各自命名空间namespace和块的管理,相互独立,不需要彼此协调
每个DN要向集群中所有的NN注册,并周期性的向所有NN发送心跳信息和块信息,报告自己的状态
HDFS联邦每个相互独立的NN对应一个独立的命名空间
每一个命名空间管理属于自己的一组块,这些属于同一命名空间的块对应一个“块池”的概念。
每个DN会为所有块池提供块的存储,块池中的各个块实际上是存储在不同DN中的
联邦: