Hadoop架构
Hadoop是一个存储和处理大规模数据的开源软件框架,实现在大量计算机组成集群中海量数据进行分布式存储计算。Hadoop最初由Doug Cuting 根据Google的GFS和apReduce思想,采用Java语言开发而创建。
由于Hadoop采用了分布式存储方式和Java语言开发,这使得Hadoop可以都署在不同损系统平台和通用的计算机集群中。Hadoop中HDFS的数据管理能力能够快速高效地读写文,同时还采用了存储冗余数据的方式保证了数据的安全性。MapReduce处理分布式任务时简单方便,以及开源特性,使Hadoop在大数据领域被广泛使用。
用户可以轻松地在Hadoop上开发和运行处理海量数据的分布式应用程序 ,Hadoop 主要有以下几个优点:
(1)高扩展性。Hadoop 支持集群节点的动态增加,方便集群的扩展,可以根据需要扩展到上千节点。
(2)高容错性。Hadoop能够自动保存数据的多个副本,当有集群节点数据丢失时,能够自动实现数据的备份。
(3)高效性。Hadoop可以充分地利用网络、磁盘I0资源和备份数据实现文件的快速读写。
(4)高可靠性。正在执行的子任务由于某种原因挂掉的话,Hadoop 可以自动让其他节点继续执行该子任务,不影响整个任务的执行。
(5)低成本。Hadoop集群不用部署在专用服务器上,只需部署在通用的计算机中即可:而且Hadoop生态系统绝大部分都是开源的,用户很容易拿来开发使用。
HDFS和MapReduce是Hadoop的两大核心,整个Hadoop 的体系结构主要是HDFS为海量数据提供了分布式存储,MapReduce 为海量数据的规则提取提供了并行计算。
1、 HDFS
HDFS是一个分布式文件系统,采用了主从(Master-Slave) 架构模型。一个HDFS集群节点作为主服务器,管理整个文件系统的命名空间和客户端对文件的访问操作,比如打开、块,这些数据块存放在DataNode上)到具体DataNode的映射。DataNode 管理存储的数据,关闭、重命名文件或目录等,同时它也负责数据块(在HDFS中,一个 文件被分成若干数振处理客户端的文件读写请求,并在NameNode的统一调度 下进行数据块的创建、删除和复制工作。
为了避免数据的丢失,HDFS默认采用了三个冗余备份,并将这些数据放在不同的DataNode 上。
2、MapReduce
Hadoop MapReduce是Doug Cutting受到Google发表的关于MapReduce的论文的启发而发出来的。MapReduce 是个简单易用的并行计算模型, 它将运行于大规模集群上的复杂的为并行计算过程高度地抽象为两个函数: Map和Reduce。 MapReduce应用程序能够以一种可靠容错的方式并行处理大数据,实现了在Hadoop集群上数据和任务的并行计算与处理。
MapReduce应用通常会把输入文件切分为若F数据块,每个数据块会启动一个相应的Map来并行处理,然后把Map处理后的结果输入给Reduce来进行汇总。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
通常,MapReduce框架和分布式文件系统是运行在一组相同的节点上的, 也就是说,计算节点和存储节点在一起。 这种做法可以让存储节点上运行MapReduce程序,减少集群内部数据传输量,提高运行效率。
3、 Yarn
Yarn是Hadoop2.0版本中的一个新增特性,主要负责集群的资源管理和调度。Yam不仅可以支持MapReduce计算,还支持Hive、HBase、 Pig、 Spark 等应用,这样就可以方便地使用Yarn从系统层面对集群进行统一的管理。
Yarn仍然采用Master-Slave结构,在整个资源管理框架中,ResourceManager 为Master,NodeManager为Slave, ResourceManager 负责整个系统的资源管理和分配,NodeManager 负责每个DataNode.上的资源和任务管理。
还没有评论,来说两句吧...