发布网友 发布时间:2022-04-23 03:30
共1个回答
热心网友 时间:2022-04-12 20:38
Hadoop是由Apache开源软件基金会开发的,运行于大规模普通服务器上的分布式系统基础架构,用于大规模数据的存储、计算、分析等。通过使用Hadoop平台用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。2007年雅虎发布了第一个Apache Hadoop版本0.14.1;2008年雅虎用Hadoop做到全网尺度的搜索;2009年雅虎把内部版本全部开源,于是IBM也加入Hadoop的开发阵营;2010年*宣布正式运行世界最大的Hadoop集群;2011年Apache Hadoop1.0版本发布;2012年Apache Hadoop2.0版本发布。下面具体介绍一下Hadoop系统的架构。
Hadoop由许多元素构成,如下图图所示,包括HBase、Hive、Pig、Chukwa、Oozie和ZooKeeper等,但是其核心组件为HDFS和MapRece。
HDFS是Hadoop Distributed File System系统的缩写,是一个使用JAVA语言实现的、分布式的、可扩展的文件系统,它存储 Hadoop 集群中所有存储节点上的文件,由NameNode和DataNode两部分组成。HDFS的上一层是 MapRece 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成,用来对存储在HDFS上的数据进行计算分析。下面来具体介绍HDFS和MapRece的工作原理及应用。
HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode是集群中的数据节点,用来存储实际的数据,并负责管理它所在节点上的数据存储。HDFS公开了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制,下面就具体来阐述HDFS系统中涉及的基本概念;
下图为HDFS对数据存储的原理图,NameNode存储了DataNode节点所存储数据的元数据,即Hdfs和MapRece两个文件的分块信息,假设单个文件的存储份数为3,即每个数据块有三份备份,那么数据在DataNode上的存储的原则为:相同的两个数据块存储在同一机架的不同的DataNode节点上;第三个数据块存储在不同机架上的DataNode节点上。这样就解决了当某个DataNode节点出现故障的时候数据丢失的问题,保障了存储在HDFS系统上数据的可用性。
MapRece是Google公司的核心计算模型,它将运行于大规模集群上的复杂的并行计算过程高度地抽象为两个函数:Map和Rece。MapRece也可以看成是一种解决问题的方法,它把一个复杂的任务分解成多个任务,Map负责把任务分解成多个任务,Rece负责把分解后多任务处理的结果汇总起来。
Hadoop中的MapRece是一个简易的软件框架,基于它写出来的应用程序能够运行在由上千台机器组成的大型集群上,并以一种可靠容错的方式并行处理TB级别的数据集,实现了Hadoop在集群上的数据和任务的并行计算与处理。在并行计算中其他的种种复杂的问题,如分布式存储、工作调度、负载均衡、容错处理、网络通信等均由MapRece框架负责处理,编程人员可以不用关心。用MapRece来处理的数据集必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,并且每个小的数据集都可以完全并行地进行处理。
Hadoop MapRece是基于HDFS的MapRece编程框架实现的,我们把MapRece处理的问题称为作业 (Job),并将作业分解为任务 (Task),在MapRece执行过程中需要有两种任务。
Hadoop MapRece有两个主要的服务进程,一个是单独运行在主节点上的JobTracker进程,另一个是运行在每个集群从节点上的TaskTracker进程。服务进程部署如下图所示。
JobTraker和NameNode运行在同一个服务器上,我们称为Hadoop集群的主节点,负责接收客户端提交的作业,并将任务分配到不同的计算节点TaskTracker上,同时监控作业的运行情况,完成作业的更新和容错处理;Tasktracker通常和DataNode装在一起,称为Hadoop集群的从节点,它调用Map和Rece执行JobTracker指派的任务,并发送心跳消息给JobTracker,向JobTracker汇报可运行任务的数量。
Hadoop 一直缺乏安全机制,主要表现在以下几个方面。
为了增强Hadoop的安全机制, 从2009年起Apache专门抽出一个团队为Hadoop增加安全认证和授权机制,Apache Hadoop 1.0.0版本之后的版本添加了安全机制,但是升级到该版本后可能会导致Hadoop的一些应用不可用。