1.Hadoop是一个对海量数据存储和海量数据分析计算的分布式系统。
Hadoop是道格·卡丁(Doug Cutting)创建的,Hadoop起源于开源网络搜索引擎Apache Nutch,后者本身也是Lucene项目的一部分。Nutch项目面世后,面对数据量巨大的网页显示出了架构的灵活性不够。当时正好借鉴了谷歌分布式文件系统,做出了自己的开源系统NDFS分布式文件系统。第二年谷歌又发表了论文介绍了MapReduce系统,Nutch开发人员也开发出了MapReduce系统。随后NDFS和MapReduce命名为Hadoop,成为了Apache顶级项目。
2003年、2004年谷歌发表的三篇论文为该问题提供了可行的解决方案。
——分布式文件系统(GFS),可用于处理海量网页的存储
——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
——分布式的结构化数据存储系统Bigtable,用来处理海量结构化数据。
Doug Cutting基于这三篇论文完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。
2.
名称节点的作用:管理着文件系统的命名空间。它维护着文件系统数以及文件树中所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘中(这两个文件也会被持久化存储在本地硬盘),分别是命名空间镜像文件(fsimage)和操作日志文件(editslog),这些信息被Cache在RAM中。NameNode记录着每个文件中各个块所在的数据节点信息,但是他并不永久保存这些块的信息,因为这些信息会在系统启动时从数据节点信息重建。
数据节点最主要的就是数据存储访问功能,所有功能都是为了该目的而展开,如同机房多个数据节点共同承载该机房产生数据、同机房间数据节点的数据同步、不同机房间数据节点数据同步、等等都是为了数据能正常存储访问为目的
3.
HDFS(Hadoop Distributed File System)是Hadoop核心组成之一,是分布式计算中数据存储管理的基础,被设计成适合运行在通用硬件上的分布式文件系统。HDFS架构中有两类节点,一类是NameNode,又叫“元数据节点”,另一类是DataNode,又叫“数据节点”,分别执行Master和Worker的具体任务。HDFS是一个(Master/Slave)体系结构,“一次写入,多次读取”。HDFS的设计思想:分而治之—将大文件、大批量文件分布式存放在大量独立的机器上。
HDFS采用Master/Slave的架构存储数据,由HDFS Client、NameNode、DataNode和Secondary NameNode四部分组成。
Client:客户端
1、文件切分。文件上传HDFS时,Client按照Block大小切分文件,然后进行存储
2、与NameNode交互,获取文件位置信息
3、与DataNode交互,读取或写入数据
4、Client提供一些命令管理和访问HDFS
NameNode:Master(管理者)
1、管理HDFS的名称空间
2、管理数据块(Block)映射信息
3、配置副本策略
4、处理客户端读写请求
DataNode:Slave(NN下达命令执行实际的操作)
1、存储实际的数据块
2、执行数据块的读/写操作
Secondary NameNode:并非NameNode的热备,当NN停止服务时,它并不能马上替换NN并提供服务
1、辅助NN,分担其工作量
2、定期合并fsimage和fsedits,并推送给NN
3、在紧急情况下,可辅助恢复NN