对Hadoop的简单了解

摘自[期刊论文] 宋伟- 《电子制作》2014年12期
1.Hadoop概述

  • Hadoop平台采用的是并行计算、分布式存储结构的数据计算系统,它采用成本较低的PC设备组建了大型集群,进而构成了一个用于处理海量数据的分布式计算系统。
  • Hadoop平台的源代码是开放式的,这种体系结构便于系统的二次开发,以此来满足某一特定群体的特殊要求。
  • Hadoop系统只需要投入较低的成本可以处理高容量的数据,Hadoop具有良好的性能被广泛应用于各种领域。
  • Hadoop具有良好的扩展性能,Hadoop系统的各个节点上均被扩展了数据挖掘系统中所需要的功能模块,Hadoop系统可以利用集群对数据进行数据存储、并行计算,从海量数据中挖掘隐含的、新颖的、对决策实施工作有指导价值的关系、模型,在Hadoop平台上架构数据挖掘系统。Hadoop集MapReduce、HDFS、HBase、Avro、Pig等子项目于一身,并行编程模型(MapReduce)、分布式文件系统(HDFS)是Hadoop的核心技术。
  • 用户可以通过结合编程模型MapReduce与Hadoop的方式对分布式程序进行二次开发。HDFS系统主要用来存储文件,采用的是分布式的存储方式,HDFS系统具有较高的容错性能,使文件的读写速度得到了提高,而且扩大了系统的存储容量。

2.Hadoop MapReduce编程模型的介绍
MapReduce编程模型是Hadoop的重要组成部分,它是一款简单的编程模型,可以用于海量数据的计算处理。

  1. MapReduce的执行流程
    MapReduce是由Google公司开发研制的一种用于处理大规模数据集并行运算的分布式计算模型,将其用于处理大规模的海量数据。
    Hadoop程序的主要工作逻辑都包含在MapReduce数据模型中。MapReduce具有容错性好、编程简单、易于扩展等特点,使集群上的海量数据并行处理实现得到了极大地简化。MapReduce计算模型借鉴于函数式编程语言的思想、特性。主要由Map和Reduce两个函数组成。在MapReduce分布式数据处理模型中,数据处理的流程主要分为Map和Reduce两个阶段。
  •  (1)Map阶段:主要负责完成映射分解工作。当有数据输入时,将输入的数据分解成若干个小数据集合,这些小数据集合中的数据有集群中的各个节点分别处理,并在对应节点位置生成中间结果
     (2)Reduce阶段:主要负责化简归约工作。Reduce阶段将Map阶段存放在集群中每个节点的中间结果按照一定的业务逻辑进行数据合并,并将其归约结果传送给最终用户。
    
  1. MapReduce分布式数据处理模型的构成
    在MapReduce分布式数据计算模型中包括以下几部分内容:
  •  (1)Job:一次分布式过程所需要完成的工作内容。
     (2)Task:由一个Job派生出来的多个子任务单元,在MapReduce中包括以下两种:①MapTask②ReduceTask,分别用于执行Map和Reduce两个阶段。
     (3)JobTracker:主要负责监控并调度Job中的各个Task运行于哪个TaskTracker上,当发现失败的Task,JobTracker会下达命令使系统重新运行。JobTracker是一个Master服务,它负责控制各个节点,一般部署在单独的机器上。
     (4)TaskTracker:主要负责与JobTracker的通讯工作,接收并执行每个Task。TaskTracker是一个或多个Slaver服务,一般部署在多个机器上。
     (5)JobClient:通过用户端的JobClient类将各个Job的应用程序及配置参数打包成jar文件,并将打包的文件存储于HDFS,将路径提交到JobTracker中,等待JobTracker派生子任务,接收到JobTracker派生子任务后由TaskTracker执行。 
    
  1. MapReduce数据处理模型的模块划分
  •  (1)Input模块:主要负责将输入的海量数据划分成小数据块,小数据块主要包括16MB、128MB两种,并将这些小数据块传输至Map模块中。
     (2)Map模块:通过Map莫苦熬处理后,将产生一个或多个键值对。
     (3)Partition模块:通过Partition模块,将Map模块输出的key值映射至所对应的reduce方法中。
     (4)Compare模块:对reduce方法读入的数据进行比较。
     (5)Reduce模块:对Compare模块排好序的数据中具有相同key值的数据进行迭代计算。
     (6)Out模块:将Reduce模块中输出结构传输至分布式存储系统。 
    
  1. MapReduce数据处理模型的特点
  •  (1)将复杂庞大的数据系统划分成Map阶段和Reduce阶段。
     		分布式处理过程是一个较为复杂的逻辑数据处理过程,在处理过程中通常要考虑进程间通信、多线程安全、数据一致性等问题,而MapReduce提供了一个简化的数据处理模型,将逻辑处理的过程划分为以下连个阶段:Map(映射)和Reduce(化简)。这一过程使得开发人员更为注重逻辑的实现,而对分布式平台具体的实现细节问题无需有过多的考虑。
     (2)在分布式调度处理过程中,无需移动数据,用移动计算的方式代替数据的移动过程,这种数据处理方式可以节省网络传输的成本。在分布式处理过程中,过多的数据移动会影响分布式处理的工作效率,但是数据的移动或复制是不可避免的操作。为了解决以上问题,MapReduce计算模型提出了数据本地化的理念,即采用移动计算的方式,尽量减少数据的大规模移动,在本地对数据进行处理,统一归约计算结果,可以有效的减少数据在网络中的传输,提高了分布式处理的效率,节省了宽带资源。
     (3)对结构化、半结构化、非结构化的数据采用键值对的形式进行处理,这种键值对的处理方式,增强了MapReduce对数据格式的处理能力,并有效地提高了MapReduce模型的扩展性。
     (4)MapReduce数据处理模型具有优良的容错机制和健壮的调度策略,成本低廉,并且对分布式集群的硬件资源要求不高,不依赖于单一的节点。
    

3.HDFS系统的介绍
HDFS系统主要用来存储文件,它是Hadoop平台的主要存储系统,采用的是分布式的存储方式,HDFS系统具有较高的容错性能,而且数据的吞吐容量很大,使文件的读写速度得到了提高,而且扩大了系统的存储容量。分布式文件系统HDFS有效地解决了海量数据的存储与管理问题,HDFS存储大量的用户数据,可以为其他子模块提供必要的服务。
HDFS系统是主要由NameNode、SecondaryNameNode、DataNode、Client几部分组成。

  • NameNode为控制节点,每个集群包含一个NameNode,它组要负责管理文件的数据源、保持与DataNode同步等工作;
  • SecondaryNameNode会定时对NameNode的节点进行备份,即使NameNode出现了问题,通过SecondaryNameNode可以将集群切换到出现问题的节点进而维持集群的正常运行;
  • 在工作节点DataNode中以分块形式存储了用户的相关数据,采用这种存储方式使数据的交流更为快捷、安全;
  • 集群之间通过Client进行数据交互,以此来读取、写入文件内容。

4.基于Hadoop平台的数据挖掘技术
基于Hadoop平台的数据挖掘系统采用的是自上而下的分层思想,系统的上层可以调用下层子系统。根据实际需求对系统进行分层设计,系统的各个层之间是相互独立的,他们之间通过调用进行数据通信,这种分层设计系统具有较好的扩展性能。基于Hadoop平台的数据挖掘系统主要由以下几部分组成:

  • (1)交互层:主要负责系统与用户之间的信息通信,是二者之间的通信接口。交互层会为用户提供形象的图像界面,这个图形界面具有良好的表现形式,用户通过登录界面系统可以办理相关业务,还可以查看、保存输出结果。交互层主要由业务模块、用户管理模块、展示模块三大模块组成。
  • (2)业务应用层:主要负责处理、调度和控制用户层提交的业务。业务应用层通过调用数据挖局算法层的功能模块来调度和控制用户层条的业务。
  • (3)数据挖掘层:是系统的核心,该层以并行方式来实现任务过程中的算法,而且数据挖掘层会将任务提交给Hadoop分布计算层进行计算,并将最终结果返回到业务应用层中去。

你可能感兴趣的:(大数据,Hadoop,计算机)