毕业论文-基于Spark的分布式微博数据处理系统的设计与实现_第1页
毕业论文-基于Spark的分布式微博数据处理系统的设计与实现_第2页
毕业论文-基于Spark的分布式微博数据处理系统的设计与实现_第3页
毕业论文-基于Spark的分布式微博数据处理系统的设计与实现_第4页
毕业论文-基于Spark的分布式微博数据处理系统的设计与实现_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号_TP391北京航空航天大学毕业设计(论文)基于Spark的分布式微博数据处理系统的设计与实现 专业名称计算机科学与技术 北京航空航天大学毕业设计(论文)第I页超过一亿条,如何从庞大的微博数据中发掘出有价值的信息成为时下研究的一个热点。2)本文针对微博数据的特点,以HBase和ES为基础设计了合理的微博数据存储3)在本文的系统上,设计了两个应用,微博分类和热点检测。首先,本文用SVM4)本文的系统有效地支持了其他的相关研究如微博情感分析,评论观点分析,地北京航空航天大学毕业设计(论文)第Ⅱ页Withthedevelopmentofinformationtechnology,especiallytherapiddevemobilecommunicationandsocialnetworks,Internethasbecomethemaintoolincreasinglydiverse,increasinglylargescaleofdata.AsanimportantpartmicroblogisdevelopingatanalarmindataofmicroblogbecomeahotspotinplatformisthefoundationtosupportbasisonthetechnologyofSparkhascompletesomeworklikereal-timemicroblogqeffectivedataclassificationandmicrobloghotspotsdetection,istoprovisupporttorelatedresearchaboutsocialThemaincontributionsofthispaperareasfollows:distributedcomputingframework,useHadoopandYarnacomputingplatform.Bytheselatestbigdataprocessingthatsupportssomeoftheanalysisandcomputingjobsbasedonmicroblogdata.2)AccordingtothecharacteristicsofthemicroblogdataandbasedonHElasticsearch,wedesignedareasonaunifiedqueryinterfathequery,thecalculation,andtheanalysisofmicroblo3)Basedonthesystemdesigned,weimplementedperformanceofdataprocessingofthesystem,microblogclassifyi北京航空航天大学毕业设计(论文)classifiedintofinance,sports,technology,entertainmentdesignedamicrobloghothotwords,hotwordsclustering,andeventuallydetectthehotspotonmicro4)Thesystemeffectivelysupportanalysis,commentaryviewanalysis,locationanalysimicroblogrelatedresKeywords:Bigdata,microblog,Spark北京航空航天大学毕业设计(论文)第IV页1绪论 11.1研究背景 1 11.1.2大数据时代已经降临 11.1.3微博平台成为理论研究和应用开发的热点 21.1.4有必要构建面向微博大数据处理平台 31.2国内外研究现状 41.2.1微博研究现状 41.2.2大数据处理技术现状 51.3研究目标与内容 61.4论文结构组织 82相关技术综述 9 9 9 3分布式微博数据处理系统的设计 3.1系统需求 3.2设计原则 3.3系统总体架构设计 3.4微博数据存储方案设计 3.4.1微博数据的结构 3.4.2微博数据存储的需求 3.4.4Elasticsearch索引模型 北京航空航天大学毕业设计(论文)第V页3.4.5最终存储方案 3.5组件整合及统一查询接口的设计 3.6微博分类算法设计 3.6.1SVM分类算法介绍 3.6.2微博分类设计 3.7热点检测算法设计 3.7.1热词检测 21 213.7.3Canopy聚类算法介绍 223.7.4文本相似性度量 3.7.5热点事件检测设计 3.8本章小结 4分布式微博数据处理系统的实现 254.1系统开发环境 4.1.1平台环境和开发语言 4.1.2技术基础 4.2系统部署 4.2.1集群准备工作 26 4.3微博数据存储的实现 4.3.1表和索引的建立 4.3.2数据的导入 4.4组件整合及统一查询接口的实现 北京航空航天大学毕业设计(论文)4.4.3查询接口的实现 4.5微博分类的实现 4.6微博热点检测的实现 4.6.1热词检测的实现 4.6.2热词聚类的实现 404.7本章小结 5实验验证 5.1实验环境 5.2功能实验 5.2.1实验目的 5.2.2实验过程 5.2.3实验结果分析 455.3性能实验 5.3.1实验目的 465.3.2实验过程 465.3.3实验结果分析 496总结与展望 6.1工作总结 6.2工作展望 致谢 参考文献 附录 附录A系统部署相关文件 55 A3hadoopmapred-site.xml A4hadoopyarn-site.xml A5Hbasehbase-site.xml 北京航空航天大学毕业设计(论文) B1ES索引创建代码 北京航空航天大学毕业设计(论文)1绪论Sougo,购物网站Amazon、taobao等大型网站,它们的用户规模庞大,网注册人数早已超过5亿。CNNIC第33次中国互联网络发展状况调查统计报告4]显示截至2013年12月,我国微博用户规模为2.81亿,网民中微博使用率为45.5%,新浪微博大数据时代的到来,使得原有的数据挖掘方法和BI(BusinessIntelligence)工具已北京航空航天大学毕业设计(论文)越多的认识到企业数据的重要性。“纽约时报”在2012年2月的一篇专栏中称,“大将开始这一进程。”新技术的发展催生了新的交流手段,微博(Microblog)平台提供服务允许用户以网台虽然具有强大的用户粘性和用户群体,但在其消息传播的功能上远落后于微博平台。目前在中国,微博相对于其他传统的SNS平台具有较大优势,是研究与应用的热点。注册人数早已超过5亿。CNNIC第33次中国互联网络发展状况调查统计报告截至2013年12月,我国微博用户规模为2.81亿,网民中微博使用率为45.5%。尤其是在突发和北京航空航天大学毕业设计(论文)第3页热点事件中,微博的影响规模和传播速度超越了普通博客和传统的新闻媒体。2008年5月12日,中国四川汶川发生大地震,Twitter在约14时35分33秒披露首条消息;包括临武瓜农事件、校车超载事故,以及2014年4月起在全国产生巨大影响的“幼端的信息获取方式提高了事件的采集时效性;而带有follow(跟随、关注)特征的用户其内容的传播成本(包括时间成本、资源占用成本和用户使用成本)很低,其直接结果及话题检测和跟踪(TopicDetectio大数据时代的到来,使得原有的数据挖掘方法和BI(BusinessIntelligence)工不能满足实际需要,计算机科学界迫切需要寻求新的数据挖掘解决方案。2012年3月,(SDAV),在整合六个美国国家级实验室和七个大学的科研力量的基础上,开发一套新行效率(Efficiency)以及对异构(Heteroge北京航空航天大学毕业设计(论文)对传统的社交网络和微博应用等方面的研究,是最近一两年的热点。国内外这方年2月的研究报告表明,微博内容反映的用户情感特征可以用于对某些特定事件进行北航等课题组和研究团队已在这方面开展了深入研究,并取得了一些卓有成效的工作。目前针对微博已经有一些分析工具和研究成果。如新浪官方提供的工具知微1,该工具免费版提供2000以下转发传播分析;提供可视化的微博传播路径图,传播关键人1、整体展现:以可视化的表现方式展现微博传播路径,展现关键人物、统计覆盖2、粉丝属性:性别比例、地域分布、加V认证北京航空航天大学毕业设计(论文)5、其他分析:在转发数据分析的基础上,可以延伸设计出许多有趣的角度,比如容业容图1.1PKUVIS微博转发分析Google作为大数据应用最为广泛的互联网公司之一,2006年率先提出“云计算”北京航空航天大学毕业设计(论文)第6页处理技术。受到GFS和MapReduce启发,Apache开源组织开发了一个云计算平台Hadoop,现在Hadoop已经发展为一个包括分布式文件系统(HadoopDistributedFileSystem,HDFS)、分布式数据库(HBase、Cassandra)以及数据分析处理MapReduce等模块在内的完整生态系统(Ecosystem),图1.2展示了一个典型的Hadoop生态系统的构成。Hadoop现已经发展成为目前最流行的大数据处理平台,在很多大公司如Facebook¹5、雅虎、IBM被广泛使用,关于Hadoop的详细介绍见2.1节,关于HBase的详细介绍见2.2UNIFIED,ELASTIC,RESILIENT,SECUREFilesystem加州伯克利大学AMP实验室提出了一种基于内存的分布式计算框架Spark⁷l,目标是解决在大规模的特定数据集上的迭代运算或重复查询检索,其声称在某些运算时,速度比MapReduce快百倍以上。Spark发展迅速,2014年2月,该项目成为Apache顶Hadoop的Cloudera(CDH)发行版的默认流处理框架已经替换成了Spark,Mahout的支持平台也从MapReduce迁移到Spark。Spark正在成为新一代的分布式计算框架的事本研究的目标是要实现一个面向微博的分布式数据处理系统,在此系统上实现以下几点功能用以验证系统的有效性,正确性,可靠性及性能:北京航空航天大学毕业设计(论文)第7页1.高效的微博数据查询引擎,实现高效的微博数据查询引擎,支持多字段范围查询等2.微博流的实时分类,将爬虫获取的微博流实时分为政治、新闻、科技、娱乐等类别,得到微博在每个领域的活跃情况3.微博热点事件的发现与监测,在分类后的各类别微博中发现该类别下的热点事件,并且监测该事件的热度变化。根据研究目标,本文研究内容如下:本研究的主要研究内容是要面向微博的分布式数据处理系统,设计出并搭建出系统,针对系统各个组件进行整合优化,实现高效的查询和计算引擎,以及在该系统上运行几个样例算法,最终达到本研究的研究目标。首先需要搭建这样一套分布式存储与处理框架,支持大量微博数据的实时查询,查询的内容包括,按关键字查询微博,查询微博的转发树,查询用户信息。查询的条件可以是用户名,日期,关键字,并且可以统计出查询微博集合的地域分布,年龄分布,用户类型分布等统计信息。其次实现统一的查询接口,各个查询结果整合,统一接口,以便于上层应用的查询。针对微博数据的特点,设计合理的存储与查询方案,配合统一的查询接口,从而实现高效的微博数据查询。深度整合各组件,使各组件可以方便的互相访问数据。最后以微博分类和微博热点检测为应用示例,测试系统的查询与计算性能。研究目标与内容示意图如下:目标北京航空航天大学毕业设计(论文)第1章主要介绍研究的背景。首先介绍大数据的发展情况以及关于微博的一些研究第3章主要介绍对分布式微博数据处理系统的设计,首先给出了系统的需求,概括第5章完成系统的设计和实现后,根据第三章提出的功能需求对系统功能与性能进第6章总结和展望。对论文进行总结,找出论文中的不足之处,并对下一步的工作北京航空航天大学毕业设计(论文)第9页2相关技术综述ApacheHadoop|l⁸]是由Apache基金会支持的开源实现MapReduce项目,该项目包含许多子项,目前已被广泛应用于分布式环境的构建和资源管理。ApacheHadoop提供了一套能够在分布式集群上处理大数据集的编程框架,并能够实现对分布式计算机集群的管理,包括整合存储能力、任务调度、横向扩展等。该框架通过自身的容错机制实现系统的高可靠性,而不依赖于各个节点的硬件性能。该项目包括如下几个核心组件:1.HadoopCommon:通用组件,对其他组件提供基础支持。2.HadoopDistributedFileSystem(HDFS):Hadoop的分布式文件系统,提供高吞吐的数据访问。3.HadoopYARN:任务调度和资源管理框架,在其最新版本中发布,未来将用于支持多种分布式编程框架。4.HadoopMapReduce:并行运算编程框架MapReduce的一种开源实现。除此之外,还有许多基于上述核心组件的组件或子项目,如:ZooKeeper,Mahout,HBase是参照GoogleBigtable实现的开源NoSQL数据库191,它具有强一致性、性能随机写、面向列可动态修改、可水平仲缩的特性。HBase支持范围查询,支持行事务。而且HBase作为从Hadoop项目分离出来的子项目,与其无缝集成,Hadoop处理后的数据可以直接写入HBase,而HBase的数据可以直接通过Hadoop处理。Facebook选择HBase作为他们的短消息存储系统,国内的淘宝云计算平台同样运用HBase作为后台储HBase具有良好的扩展性,能按rowkey进行高效查询,能快速查询一定范围内的rowkey数据。然而HBase的易用性不好,不支持SQL语言,每条SQL语句都需要用户使用相应的HBaseAPI实现,还要考虑运用合适的Filter,是否使用查询缓存、是否使用Coprocessor等。而且HBase不支持二级索引,作条件查询时,只能全表扫描,并使用北京航空航天大学毕业设计(论文)它是由加州大学伯克利分校AMP实验室(Algorithms,Ma发,可用来构建大型的、低延迟的数据分析应用程序[20]。Apache基金会宣布旗下的ApacheSpark项目成为基金会的顶级项目,拥有顶级域名,基金会称SpApacheSpark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,RDD:Spark的核心概念是RDLineage:利用内存加快数据加载在众多的的部分分区数据丢失时,它可以通过Lineage获取足够的信息来重新运算和恢复丢失的北京航空航天大学毕业设计(论文)第11页于云计算中,能够达到实时搜索,稳定,可靠北京航空航天大学毕业设计(论文)第12页3分布式微博数据处理系统的设计网的数据处理系统的功能需求;然后,从需求角度出发,明确系统的设计原则;其3.系统有较高的可靠性与性能(吞吐量,延迟)。在明确功能需求的基础上,分析上述的系统功能需求可以得出两点要求:1)本系1.模块化原则:系统的底层存储、索引、计算引擎等模块相互分离、各个独立功能的分离、核心系统与上层应用的分离等等都要求了系统需要高度模块化,模块化的原则也让系统的复杂度有了很大的下降,但对模块间通讯和耦合提出了2.实时性原则:微博查询是用户的常用功能,要想有良好的用户体验,要尽量缩3.可靠性原则:分布式系统中部分组件存在单点故障,应该做一些措施,保证系北京航空航天大学毕业设计(论文)第13页所以保证网页的功能和性能体验优良,是系统设计和实现的一大原则,要充分微博搜索微博搜索统计分析微博分类事件检测查询接口大数据存储NoSQl应用层高图3.1系统架构图2.ElasticSearch(以4.Mahout:运用Mahout中的机器学习算法支持系统的一些运算;7.在本系统之上的应用有微博搜索、统计分析、微博分类、事件检测等。北京航空航天大学毕业设计(论文)第14页段有微博ID、微博来源、微博创建时间、地理信息(经纬度)、微博作者ID、微博配图、微博内容、转发的上一级微博的ID(如果是转发微博)、转发的根微博的ID、(如果是转发微博)、转发数量、评论数量、点赞的数量;2.用户数据,此数据是微博对应的用户的相关信息,其中包含的字段有用户UID、3.评论数据,此数据是针对某条微博的评论信息,其中包含的字段有评论的ID、各个转发微博的ID以及其对应的上一级的ID。1.能查询到一条微博的所有信息,包括博文信息,用户信息,评论信息,转发信3.本系统的微博数据应满足离线分析的需求,能高效的批量扫描一段时间所有微北京航空航天大学毕业设计(论文)第15页Hbase是一个稀疏的,排序的,长期存储在硬盘上的,多维度的映射表。HBase表是由行和列构成的,所有的列是从属于某一个列族的。行和列的交叉点称之为cell,cell是版本化的。cell的内容是不可分割的字节数组。表的行键也是一段字节数组,所以任何东西都可以保存进去,不论是字符串或者数字。HBase的表是按key排序的,排序方式之针对字节的。所有的表都必须要有主键-key。在HBase是列族一些列的集合。一个列族所有列成员是有着相同的前缀。比如,列info:text和info:uid都是列族courses的成员。冒号(:)是列族的分隔符,用来区分前缀和列名。column前缀必须是可打印的字符,剩下的部分(称为qualify),可以又任意字节数组组成。列族必须在表建立的时候声明。column就不需要了,随时可以新建。先看一info:text="转发微博…"在物理上,一个的列族成员在文件系统上都是存储在一起。因为存储优化都是针对列族级别的,这就意味着,一个colimnfamily的所有成员的是用相同的方式访问的。尽管在概念视图里,表可以被看成是一个稀疏的行的集合。但在物理上,它的是区分列族存储的。新的columns可以不经过声明直接加入一个列族。info:text="转发微博…"北京航空航天大学毕业设计(论文) "3705418322770060"t3contents:createAt="2014-05 要存储。因此若一个请求为要获取t8时间的inf定行的属性,Put要么向表增加新行(如果key是新的)或更新行elasticsearch的模型基于JSON,事实上,在ES支持插入索引、按ID获取一条记录,以及按queryString来做查询,还支持的针对微博数据的特点,本系统对微博数据的需求,结合数据库HBase和索引微博id相结合作为键的存储方案,即以time-mid为rowk中,同时在ElasticSearch中以mid为id索引微博,另外还索引微博中再查询一遍补充信息,这时要用在ES中查到北京航空航天大学毕业设计(论文)rowkey去HBase中查询。对于扫描某一时间段此信息存储在HBase中,以“原始微博id”,“id,对应的列值是该转发的上一级微博id。HBase的MapReduce接口,以类似Hadoop的方式一的web端调用,所以必须将各个查询结果整合,北京航空航天大学毕业设计(论文)*工工图3.2统一查询接口支持向量机(SVMs)在Cortes和Vapnik(1995)被引入,扩展了瓦普尼克(1982)SVMs特别适合处理高维的数据,例如文本文档的定中,它们处理类被严格限制为两个的二进制分类器问题(后面会讨论多类SVMs)。考虑到训练集D={(xi,yi),i=1,.,n},xi∈Rm,其中yi∈{-1,1}数h:Rm→{0,1}可以通过引入符号f(x)得到,北京航空航天大学毕业设计(论文)第19页学习这类模型需要从数据中决定w,wo。如果存在一个超平面,它的所有相关分类函数都和所有标签一致,例如yif(xi)>0,当i=0,…,n,那么训练样例就是线性可分的。在这个前提下,罗森布拉克(1958)证明了下面的简单迭代算法结束并返回一个6dos←sgn(y;(wTx;+wo))可以看出,D是线性可分割的充分条件是训练样例的数目n=|D|要小于或者等于m+1。这在文本分类中这种情况很可能发生,词汇表一般包括几千个关键词,通常比可用的训练样例集数目大。从SVM的原理中可以看出来,SVM是一种典型的两类分类器,即它只回答属于正类还是负类的问题。而现实中要解决的问题,往往是多类的问题,比如本系统要实现的微博分类。如何由两类分类器得到多类分类器,是一个值得研究的问题。文本分类为例,现成的方法有很多,本文用一种所谓“一类对其余”的方法,就是每次仍然解一个两类分类的问题。我们要把微博分成有5个类别,第一次就把类别1的样本定为正样本,其余2,3,4,5的样本合起来定为负样本,这样得到一个两类分类器,它能够指出一篇文章是还是不是第1类的;第二次我们把类别2的样本定为正样本,把1,3,4,5的样本合起来定为负样本,得到一个分类器,如此下去,我们可以得到5北京航空航天大学毕业设计(论文)第20页个这样的两类分类器(总是和类别的数目一致)。微博分类的时候,我们需要将该条微博去5个分类器中分别检测,是否是某类的分类。这种方法的好处是每个优化问题的规模比较小,而且分类的时候速度很快(只需要调用5个分类器就知道结果)。是要数倍于正类(因为它是除正类以外其他类别的样本之和),这就人为的造成了的“数图3.3微博分类示意图是“突发词”,即短时间内微博上上升最快的词,每隔一段时间将近期的微博分词统计北京航空航天大学毕业设计(论文)第21页微博热词的检测需要分词,统计,比较三个步骤,整个算法设计成了Spark任务,分布式运行提高效率。1.分词,原始的微博是文本信息,需要将文本进行分词处理,本文采用了著名的2.词的汇总统计,分词完成后,先将所有微博的分词结果按秒汇总,即统计每一秒内的微博中出现每个词的个数,再以每秒的词频数据,汇总出每一分钟的词频,继而统计出每一小时,每一天的词频数据。至此,可以得到任意时间内的微博的词频统计。3.比较当前时段词频与历史时段词频,将变化最大的词挑选出来即为此时段的突发热词,此过程中会需要设置过滤条件,将一些噪音词去除。3.7.2K-Means聚类算法介绍Kmeans是一种常用高效的聚类算法[22|,1967年,MacQueen将他所提出的一种算法命名为k-means算法。这种算法的基本思想是将每一个样本分给具有最近中心(均值)的聚类。k-means是数据挖掘和知识发现领域中一种重要且成功的方法。该算法是一种基于迭代的重划分策略:算法完成时将数据集划分成事先规定的K个簇类,而迭代过程中不断的优化各个数据点与聚类中心之间的距离。对于数据点集合X=[xi,…xn},个划分的中心,则有下面的目标函数:北京航空航天大学毕业设计(论文)第22页k-means算法正是基于上面的目标函数,不断寻找该函数最小值的方法。最简单的1.将所有样本分成K个初始聚类。2.将样本集合中的某个样本划入中心(均值)离它最近的聚类。(这里的距离通常是用标准化或非标准化数据算出的欧氏距离)。对得到样本和失去样本的两个聚类重新计算他们的中心(均值)。3.重复步骤2,直至所有的样本都不能再分配时为止。上述过程中,步骤1也可以不从分割出K个初始聚类开始,而从规定K个初始中数据进行“粗”聚类,得到k值后再使用K-means进行进一步“细”聚类。图3.5Canopy聚类算法示意第23页1:给定一个向量化的数据集D,选择两个距离阈值T1,T2,且T1>T2;2:随机取D中的一个数据d作为中心,并将d从D中移除;5:将所有distance<T2的点,都从D中移除;6:重复步骤3到5,直到D为空,形成多个canopy类,算法结束。3.7.4文本相似性度量在分类聚类算法,推荐系统中,常要用到两个输入变量(通常是特征向量的形式)距离根据输入数据的特征,选择一种合适的相似性度量方法.此值就是两个向量之间的夹角的余弦值。余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。向量化,再用Canopy聚类算法得到初始类的数目和中心点,然后用K-means进行进一北京航空航天大学毕业设计(论文)第24页K值和中心点3.8本章小结本章首先给出了整体的需求,概括了系统应该完成的工作,随后基于系统功能需求,制定了系统设计目标,提出系统设计原则。根据系统功能需求和设计原则,设计了系统的总体架构。后面重点介绍了微博数据存储方案的设计,组件整合及统一查询接口的设计,微博分类及热点检测的算法设计。通过本章的介绍,给出了分布式微博数据处理系统的设计,为下一步具体的实现做好准备。北京航空航天大学毕业设计(论文)第25页4分布式微博数据处理系统的实现本系统运行环境是一个8个节点的集群,每个节点的配置如下。●CPU:2颗,每颗8核心16线程(Intel(R)Xeon(R)CPUE5-26500@2.00GHz)●硬盘:6T机械硬盘,480G固态硬盘2.开发环境北京航空航天大学毕业设计(论文)第26页2.2.0(本地编译)0.90(本地编译)4.2.1集群准备工作在部署系统所需的组件之前,需要先对集群做一些准备工作,主要包括集群IP和域名的配置,集群ssh的配置,以及安装JDK和NTP服务,准备一些批处理脚本,以方便之后的软件部署工作。集群准备的流程如图4.1所示1、集群地址与域名本文搭建了一个8节点的集群,每个节点的IP和域名如下,需要在每个节点的/etc/hosts文件中添加集群地址和域名信息。北京航空航天大学毕业设计(论文)第27页域名配置好后,确保每台机器ssh可以免密码互相访问。由于每台机器的配置基本相同,所以只需要在一台机器上配置好后,将文件拷贝到其他机器,为了使这个过程更加便捷,本文使用了脚本remote.sh,此脚本可以在每个节点上执行给定的命令,如要给所有节点同步指定的文件,则可以使用remote.sh方便的3、相关软件安装为了使集群的时钟一致,需要在每个节点上安装ntp服务;另外,Hadoop、Hbase、Spark、Elasticsearch的运行都依赖于JAVA,所以需要安装JDK;一些软件的编译需要(1)将下载的JDK解压到任意目录,如/usr/java/jdk目录;(2)在/etc/profile中添加JAVA_HOME环境变量,将JAVA路径添加到PATH;(3)用apt-get安装ntp服务;(4)下载Maven,配置Path;(5)将文件同步到其它节点。由于Hadoop官方未提供64为的编译版本,所以Hadoop的部署要从编译源代码开北京航空航天大学毕业设计(论文)第28页始,编译成功后,再在其中一个节点上进行Hadoop的配置,再把文件同步到其它节点,Hadoop包含HDFS和Yarn两个模块,前者是分布式文件系统,后者是分布式计算调度框架,这两个模块需要分别启动,HDFS启动前还需要最后格式化namenode,整体的部署流程如下图。1、重新编译HadoopHadoop官方只提供32位版本,64位需要用户自己编译,将下载的Hadoop源码解压在一个目录后,用Maven进行编译,将编译后的结果放在/usr/app/hadoop-2.2.0目录。配置之前在每台机器上建立文件夹/storagel/hdfs/name,/storagel/hdfs/data。这里要涉及到的配置文件有7个:北京航空航天大学毕业设计(论文)第29页说明hadoop-2.2.0/etc/hadoop/hadoopHadoop环境变量,如JAVA__HOMEhadoop-2.2.0/etc/hadoop/yarnYARN环境变量,如JAVA_HOMEhadoop-2.2.0/etc/hadoophadoop-2.2.0/etc/hadoop/core-sHadoop核心配置,如端口hadoop-2.2.0/etc/hadoop/hdfs-shadoop-2.2.0/etc/hadoop/mapred-smap/reduce的配置,如指定调度器为hadoop-2.2.0/etc/hadoop/yarn-s这个文件里面保存所有slave节点,从bd34到bd40共7个节点,每个节点一行。的IO缓冲区大小,Hadoop的临时目录,Hadoop的用户权限控制等,详见附录A1。此文件配置了HDFS相关的信息,包括name和data的存储目录,备份NameNode(6)配置文件6:mapred-site.xml此文件配置了map/reduce相关的信息,如map/reduce的调度框架配置为Yarn,配置map/reduce的jobhistory地址等,详见附录A3。(7)配置文件7:yarn-site.xml此文件配置了Yarn相关的信息,包括resourcemanager的地址,shuffle所用的类,Yarn的web页面的地址等,详见附录A4。3、复制到其它节点用之前的remote.sh批处理脚本运行scp命令将Hadoop及其配置拷贝到每个节点。北京航空航天大学毕业设计(论文)HDFS使用之前需要将namenode格式化,执行“hadoopnamenode-format”命令,运行start-dfs.sh脚本,可以启动hdfs,启动后在hdfs的web管理界面可以看到如下NameNode’bd33.sm.act.buaa.CID-8eeal4fc-647f-4549-9c12-588e0a4BrowsethefileavatNameNodeLogs9373filesanddirectories,80174blocks=89547t::Win%:00图4.3HDFS管理界面在HDFS管理界面中,第一个表格显示了集群用大小,剩余大小,点击“LiveNodes”可以查看每个节点的详情,点击“Browsethe北京航空航天大学毕业设计(论文)第31页这里要涉及到的配置文件有3个:表4.4HBase配置文件一览说明(1)配置文件1:hbase-env.sh修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk)。(2)配置文件2:regionservers这个文件里面保存所有regionserver节点列表,从bd34到bd40共7个节点,每个(3)配置文件3:hbase-site.xml运行start-hbase.sh脚本,可以启动HBase,启动后可以在master的60010端口看到北京航空航天大学毕业设计(论文)第32页主要是配置ES的存储位置,数据分片的数目,和索引分析器分词器的相关配置,其详细配置如下。5、复制到其它节点用之前的remote.sh批处理脚本运行scp命令将HBase及其配置拷贝到每个节点。ES的启动需要在每个节点上运行命令“elasticsearch-d”。其正确运行后,在其管理界面中,用户可以看到当前集群的每个节点上,索引分片的存储情况,还可以利用界本系统中的Spark要运行在yarn模式,需要将Spark重新编译。将下载的Spark源码包解压到/usr/app/spark-src目录,在此目录用maven编译spark将生成的spark拷贝到/usr/app/3、拷贝spark到其它节点北京航空航天大学毕业设计(论文)第33页StandaloneDeploy模式,需要部署Spark到相关节点Mesos模式,需要部署Spark和Mesos到相关节点SparkContext和任务都运行在Yarn集群中SparkConext运行在本地,task运行在Yarn集群中本系统主要采用yarn-standalone模式,提交任务测试yarn-standalone模式。Spark任务运行后,在监控界面可以看到每个job的每个stage的每个task的进度情况。4.3微博数据存储的实现4.3.1表和索引的建立HBase中需要建立weibosInfo,userlnfo,commentsInfo,forwardIndex四张表。createuserlnfo','info’create'forwardIndex','inf在Elasticsearch中需要建立微博内容的索引,需要索引的字段如表4.6所示。北京航空航天大学毕业设计(论文)第34页字段名说明无发布时间无转发原始微博的ià用户名无性别无无无HBase的数据导入主要通过put方法实现。HTable的实例具有一个put的方法,其参数接收一个Put,也可以接收由Put构成的List,用于批量提交数据。ES中数据的导入通过bulkindex的方式实现。北京航空航天大学毕业设计(论文)第35页89首先,BulkRequestBuilder是个批量提交的工具,通过add方法,加入很多个单独的IndexRequestBuilder,IndexRequestBuilder对应一条索引,包含了索引的id和其他字段。BulkRequestBuilder调用execute).actionGet()方法来将创建的索引批量提交。4.4组件整合及统一查询接口的实现Spark访问HBase需要用到TablelnputFormat和TableOutputFormat,Spark的newAPIHadoopRDD方法用来执行Hadoopmap/reduce任务,将map/reduce任务的输出作为一个RDD,之后就可以像其他RDD一样就行运算了;将数据写入HBase时要用到RDD自带的saveAsHadoopDataset的方法,通过设置jobconf将数据作为Hadoopmap/reduce任务的输入,进而保存到HBase。下面的代码演示了Scan一段时间的微博作为SparkRDD的来源,并且做了一些运算之后将结果保存到HBase。5//需要读取的hbase表名北京航空航天大学毕业设计(论文)第36页代码的1-4行,构建了一个scan操作,startRow和stopRow指定将要读取的数据范代码的6-9行,构建了Hadoop任务的conf,主要指定了输入输出的表名,SCAN代码的10-12行,调用了SparkContext的newAPIHadoopRDD的方法。该方法用于从一个Hadoop任务中获取一个RDD,该方法定义如下。newAPIHadoopRDD(conf:Configuration,fClass:Class[F],kClass:Class[KnewAPIHadoopRDD接受四个参数,分别是Hadoop的conf,InputFormat的类,Key的类和Value的类,方法返回一个Key、Value对应的RDD。代码的13-16行,演示了向HBase中写数据,其写入的数据是由Put构成的RDD,通过saveAsHadoopDataset方法将数据写入,该方法接受一个Jobconf类型的参数,此参数中指定要写入的表和OutputFormat类型。Spark访问ES主要通过EsInputFormat和EsOutputFormat实现23457Configurationconf=newConfigu"crawler/msg/_search?q="+URLEncoderconf.set("es.nodes"conf.set(ConfigurationOptions.ES_HOSTJavaPairRDD<Text,MapWritable>in=sc.newAPIESInputFormat.class,String.class,MapWritable.代码的1-6行构建了ES查询任务的配置信息,如ES的节点IP,要查询的索引名,要查询的查询字符串word等。第7行调用newAPIHadoopRDD得到以Text,MapWritable为Key和Value的RDD。北京航空航天大学毕业设计(论文)第37页4.4.3查询接口的实现目前微博数据分别存储在HBase和ES中,所以查询的时候需要整合二者的查询结果,给上层应用提供统一的查询接口。(pageNumber-1)*pageSize,page.getSort().iterator)该方法主要提供给应用层调用,方法有4个参数,查询参数SearchParams,页号pageNumber,页大小pageSize,以及排序方式sortType,该方法返回经过Page包装的微博内容,除了包含具体的微博内容外,还包含总页数,当前页数等分页信息。查询参数searchParams是一个key-value字典(map),里面的“all”字段代表查询字符串,“date_from”和“date_to”分别是微博发布的起止时间(Date类型)。排序方式sortType可以是auto,releasedate,repostcount分别表示按匹配度、发布时间、转发数排序。4.5微博分类的实现微博的分类需要先采集分类用的训练集,对训练集进行分词,提取特征值,再用向量化的数据训练出SVM分类器,这样后面就可以对实时微博进行分类预测了。其流程如图4.4所示。1、微博分词北京航空航天大学毕业设计(论文)第38页微博分类第一步是要采集训练集,本系统用一些关键微博账号所发布的微博作为各个分类的样本,在索引层中采集“新浪体育”、“新浪财经”、“新浪娱乐”、“新浪科技”、“社会新闻”五个账号的微博作为“体育”、“财经”、“娱乐”、“科技”、“社会”五类的训练样本,共16000条,其中“体育”、“财经”、“娱乐”、“科技”、“社会新闻报道”的微博分别为8000,4000,2000,1000,1000条,以保证每次分类的时候不会发生“数据集倾斜”。第二步是要对微博进行特征提取和向量化,先对训练集微博进行分词,提取其中的名词和动词作为微博特征,用TF-IDF值1241作为该特征的值,得到一个多维的向量,每一维代表一个词在该微博中的特征值。接下来要开始模型的训练,本系统使用spark的MIlib提供的SVM分类器,将二分类扩展为多分类。模型训练好之后,就可以开始微博分类的预测了,预测时,先将微博分词后用TF-IDF提取特征值,再用训练好的模型分别比对,得出该微博所属的分类。4.6微博热点检测的实现4.6.1热词检测的实现北京航空航天大学毕业设计(论文)第39页分词主要是将输入微博内容切分成一个个的单词,返回一个词汇列表,具体的实现中先用IK分词器将输入内容分词后,过滤掉不需要的词(单字词,乱码词),再返回词频的汇总流程如下图所示。首先将输入的日期参数分割成以天为长度的时间段。对每个时间段,先按秒汇总该时间段每个词的频度,接着以每秒的数据计算出每分钟的词频数据,接着统计出每小时、每天的词频情况。3、热词检测比较当前时段词频与历史时段词频,将变化最大的词挑选出来即为此时段的突发热词,此过程中会需要设置过滤条件,将一些噪音词去除。北京航空航天大学毕业设计(论文)第40页2013-07-1716.00x#23456789图4.7热词检测可视化界面4.6.2热词聚类的实现热词的聚类运用的Mahout中的Canopy和K-Means聚类算法。Pathoutput_kmean=newPath(kHadoopUtil.delete(conf,sHadoopUtil.delete(conf,output_HadoopUtil.delete(conf,outputgenerateSamples();CanopyDriver.buildClusters(conf,samples,ounewCosineDistanceMeasure(),0.9,0.9北京航空航天大学毕业设计(论文)第41页words=wordList.toArray(words);KMeansDriver.buildClusters(conf,samples,newPath(canopyOut,Cluster.INITIAL_CLUSTERS_DIR+"-final"loadClustersWritable(newPath(kmeanO事事北京航空航天大学毕业设计(论文)第42页5实验验证前两个章节分别介绍了面向微博的分布式数据处理系统的详细设计及核心功能模块的具体实现过程。本章将对本系统的功能和性能进行测试和分析。首先介绍实验环境,然后针对系统功能设计具体的实验,实施实验并分析测试结果,验证本系统的可用性。本系统的实验采用了与平台运行相同的环境,详见4.1.1节。本实验的目的是,在配置好实验环境之后,在本系统中,验证以下各项功能:1)微博查询,提供用户查询微博的界面;2)微博分类,演示微博实时分类的效果;3)热词检测,提供给用户查询某一时间段热词的界面;4)热点事件检测,用户能查询某一时间段的热点事件。*c总北京航空航天大学毕业设计(论文)在首页输入关键字“临武瓜农”,选择起止时间后,点击搜索按钮后,出现图5.1全部体育财经娱乐科技社会大帅林V:男神一个月了?另:貌似我在第二学看见大嘴罗伯茨了,那时图5.2微博分类展示用5类微博各1000条,计5000条,进行分类实验,实验结果如下表,每一行是1000条微博样本,一行的各列代表分类结果。以10属于体育,10条属于财经,16条属于娱乐,1条属于科技,6条属于社会:表5.1微博分类实验结果体育娱乐体育6娱乐8北京航空航天大学毕业设计(论文)第44页类别召回率体育娱乐4、热词检测的实验本系统用了2013年7月15日到2013年7月30日这半个月的近3亿条微博作为数据集,进行了离线分析。以下是针对微博分析出的2013年7月17日连续四个小时的热词:右上角右上角右上角右上角右上角界面界面界面陈紫函界面界面浏览浏览浏览浏览卡片卡片浏览卡片卡片卡片二维码二维码二维码二维码主页102岁陈浩民主页主页二维码主页推知电影剧本102岁102岁102岁之后不久主页102岁发直临武1200公里临武直落在有喜城市管理行政执法局不约而同1200公里恩仇记卷烟厂芝麻糊下面给出了经人工搜索后,该段时间的一些热门事件:北京航空航天大学毕业设计(论文)图5.3热词对应的热门微博16天=>0.98181818181818181200公里=>0.9818181818181818女大学生10天=>0.618181818181818217日郴州陈紫函审查实名副部级新华社记者图5.4热词聚类的结果北京航空航天大学毕业设计(论文)第46页本实验的目的是,在配置好实验环境之后,不同条件下处理微博数据,验证以下本1)微博查询的性能;2)微博批量扫描的性能;3)微博分类的性能;4)微博热词检测的性能;5)微博热词聚类得到热点事件的性能。1、微博查询的性能实验过程:调用查询接口,统计查询一系列关键词所花的时间,在浏览器上查询关键词第一次查询响应时间第二次查询响应时间马航北京实验结果分析由于ES及HBase都有缓存的设计,所以刚查询过的关键词,立即进行第二次查询时,会直接利用缓存里的结果,响应时间会缩短很多。单独就首次查询相应时间而言,通过几个关键词的查询响应时间可以看出,其响应时间基本保持在亚秒级别,基本满足用户在网页上查询及时返回结果的需要。2、微博批量扫描的性能实验过程:通过Spark扫描某一时间段的所有微博,统计不同数据规模下,扫描所花的时间。北京航空航天大学毕业设计(论文)第47页表5.5微博扫描性能实验结果时间段所花时间77731图5.5吞吐量与worker数量的关系图5.6吞吐量与微博规模的关系北京航空航天大学毕业设计(论文)第48页由于本系统采用了Yarn和Spark分布式框架,可以充分利用各台机器的资源,在切分任务时,能很好的根据数据本地性来对输入数据进行划分,避免产生大量的网络IO。总体来说Yarn的资源调度策略和Spark的并行计算模型保证了系统较高的扩展性和稳定性。从实验结果中,也验证了本文提出的分布式微博数据处理系统的设计与实现的合3、微博分类的性能实验过程,将5000条微博分类,统计所花时间。实验结果:5000条微博分类用时2.4秒,分类速度达到2083(条每秒),完全满足实时微博分类的需求。4、微博热词检测的性能实验过程:调用热词查询的接口,统计查询某一小时的热词所花的时间。时间段热词计算所花时间热词计算算法上并没有多少复杂度,所花时间主要在某一时间段所有词频的数据读取上,从实验结果可以看出热词的查询所花时间维持在数秒之类,基本可以满足普通交互式查询的需要。5、热词聚类得到热点事件的性能实验过程:调用热词聚类的接口,统计对某一小时的热词及其对应微博聚类所花的时间段Canopy所花时间Kmeans所花时间实验结果分析北京航空航天大学毕业设计(论文)第49页北京航空航天大学毕业设计(论文)第50页6总结与展望平台新浪和腾讯的注册人数早已超过5亿。新浪微博每日发博量超过一亿条,如何从庞北京航空航天大学毕业设计(论文)第51页1.系统更加通用化。本文实现的原型系统是面向微博数据集的,而使用大数据的3.改善算法效果。本系统中使用的分类算法和热点检测算法仍然比较粗糙,其准4.提高算法效率。目前本系统的热词分析和聚类效率都不是很高,尤其是聚类的北京航空航天大学毕业设计(论文)致谢养了我解决问题的能力,同时师兄严谨的科研精神和认真的工作态度也让我受益匪浅。感谢一起在实验室参与毕设的10级本科生马国庆、姜皓、林璐、吴博、刘俊伟、北京航空航天大学毕业设计(论文)参考文献[3]BigDataDefinition:WikiPEDIA[EB/OL]./wiki/Big_data./blog/2012/03/29/big-data-bTwitter[A].InProceedingsof2010IEEE/WIC/ACMInternationalConferenceonWebIntelligenceandIntelligentAgentTe[8]BrendanO'Connor,MichelKrieger,DavidAhn,TweetMotif:ExploratoTopicSummarizationforTwitter[A].InProceedingsoftheFourthInternationalAAAIConferenceonWeblogsandSocialMe[9]VijayErramilli,XiaoyuanYang,PabloRodrigueSONG:Soc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论