Hadoop是Google的集群系统的开源实现:Google集群系统包括GFS(Google File System)、MapReduce、BigTable。Hadoop的两大核心支撑就是HDFS(Hadoop Distributed File System)Hadoop分布式文件管理系统和MapReduce,Hadoop的初衷是为了解决Nutch的海量数据数据爬取和存取的需求。这里主要讲解HDFS和MapReduce的l两大概念。
HDFS介绍:HDFS的数据组织形式采用了NameNode名称节点和DataNodes数据节点,其中名称节点可以理解成为文件的索引,数据节点可以理解成真实数据的数据块。
HDFS的运行机制:
1.一个名称节点和多个数据节点:一个HDFS中包含一个名称节点即NameNode,但是由于所保存的文件可能较大要拆分成多个DataNode数据节点,这就是一个名称节点多个数据节点的原理。
2.数据冗余机制:在HDFS中一个文件被分隔成多个DataNode,而为了数据安全性和访问速度,HDFS将DataNode又生成了多个备份分布在不同的电脑上,这些冗余的DataNode可以在某个DataNode节点所在的电脑故障时恢复故障电脑上的数据,同时在访问量比较大的时候对同一个DataNode的访问可以由多个冗余数据进行分担。多个冗余节点之间采用了负载均衡机制保证访问的均衡分布。
3.存放位置感知即机架感知:在HDFS中可以配置每一个集群中单个节点是单台电脑或服务器,通过配置文件可以设置每一个节点属于哪一个机架,这样在上面的数据冗余时就可以选择不同的机架进行数据冗余,这样配置是很科学的,主要是同一台机架上的节点出现同样故障的可能性比较接近,比如说同一台机架上的电源掉电,导致整个机架上的节点不可用,进行机架感知选择不同机架进行数据冗余就尽量避免了这种事故的发生。
4.数据节点校验:数据节点为保证数据的可靠性设置有心跳检测通过定时发送心跳包确定当前节点是否可用、块报告就是在安全模式下检测数据节点的状态、数据完整性校验就是比较文件校验和像常用的Hash校验、MD5校验类似。
5.名称节点数据叠加:名称节点有主从两个名称节点又分为日志文件和镜像文件,这两个文件进行叠加组成新增的名称节点,这个名称节点的叠加机制我之前在多线程的克隆思想处理并发的分享中已经讲解过,大家可以回头看看,这里就不再多讲了。
6.读写分离:在DataNode的多个节点中设置有主节点和从节点,只有主节点才能写入数据,并且是顺序的追加数据,这样就保证了HDFS的数据写入速度,但也因为这个原理导致HDFS无法修改数据,这也就是众多HDFS产品不能修改数据的原因,比如我们的百度云盘就只能增删查,不能改的原因。