您现在的位置是:首页计算机网络论文

网络工程师职称论文Hadoop云计算平台的研究及实现

发布时间:2014-08-29 15:38:30更新时间:2014-08-29 15:39:54 1

  在大数据时代,数据动辄以T级计算,传统的集群技术已经难以存储、分析并处理如此大量的数据。为了提高集群系统中硬件资源的利用率,分布式文件系统得到了广泛的应用。Google公司先后提出了BigTable、GPFS以及MapReduce等分布式技术,为处理海量数据提供了宝贵的经验;Hadoop分布式系统框架也应运而生,并在日志分析、商业数据分析等领域得到广泛应用。

  摘 要 随着电子商务的兴起,传统的服务器集群技术在处理大数据时越来越显得力不从心。Hadoop是一种开源的云计算技术,包含HDFS文件系统及 MapReduce编程模型两大核心,在处理海量数据、数据挖掘、电商推荐系统等领域有其独到的优势。文章介绍了Hadoop的基本原理,实现了搭建了 Hadoop集群,从而实现了一个基于Hadoop的云计算平台。

  关键词 网络工程师职称论文,Hadoop,云计算,HDFS

  目前Hadoop集群应用最为成熟的是Yahoo公司,在其生产环境Hadoop集群中有超过4000台节点,对其业务运营、客户关系分析等有着重要的现实意义。Hadoop开源项目诞生以来,国内的研究开始较晚,加之国内多数研究机构、厂商等的谨慎保守态度,Hadoop生态系统在云计算领域的应用进展一直比较缓慢。Hadoop技术在国外如火如荼的发展表明,深入研究Hadoop技术的基本原理,实现一个基于Hadoop的云计算平台,有着重要的现实意义。

  1 Hadoop基本原理

  作为一种开源的分布式云计算技术,Hadoop能够在廉价的服务器上创建集群,实现集群的横向扩展。Hadoop集群主要包括两大核心:HDFS分布式文件系统和MapReduce计算框架。从Yahoo公司的Hadoop平台运行情况可以得知,Hadoop平台有如下优势:1)集群中的节点可以是廉价的商用机器,这些大量的机器组成的集群能够可靠地处理大规模数据文件;2)多个数据节点上可以并行处理同一个任务,具有高并发性,有效提高了工作处理周期;3)默认情况下,Hadoop集群中的数据块会有三个副本,这种备份机制提高了业务数据的冗余性,即使集群中的某一服务器发生故障,也不会造成数据丢失的情况。

  Hadoop集群在处理数据时,客户程序利用标准API将文件写入到HDFS分布式文件系统上,接下来借助MapReduce计算框架进行分布式计算得到结果。组成HDFS的节点按照功能主要分为三类:NameNode节点、DataNode节点以及Client节点。 NameNode是HDFS文件系统的主节点,它保存了HDFS文件系统中的元数据,管理着集群中目录及文件的分配,是整个文件系统的核心;DataNode节点存储了真正的业务数据,hadoop集群中的文件被分为多个数据块,每个数据块根据配置可以在多个DataNode节点上存储若干副本;与其他分布式文件系统一样,HDFS文件系统采用的也是主从架构:一个单一的NameNode节点作为HDFS文件系统的主节点,若干数量的 DataNode节点是从节点。NameNode 节点的内存中存储了整个HDFS文件系统的元数据,同时处理客户端的文件访问请求,并且与 DataNode节点进行通信;DataNode 节点采用心跳机制定时和NameNode节点进行通信,以此保证整个集群运行正常。NameNode节点在接收到Client的文件读写请求后,根据客户端请求的数据块和DataNode节点间的映射关系,通知存储了客户端请求数据块的DataNode,此DataNode节点响应并处理Client发起的文件读写请求,对数据块块进行读、写等操作。

  在使用HDFS文件系统的过程中,有几个问题需要注意:1)HDFS文件系统在读取文件时需要流式读取。HDFS之所以具有较高的性能,就是因为它放弃了随机读取文件的特性,所以读取文件时必须流式读取;2)Hadoop并不支持对关闭的文件进行更新,所以HDFS文件系统中的数据操作适合“一次写入、多次读取”的情况,另外,HDFS中适合存储少量的大文件,而不适合存储海量小文件。

  MapReduce计算模型包括“Map(映射)”和“Reduce(化简)”两部分,可以用于大规模数据集的并行运算。MapReduce 计算模型把主要功能都在Map函数及Reduce函数内实现,编写并行程序的开发人员无需了解系统运作的底层原理即可迅速完成开发工作。 MapReduce的数据处理主要包括map阶段和reduce阶段:map阶段将输入数据分为多个分片,并将一行行的输入转换为key-value形式;DataNode节点上存储的数据块对应一个map。reduce阶段归纳map阶段的输出,并合并具有相同key值的value。 MapReduce处理数据的流程如图1所示。

  图1 MapReduce处理数据的流程

  类似HDFS文件系统中的 NameNode和DataNode的主从结构那样,MapReduce计算模型也是由JobTracker和TaskTracker组成的主从结构构成。其中JobTracker运行在NameNode节点上,而TaskTracker运行在DataNode节点上。当Client有作业要完成时,JobTracker会先把此作业放到内部的作业队列中,在进行初始化后,交给作业调度器进行调度,作业调度器会先将任务进行分片,然后为每一个分片创建一个map任务。为了并行地处理大规模数据,MapReduce计算模型将比较大的任务分解为多个小任务,不在执行任务的各个组件间共享数据,从而可以方便地将各个子任务扩展到大规模的集群中。

  2 基于Hadoop的云计算平台

  Hadoop环境包括三种:单机版、伪分布集群以及完全分布环境。Hadoop单机版一般用于开发测试,Hadoop伪分布集群是在一台服务器上模拟分布式开发环境,Hadoop分布式环境才真正适用于云计算平台。接下来本文将实现一个Hadoop云计算平台。   首先,要在所有Hadoop集群的节点上安装必须的软件,包括JDK以及SSH。Hadoop源码的编译以及mapreduce任务的运行都离不开 JDK,所以必须按照JDK;安装完毕后,要在用户的.bash_profile文件中配置环境变量JAVA_HOME以及PATH,并执行source .bash_profile命令以使环境变量生效。另外,hadoop 需要利用ssh互信来启动各个slave主机的守护进程。

  安装 Hadoop集群时,需要将在一台机器上配置好的安装包拷贝到集群内的所有机器上。需要在集群中选定一台机器充当NameNode以及 JobTracker,当集群内节点数目比较多的时候,这两者可以部署在两台机器上,它们是主从架构中的master。集群中其他的节点作为 DataNode和TaskTracker,它们是主从架构中的slave。为了使Hadoop集群在运行时可以找到正确的JDK路径,需要在安装目录 conf下的配置文件hadoop-env.sh中配置JDK的路径。配置文件core-site.xml中存放了Hadoop集群的元数据以及临时数据的存放路径,需要配置fs.default.name及两个Hadoop.tmp.dir参数;hadoop.tmp.dir参数配置的目录存放了 HDFS文件系统中文件的存放位置,${hadoop.tmp.dir}/dfs/name目录存放namenode的名字空间,${hadoop.tmp.dir}/dfs/data目录存放了各个datanode节点的数据块。fs.default.name配置 namenode所在的主机和端口号,具体的配置如下所示:

  fs.default.name

  hdfs://localhost:9000

  hadoop.tmp.dir

  /tmp/hadoop-root

  配置好core-site.xml后,还需要指定数据块的副本个数,这是通过修改hdfs-site.xml实现的,将配置参数 dfs.replication的值设置为副本个数,默认值为3。为了使MapReduce任务能够正确运行,还需要配置JobTracker的相关信息,这需要修改mapred-site.xml文件:

  mapred.job.tracker

  http://localhost:9001

  Hadoop集群中的各个节点需要知道哪个节点是master节点,哪些节点是slave节点,这需要配置masters和slaves两个配置文件,masters指明主节点,slaves中配置所有的从节点。

  所有的配置文件修改好之后,将整个Hadoop的安装目录全部拷贝到Hadoop集群内所有其他节点上,这样就完成了Hadoop集群的初步配置。此时在主节点的命令行上输入Hadoop命令后,会出现Hadoop命令的帮助信息,说明Hadoop集群已经安装成功。在使用Hadoop集群前,需要先启动HDFS文件系统和Map/Reduce集群。格式化文件系统的命令为Hadoop namenode


转载请注明来自:http://www.yueqikan.com/jisuanjiwangluolw/43751.html