转让携程礼品卡 58:搭建基于云计算的开源海量数据挖掘平台

来源:百度文库 编辑:九乡新闻网 时间:2024/05/05 11:10:41
 云计算因为其弹性可伸缩的计算模式,受到以
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/”,主要配置文件为Hadoopenv.sh、coresite.xml、
hdfssite.xml、mapredsite.xml、conf/masters和conf/
slaves,与Hadoop的分布式环境配置相似。Cloudera默
认参数为伪模式配置,完全分布模式配置主要是修改
Java运行环境路径、节点机名称或节点机IP地址等相
关信息。配置好主节点Namenode的参数后,将配置文
件拷贝到其他节点机上,同步整个Hadoop环境参数。
参数数据同步命令如下:
  $scp-r/etc/Hadoop/confHadoopslaves:/etc/Hadoop
  注意事项:Cloudera除了上述的6个配置文件外,
还有一个专门针对ClouderaDesktop的参数配置文件
“/usr/share/Clouderadesktop/conf/Clouderadesktop.
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
平台在算法、多节点计算速度、实时数据处理、中文支
持等方面还有很多限制和不足,这也是笔者下一步改
进的方向。