云计算因为其弹性可伸缩的计算模式,受到以
IBM、亚马逊、谷歌等为代表的众多高科技公司的重 视,成为各公司应对海量信息处理的利器。近年来,出 现了众多各具特色的云计算应用产品,包括应用在服 务托管领域的亚马逊弹性云、著名的谷歌搜索、Zoho在 线办公应用等。而在海量数据存储挖掘领域的典型云 计算应用也出自于亚马逊公司,即亚马逊的Hadoop架 构服务,称为弹性MR(ElasticMapReduce,EMR)[2,3], 其整体架构如图1所示: 图1 亚马逊EMR整体构架图[2] EMR框架分为三部分,控制接口(AWSConsole)、 存储服务(SimpleStorageService,S3)和弹性计算 (ElasticComputeCloud,EC2)。通过EMR平台,企业、 研究人员、数据分析师可以花费较少的费用轻松处理 大数据集而不用担心计算设备问题。显而易见,随着 数据宇宙时代的到来,这种新的动态可伸缩的数据处 理模式必将在信息技术领域扮演越来越重要的角色。 本文在云计算开源框架下给出如何搭建信息分析机构 内部的弹性海量数据挖掘平台解决方案并给出了实施 步骤。 2 云计算开源框架Cloudera和XenServer 在可信计算尚不成熟的时候,通过开源技术实现 随需弹性处理机构内部数据是机构信息人员搭建机构 内部的EMR框架的出发点。分析亚马逊EMR服务框 架,不难看出动态可伸缩的大数据集计算模式主要解 决两个关键问题:动态布署虚拟Hadoop节点服务器和 在节点服务器间快速配置搭建Hadoop分布式环境。 考察目前已有较成熟的开源技术,在开源框架下搭建 这样动态灵活的大数据处理解决方案可以有几种组合 方式,如:最接近亚马逊EMR框架的Eucalyptus+Ha doop组合、基于虚拟操作系统上的分布式文件系统环 境VMware+Hadoop组合和XenServer+Cloudera组合 等。目前,还没看到介绍以开源框架搭建EMR平台的 相关文献。本文使用最后一种平台组合构建本系统机 构内部的开源EMR平台,实现类似于亚马逊EMR框 架中大数据处理所需的控制、存储、计算等相应的三部 分关键功能。 2.1 开源Hadoop发行版Cloudera系统平台 Cloudera是一款开源标准的Hadoop布署及调度平 台[4],可以有效提升Hadoop环境的易管理性,降低对 使用人员的要求,使Hadoop初学者也可用该软件搭建 谷歌式云计算平台,处理海量数据。据统计,目前大约 有75%的Hadoop新用户使用Cloudera[5]。 2.2 Hadoop交互管理平台ClouderaDesktop ClouderaDesktop[6]提供了一个图形化的基于Web 的针对Hadoop框架的交互管理平台。用户可以以可 视方式进行文件系统操作、权限管理、MapReduce任务 管理、提交、浏览、监控计算任务状态并提供监控图表 功能、浏览存储资料等。支持主流浏览器(Firefox、 Chrome、Safari和IE8+)。 2.3 免费的虚拟机管理平台XenServer 虚拟技术是云计算基础构架技术,也是本文搭建 开源EMR平台的基础构架技术。目前,典型的虚拟机 技术实现有CritrixXenServer[7,8]、VMwareESX Serv er[9]、MicrosoftHyper-V[7]等。相较其他两种,Citrix XenServer的虚拟机的性能更接近真实硬件环境,硬件 支持广泛,具有更好的安全性、兼容性和开源性,也是 本文选用的主要原因。 3 搭建开源EMR环境 本文设计的开源EMR平台包括虚拟云平台和分 布式计算平台两部分,其整体架构如图2所示。 虚拟云平台是一个基于网络的动态可伸缩的虚拟 设备环境,弹性管理网络设备资源,如:动态调配物理 设备资源、存储设备资源及动态创建的Hadoop虚拟服 务器,有效支持对计算资源的规模化集约化管理。本 文的虚拟云平台使用XenServer和XenCenter实现。而 分布式计算环境是一个基于HadoopMap/Reduce框架 的开源大数据并行计算环境,选用Cloudera和Cloudera 总第198期 2010年 第10期 78 现代图书情报技术 图2 开源EMR整体构架图 Desktop实现。ClouderaDesktop是一个访问控制接口, 提供基于Firefox浏览器的简单界面。开源EMR的实 现过程可以分为三部分:搭建动态虚拟的云计算环境、 安装制作Hadoop虚拟服务器模板、配置运行Cloudera 和ClouderaDesktop。第一部分是虚拟云环境,第二、三 部分是分布式计算环境。 3.1 搭建动态虚拟的云计算环境 通过XenServer和XenCenter搭建动态虚拟的云计 算环境的过程较复杂[10]。主要注意事项如下: (1)XenServer要求安装在64位X86服务器上(32 位服务器不支持64位的虚拟机),并且不支持多系统, 不支持多系统引导,不能再安装运行其他应用程序。 为充分利用虚拟平台的动态资源调度特性,应以 资源池方式管理虚拟云环境中的服务器设备资源和存 储设备资源,因此所有安装XenServer软件的主机应配 置静态地址,其中一台为资源池的管理机,其他物理主 机作为普通服务器加入,所有主机的管理员和密码最 好相同。 (2)XenCenter安装要求有.NET框架2.0及以上 版本的支持,可以安装在普通Windows管理机上。安 装过程中应注意XenCenter的安装路径,推荐修改为 “C:\Citrix\XENCenter\”,以确保后期程序调用Xen ServerAPI接口时不会出现路径指向问题。 (3)云计算环境中的数据安全很关键,因此存储 设备和云计算环境分开是最理想的。XenCenter支持 的存储设备主要有三种:基于NFSVHD的存储池、基 于iSCSI的存储池、基于HardwareHBA的存储池。配 置存储池时要注意存储设备的接口配置提示信息,基 于NFSVHD方式的阵列设备的正确配置信息应该是 “<nfs_ipaddress>:/<sr_share_dir>”(XenServer5.5 版的提示信息模糊)。配置基于HardwareHBA方式的 阵列设备时,要在XenServer安装或系统恢复时将光纤 临时断开,系统运行后再物理连接上,系统会自动找到 已连接上的阵列设备。 3.2 安装制作Hadoop虚拟服务器模板 制作Hadoop虚拟服务器模板是搭建开源EMR框 架的关键点之一,通过Hadoop模板,可以在已搭建好 的虚拟云环境中快速创建Hadoop虚拟服务器节点,有 效节省系统安装时间,并将Hadoop分布环境的搭建重 点放在SSH安全数据传输连接和参数同步上,从而快 速完成Hadoop分布环境的部署和调度,与传统Hadoop 分布式环境相比,基于虚拟环境的Hadoop分布式环境 更灵活、更简捷、更有效地利用网络计算资源。主要制 作过程和注意事项如下: (1)安装Linux基本操作系统(BaseSystem) 通过XenCenter创建新的服务器模板,在确定模板 所需的操作系统类型、处理器、内存及硬盘大小后,即 可根据提示完成模板的安装。根据Hadoop分布环境 安装要求,在测试过程中,选择安装Linux操作系统 CentOS,虚拟处理器XeonE7420一个,虚拟内存1GB, 虚拟硬盘空间60GB。整个安装过程与单机安装Cen tOS操作系统的实际过程类似。 注意事项:免费版的XenServer5.5对虚拟硬盘空 间大小有限制,不能在创建服务器(基于已创建好的模 板)时动态调整虚拟硬盘空间大小(但可以动态调整 处理器和内存的大小),因此在创建服务器模板时要考 虑具体应用环境的需要,确定合适的虚拟硬盘空间。 (2)安装Hadoop软件包 经过第一步,Linux操作系统的基本系统安装完成 后,即可开始安装Hadoop软件包,为后面布署分布式 计算环境做准备,本文使用Hadoop的企业优化发行版 Cloudera平台工具。Cloudera被简化优化后,和Hadoop 安装过程略有不同,注意默认的安装路径即可,目前 Cloudera的稳定发行版支持到Hadoop-0.20。主要安 装过程如下: #./jdk-6u16-Linux-i586-rpm.bin//安装Java环境 #curlhttp://archive.Cloudera.com/redhat/cdh/Cloudera-cdh2. repo> /etc/yum.repos.d/Cloudera-cdh2.repo//yum更新配置文件 应用实践 XIANDAITUSHUQINGBAOJISHU 79 #yum -yinstallHadoop-0.20-conf-pseudo//安装Cloudera #yum -yinstallHadoop-0.20-conf-pseudo-desktop//安装 ClouderaDesktop 注意事项:Cloudera安装没有用户限制(非root用 户使用sudoyum安装即可),但Hadoop分布式文件系 统格式化必须由Hadoop用户执行,因此,Hadoop服务 器节点模板创建时最好同时创建Hadoop用户并授予 sudo超级权限。 3.3 配置运行Cloudera和ClouderaDesktop Hadoop虚拟服务器模板制作完成后,即可在Xen Center监控窗口中看到该模板,双击后根据提示创建 基于该模板的Hadoop虚拟服务器,同理,根据需要可 以创建多个Hadoop虚拟服务器节点。每个节点都已 经安装好Linux操作系统和Hadoop软件包,用户只需 要配置运行Hadoop分布式环境,即可实现大数据处理 所需的计算环境。Hadoop平台有三种运行方式:单机 模式、伪模式和完全分布式模式,这里仅讨论完全分布 模式的配置。本文参考Hadoop分布式环境配置[11]和 Cloudera安装过程[12]并在虚拟环境中测试后,整理主 要配置过程和注意事项如下: (1)配置网络安全协议SSH 在每个虚拟节点服务器上利用SSH生成密钥对, 并且将彼此公钥追加到自身和其他节点机的author ized_keys文件中,以保证各节点之间能够通过SSH工 具不输入密码直接登录,自身也必须保证不输入密码 直接登录。 注意事项:因为Hadoop分布式文件系统格式化必 须由Hadoop用户执行,所以各个节点上的SSH配置最 好以Hadoop用户身份进行。 (2)分布式环境参数配置 Cloudera的默认参数文件路径是“/etc/Hadoop/ conf/”,主要配置文件为Hadoopenv.sh、coresite.xml、 hdfssite.xml、mapredsite.xml、conf/masters和conf/ slaves,与Hadoop的分布式环境配置相似。Cloudera默 认参数为伪模式配置,完全分布模式配置主要是修改 Java运行环境路径、节点机名称或节点机IP地址等相 关信息。配置好主节点Namenode的参数后,将配置文 件拷贝到其他节点机上,同步整个Hadoop环境参数。 参数数据同步命令如下: $scp-r/etc/Hadoop/confHadoopslaves:/etc/Hadoop 注意事项:Cloudera除了上述的6个配置文件外, 还有一个专门针对ClouderaDesktop的参数配置文件 “/usr/share/Clouderadesktop/conf/Clouderadesktop. ini”,参数修改如下: namenode_host=localhost修改为namenode_host=namenode jobtracker_host=localhost修改为jobtracker_host=namenode (3)运行分布式环境 初始化: $./usr/lib/Hadoop-0.20/bin/Hadoopnamenode! format 启动Cloudera: $forxin/etc/init.d/Hadoop-0.20-;do$xstart;done 启动ClouderaDesktop: $sudo/etc/init.d/Cloudera-desktopstart 成功启动Cloudera和ClouderaDesktop之后,数据 分析人员就可以通过浏览器方式简单实现对基于虚拟 技术的分布式环境(EMR)的控制和管理,并可以开始 进行大数据处理。入口地址:“http://myserverip: 8088/”,如图3所示: 图3 ClouderaDesktop服务入口示意图 3.4 Cloudera常见问题及解决方案 (1)大数据计算时常报“Namenodeisinsafe mode”错误。原因分析:在分布式文件系统启动的时 候,开始的时候会有安全模式,当分布式文件系统处于 安全模式的情况下,文件系统中的内容不允许修改也 不允许删除,直到安全模式结束。 解决的命令: $bin/Hadoopdfsadmin-safemodeleave//关闭safemode (2)大数据计算时报“Permissiondeniedexception injobdesigner”错误。原因分析:系统默认的临时目录 “Hadoop.tmp.dir”的读写权限不够。 解决的命令: $chmod777/var/lib/Hadoop-0.20/cache/Hadoop 3.5 增加Hadoop虚拟服务器节点(Slavenode) 虚拟云计算是基于虚拟技术动态分配网络计算资 总第198期 2010年 第10期 80 现代图书情报技术 源,随需提供入门级应用的计算模式。而结合虚拟技 术和分布式技术则在理论上提供了可无限动态扩展网 络计算资源的随需提供企业级海量数据挖掘的计算模 式。在开源海量数据挖掘平台(EMR)中,动态扩展存 储和计算资源的方法是在增加Hadoop节点服务器方 法[13]的基础上,结合虚拟技术实现,关键步骤如下: (1)在XenCenter监控窗口中,基于Hadoop虚拟服 务器模板创建新的Hadoop节点服务器Slavenode;实际 上,结合XenAPI接口,该步骤也可以在浏览器的方式 下在线完成[14]; (2)在Slavenode上配置好Hadoop节点服务器所需 的运行环境,包括SSH、相关Cloudera配置文件的拷贝; (3)将新的Slavenode的Host信息加到集群Name node及其他Datanode的/etc/hosts配置文件中去;将新 的Slavenode的IP加到Master的conf/slaves中; (4)重启HadoopCluster,在Cluster中看到新的 Slavenode节点。 注意事项:新添加一个节点到集群当中时,HDFS 不会自动地移动文件块到新节点中去平衡磁盘空间, 而新创建的文件将只会使用新节点的磁盘空间。解决 方案如下: (1)将文件复制一份,然后删掉源文件。 (2)将磁盘块满的节点关掉,等待直到文件块自 动复制完成,再把节点加回去。这样,冗余数量变得过 多,系统将会随机删去多余的冗余。 (3)运行bin/start-balancer.sh命令,这会很耗时间。 4 海量数据挖掘实例 在信息爆炸的今天,海量数据挖掘几乎是任何一 个信息分析机构要面对的课题。而用户每天面临的 80%信息都是文本信息。这里通过基本的MapReduce WordCount算法测试说明基于机构内部自建的开源 EMR平台如何进行海量文本数据挖掘处理,同时介绍 使用ClouderaDesktop进行简单的大数据处理的过程。 试验目的是将大数据处理的难点ETL过程交给开源 EMR平台处理,数据分析过程使用传统方式,实现数 据处理过程中的优势互补。测试数据为非结构化的文 本文件。测试过程是将文本文件上传到开源EMR平 台中,然后调用WordCount算法处理文本文件,最后将 处理结果下载到本地做进一步分析。整个过程在图形 化界面中通过简单的系统交互完成。 4.1 WordCount算法 WordCount[15]是一个经典的Map/Reduce的应用 示例,它可以计算出指定数据集中每一个单词出现的 次数,是文本数据挖掘处理中的基础部分和算法之一。 在测试过程中,WordCount算法将上传的非机构化文本 处理为词和词频数据对。 4.2 大数据挖掘的关键步骤 以WordCount算法为例,处理结果如图4所示: 图4 海量数据WordCount算法处理结果示意图 (1)进入ClouderaDesktop主界面,默认登录用户 是系统创建的Hadoop用户。成功登入后,用户可以看 到图3所示的界面:ClouderaDesktop有4个主要功能 模块,在界面右上角的Launch菜单中,包括Cluster HealthDashboard、FileBrower、JobBrowser以及JobDe signer。 (2)点击打开FileBrower,在Hadoop用户主目录 中,创建数据上传目标文件夹INPUT,并上传需要处理 的文本数据,如图4中左边的文本就是测试中上传的 文本文件内容,也可以是多个文本文件。 (3)点击打开JobDesigner,激活系统默认的基础 算法,复制并修改WordCount算法的数据输入(IN PUT)和输出(随机命名输出文件夹名称,不能与已有 文件夹重名,如使用OP+Time方式命名)参数,完成 新WordCountJob任务的创建。 (4)运行该Job任务,系统将自动创建OPTime文 件夹,显示任务执行的进度和结果,并将最终数据处理 结果保存到该文件夹中。用户还可以通过FileBrowser 查看结果数据或将结果集下载到本地系统进一步深入 分析。如图4中右边的文件就是将处理结果下载到本 地并排序后呈现的文本。 应用实践 XIANDAITUSHUQINGBAOJISHU 81 5 开源EMR架构优势分析 数据挖掘是适应信息社会从海量数据中提取有用 信息的需要而产生的。现在,政府、企业都把数据看成 宝贵的财富,纷纷利用数据挖掘技术发现其中隐藏的 信息。亚马逊在2010年的Hadoop峰会上表明其目前 的数据挖掘业务比重非常大,并为提升其EMR服务将 有显著的持续投入[16]。总体来说,除了数据保密性 外,信息机构内部的开源EMR架构的应用很好地解决 了如下几方面的问题: (1)高效的网络存储和计算资源的控制利用,有 效防止服务器蔓延,推动机构内部数据中心的绿色节 能建设。通过虚拟技术将具有相类似的应用服务器整 合到相对集中的资源池中,提高应用的稳定性和可用 性,同时通过可视化监控界面动态配置、调整调度服务 器及存储设备,提高计算资源的利用效率。 (2)加速分布式数据挖掘服务部署能力。通过分 布式服务应用映像模板,用户可以根据数据挖掘的任 务和数据规模,简单、灵活地创建和增减Hadoop服务 器节点,形成规模合适的容错性强的Hadoop集群,低 成本快速完成数据挖掘任务。任务完成后,还可以快速 收回计算资源给其他应用使用,深层次挖掘计算资源 的可利用空间。 (3)大数据处理的简单化,开发方便。通过图形 化Hadoop平台管理界面,海量数据处理对专业数据分 析人员来说不再是复杂的服务器集群软、硬件和数据 挖掘算法的整合过程,系统屏蔽掉底层,数据分析师可 以将主要精力放到数据挖掘算法上。这种大数据处理 过程的简单化趋势将推动知识挖掘、发现的快速发展。 6 结 语 本文通过分析亚马逊EMR海量数据处理平台构 架,针对信息分析机构内部数据处理的迫切需求,提出 通过开源技术XenServer和Cloudera版Hadoop平台构 建信息机构自己的动态可伸缩的海量数据处理平台并 给出实施方案和文本数据处理案例。目前,开源EMR 平台在算法、多节点计算速度、实时数据处理、中文支 持等方面还有很多限制和不足,这也是笔者下一步改 进的方向。 |
|