《网络舆情监测系统方案建议书.doc》由会员分享,可在线阅读,更多相关《网络舆情监测系统方案建议书.doc(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录江苏省网络舆情监测系统方案建议书目 录1互联网舆情系统概述11.1什么是互联网舆情11.2什么是网络舆情监测系统11.3网络舆情监测系统的特点22舆情监测系统总体设计方案32.1主要设计思想和设计目标、设计原则32.2系统基本功能42.3技术架构介绍52.4方案关键技术82.4.1全新的数据结构:数据立方(DataCube)82.4.2更加稳定的云计算调度实现:Jobkeeper112.5云创舆情监测系统的特点132.6系统可靠性与扩展性142.6.1系统可靠性142.6.2系统扩展性162.7系统设计性能172.7.1数据存储能力172.7.2查询分析计算性能182.8数据存储子系统1
2、82.8.1海量数据分布式数据存储构架182.8.2适应应用需求的混合存储策略202.8.3HDFS数据存储212.8.4HBase数据存储242.8.5Database数据存储262.8.6数据存储的可靠性282.8.7数据压缩292.9计算与存储集群的可靠性与负载均衡设计312.9.1计算与存储集群Master单点失效容错处理312.9.2计算与存储集群的负载均衡处理372.9.3HDFS的可靠性设计402.9.4HBase可靠性设计422.9.5MapReduce计算可靠性设计442.10查询统计计算可靠性与负载均衡设计462.10.1基于Zookeeper的单点失效和负载均衡设计462
3、.11系统安全性设计482.11.1安全保障体系框架482.11.2云计算平台的多级信任保护502.11.3基于多级信任保护的访问控制542.11.4云平台安全审计562.11.5云计算综合安全网关591 互联网舆情系统概述1.1 什么是互联网舆情网络舆情是通过互联网传播的公众对现实生活中某些热点、焦点问题所持的有较强影响力、倾向性的言论和观点,主要通过邮箱、帖子、博客、网页等实现并加以强化。当今,信息传播与意见交互空前迅捷,网络舆论的表达诉求也日益多元。如果引导不善,负面的网络舆情将对社会公共安全形成较大威胁。对相关政府部门来说,如何加强对网络舆论的及时监测、有效引导,以及对网络舆论危机的积
4、极化解,对维护社会稳定、促进国家发展具有重要的现实意义,也是创建和谐社会的应有内涵。1.2 什么是网络舆情监测系统“网络舆情监测系统”是针对在一定的社会空间内,围绕中介性社会事件的发生、发展和变化,民众对社会管理者产生和持有的社会政治态度于网络上表达出来意愿集合而进行的计算机监测的系统统称。 “网络舆情”是较多群众关于社会中各种现象、问题所表达的信念、态度、意见和情绪等等表现的总和。网络舆情形成迅速,对社会影响巨大,加强互联网信息监管的同时,组织力量开展信息汇集整理和分析,对于及时应对网络突发的公共事件和全面掌握社情民意很有意义。 “网络舆情监测系统”具备的功能主要有:采集、分析、报警和跟踪等
5、,通过互联网搜索引擎智能提取网络内容,再对提取的内容进行自动分类聚类、关键词过滤、主题检测、专题聚焦等信息处理过程,生成舆情统计分析报表,并提供追踪和趋势分析等信息服务。舆情监测的范围可覆盖新闻评论、BBS、聊天室、博客、RSS、网上调查、网上访谈、QQ群、MSN及微博等各种网络形式。1.3 网络舆情监测系统的特点1、 自动实时监测由于网络传播扩散的速度及快,因此要求系统能实时自动的实现对网络内容的监测,以便能及时发现舆论危机并采取措施处置;2、 面广量大互联网已是信息的海洋,因此要求舆情监测系统能对互联网上的海量信息进行提取,并能对提取到的海量数据进行分析处理,找到并提供有价值的舆情情报,为
6、处理网络突发的公共事件提供技术保障;3、 分析复杂由于网络语言的用词不规范,以及互联网使用者有意无意的设法逃避对舆论的监察,因此对舆情监测系统的分析提出了较高的要求。云技术方案建议书 第62页2 舆情监测系统总体设计方案2.1 主要设计思想和设计目标、设计原则设计思想:将海量数据分解到由大量X86架构计算机构成的低成本云计算平台上进行实时处理,依靠分布式云计算平台并行处理的优势,提升海量数据分析的实时性和性价比。设计目标:利用大量性价比高的计算机,建立云计算平台,为海量数据提供廉价的存储平台和高效的处理平台,并为舆情监测系统提供统计和分析等多种业务支持。除了为各地市建设云计算平台外,还在省中心
7、建设备份中心管理查询全省数据,实现数据的分域管理。充分利用云计算平台的廉价高效的数据处理能力、动态可伸缩性、高度容错性和响应实时性,对现有的平台和数据进行整合升级,达到较之传统升级方案有一个数据量级的性能价格比提升。设计原则:(1)前瞻性技术与实际应用环境相结合本项目是既是先进技术应用示范项目,又是工程实施型项目。把握技术正确性和先进性是前提,但是前瞻性技术实施必须在云计算平台的实际应用环境和实际监控流量的基础上进行,必须结合云计算平台的实际情况进行研究和开发,只有与实际应用环境相结合才有实际应用价值。(2)学习借鉴国外先进技术与自主创新相结合在云计算平台用于超大规模数据处理方面,国内外几乎是
8、在一个起跑线上;但在关键技术研究及既往的技术积累方面,国外一些大公司有着明显的优势。我们将积极学习借鉴国外先进的云计算技术,同时与自主创新相结合,形成功能强大、性能卓越的能够满足实际应用环境需求的云计算数据处理和分析平台。2.2 系统基本功能系统主要把通过邮箱、帖子、博客、网页等中的内容获取到之后,对其中的海量舆情数据进行存储和分析,从而把握整个网络舆论的负面影响,并加以引导。系统的基本功能和性能如下:有效资源整合将江苏省公安厅13个地市目前用于存储和处理的资源进行有效整合,在现有资源上搭建主流云存储系统,并提供对外服务超高性价比采用云计算模式,具有前所未有的高性价比,在线扩容、在线升级海量网
9、络数据汇总能够对PB级海量网络数据进行存储分类。海量网络数据高效处理对存储下来的海量网络数据进行并行处理支持多种舆情分析功能支持关键词搜索、统计、行为审计、行为轨迹分析、物品行为分析等功能高效实时检索能力对经过索引之后的海量数据,能够提供快速实时的查询检索功能2.3 技术架构介绍云计算中心在架构上可以按地域特征为各个地市创建一个独立的云计算处理中心,各地市在处理自己的数据后除了保存在自己的平台外,还将数据备份至省中心备份平台,省中心可以在备份中心对全省数据进行检索。省市采用统一的数据存储结构和查询接口,省市之间通过专门的接口进行数据交互。这样,可以实现各市管理各市的数据而省中心可以查询全省所有
10、数据。具体架构如下图所示:图表 云创舆情监测系统拓扑图针对舆情监测系统的海量数据处理特点,结合云创在大数据处理方面的先进技术和丰富经验,我们提出了基于云计算技术的舆情监测系统解决方案,以云存储应对互联网的海量数据处理要求,以云创独有的云处理技术和先进的分析算法对海量数据进行分析处理,实时迅速的提供舆情分析处理结果。图表 云创舆情监测系统整体方案 系统通过信息提取技术监测互联网邮箱、帖子、博客、网页的内容,并能自动跟踪到最新的内容,将数据采集后发往cProc云处理平台。cProc是云创自主研发的云计算处理技术平台,是一种处理海量数据的并行编程模型和计算框架的高效分布式云处理平台。cProc通过把
11、对数据集的大规模操作分发给网络上的每个节点实现数据处理,每个节点会周期性的把完成的工作和状态的更新报告回来。随着节点的增多,cProc的处理能力将成倍数增长。cProc支持100GBps以上量级的数据流实时索引,1s内响应客户请求,秒级完成数据处理、查询和分析工作。cProc的核心是DataCube和Jobkeeper。数据立方(DataCube)是一种用于数据分析与索引的技术架构。通过数据立方对元数据进行分析之后,可以大大加快数据的查询和检索效率。JobKeeper是一个无管理节点的统一化任务处理系统,是一个用于处理和生成大规模数据集(processing and generating la
12、rge data sets)的云计算调度的实现。通过cProc处理平台处理过的数据被存储在服务器集群上,可以快速方便的被舆情监测管理平台查询读取,舆情监测管理平台还能友好的实现和操作人员的互动交互,实现定制化的分析监测。针对舆情监测系统的特点,cProc在接收到采集到的海量互联网信息内容后,通过Jobkeeper把任务分解到云处理中心的各个节点上并保证云计算中心各节点的负载均衡,各节点通过数据立方并行对数据进行处理,节点可以对数据进行关键词、统计、联系人分析、人员关系分析、物品、行为等不同纬度的处理,创建索引、全文索引、倒序索引等并存储到云计算中心的云存储设备上,提供关键词、统计、分析、人员之
13、间分析等等应用。通过数据立方对数据进行分析创建索引后,可以大大加快海量数据的检索效率。2.4 方案关键技术 2.4.1 全新的数据结构:数据立方(DataCube) 数据立方以B+树的结构建立了字段的索引,每个B+树结构的字段索引相当于一个数据平面,这样一个全局数据表与其多个重要字段的索引就组成了一个类似于立方体的数据组织结构,我们称之为“数据立方(DataCube)”。如下图所示: 数据立方(DataCube)是一种用于数据分析与索引的技术架构。它是针对大数据(big data)的处理利器,可以对元数据进行任意多关键字实时索引。通过数据立方对元数据进行分析之后,可以大大加快数据的查询和检索效
14、率。数据立方的原理:由一个或多个管理节点,一个或多个处理及存储节点(数据节点)组成,系统在数据建立与查询时,分布式建立与应用数据立方索引结构,在数据建立及存储时,对规范化的数据设定1个或多个关键字字段,将不同的关键字字段分别建立索引,每张不同的索引生成一张独立的B+树结构,多个B+树结构垛叠在一起,与全局数据表形成一个完整的数据立方结构。利用数据立方存储索引结构,可方便快捷的在海量数据云处理系统中准确检索定位数据。B+树的插入仅在叶结点上进行。 每插入一个(关键码-指针)索引项后都要判断结点中的子树棵数是否超出范围。当插入后结点中的子树棵数大于 m 时, 需要将叶结点分裂为两个结点。它们的双亲
15、结点中应同时包含这两个结点的最大关键码和结点地址。此后, 问题归于在非叶结点中的插入了。在非叶结点中关键码的插入与叶结点的插入类似, 非叶结点中的子树棵数的上限为m, 超出这个范围也要进行结点分裂。在做根结点分裂时, 因为没有双亲结点, 就必须创建新的双亲结点, 作为树的新根。这样树的高度就增加一层了。当有新的记录到来时,我们要将新的数据记录对应的一条索引记录插入到所有的字段索引中,这时要采取一定的写入策略。当新的记录积累到n1条或经过一定时间t1时,对于存储在MemCache中的字段索引,可以将这些数据记录对应的索引记录一次性批量写入;当新的记录积累到n2条或经过一定时间t2时,可以将这些数
16、据记录对应的索引记录一次性批量写入HDFS(固态磁盘)上的索引文件。对B+树的查找类似于二分查找,对于m阶,叶子节点中记录个数为n的B+树来说,其查找的时间复杂度为O(log m+(n+1)/2)。因此对于值匹配和范围查找来说,有很快的速度。此外,由于对值按照大小顺序进行了指针链接,因此m阶B+树还可以进行对值进行顺序查找。 我们对重要字段建立索引,存储在HDFS(固态磁盘)上。将最近常用的字段索引加载到MemCache中,同时删除最不常用的字段索引以节省空间。详细来说,对于每次查询,系统统计每个字段索引被调用的次数,对于被调用次数最多的那些字段索引就被加载到MemCache中,而在MemCa
17、che中被调用次数最少的某些字段将被删除。数据立方是凌驾于数据存储层和数据库系统之上的,通过数据立方解析后,可以大大增加数据查询和检索等业务,可以让系统平台具备数据实时入库、实时查询、查询结果实时传输等优势。2.4.2 更加稳定的云计算调度实现:JobkeeperJobKeeper是一个无管理节点的统一化任务处理系统,是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。用户定义一个Split函数来处理一个大的数据集,对该数据集进行拆分(split),再定义一个Proc函数将所有这些数据分片(split)进行分析处理
18、,最后定义一个Combine函数进行对所有分片结果的聚合。很多现实世界中的任务都可用这个模型来表达。该编程模型的使用相当灵活,开发者可以省略其中任何一个模块,甚至只取其中一个模块进行分布式计算也可以,并且对于Split、Proc和Combine函数,开发者可以不受任何限制的进行开发,不用考虑任何分布式计算的因素。JobKeeper应用程序最基本的组成部分包括Split、Proc和Combine,以及一个创建Job的执行程序,是一组任务处理节点做成的族群,每个处理节点提供一定的公用内存单元(提供序列化的服务,基于HDFS或者其他分布式存储系统),各个节点通过共享的内存单元来保证处理任务的可靠性和
19、一致性。JobKeeper对外提供一组RPC和一组API接口的服务,用户只要根据对应的任务模式设计任务,新建任务并提交任务给JobKeeper框架即可。JobKeeper中的各个处理节点会根据自身的负载情况通过GET的方式从共享的内存单元中获取任务信息并执行。Job通过提供的对外接口(RPC的服务或接口jar包)添加到JobKeeper之中,在添加过程中,JobKeeper验证整个Job的准确性,若Job信息有误那么Job提交失败,于是提交任务的程序会获得一个返回值“false”,上传程序检测错误情况,验证无误后重新添加。如果成功则返回“true”。如果Job被正确的提交至JobKeeper框
20、架之中,那么处理节点们将会根据自身情况主动从JobKeeper中获取将要执行的任务列表并执行。在执行的过程中实时的更新Job的状态,如果Job一切执行成功那么最终的索引结果文件将会被上传至HDFS上,同时任务结束,反之重复执行多次,仍失败的话那么便将错误日志输出,人工排查。每台处理节点实时监控本机的任务运行情况,遇见任务运行失败的情况会重新调度,如果本机的使用性能值小于系统启动时设置的阈值时,处理节点会主动的去公用的内存单元去获取新的任务,此时会添加一个全局的系统锁,防止在同一时刻同一任务被分配多次至不同的处理节点上。当任务获取完毕,锁资源被释放,任务在处理节点上开始运行,实时更新任务的状态,
21、当任务完成后,任务信息会输出到日志中去,然后删除共享内存单元中的相关信息。对比传统MapReduce模型,JobKeeper适用于任何分布式文件系统,或者没用任何文件共享的各个独立服务器之上,解决了MapReduce依赖于HDFS的问题。并且JobKeeper去除了中心节点,不会存在中心节点服务down掉以后导致整个任务失败的情况。2.5 云创舆情监测系统的特点1、 速度更快云创舆情监测系统采用云创的云计算核心技术,充分发挥云创在云计算方面的优势,在分析处理、查询方面将速度更快。2、 高可靠性基于对云计算可靠性深厚的研究积累,彻底解决了当前分布式计算平台易出现的单点故障问题。任何一个节点出现故
22、障,系统将自动屏蔽,而且不会出现丢失数据的现象,提高了系统的稳定性。3、 可伸缩性:在不停机的情况下,增加节点,平台的处理能力自动增加;减少节点,平台的处理能力自动缩减。这样,可以做到与云计算平台的无缝对接,根据计算和存储任务动态地申请或释放资源,最大限度地提高资源利用率,并能轻松的把现有的数据迁移到云计算平台上来,即使在升级时也无须停机,彻底解决升级给用户带来的困扰。4、 高性价比:采用X86架构廉价计算机构建云计算平台,用软件容错替代硬件容错,大大节省成本。特别适合因数据量增长导致需要对系统升级的用户,通过把数据迁入云计算平台存储处理,在目标性能和可靠性条件下,可比传统的小型机加商用数据库
23、方案节省10倍左右的成本,花费更低,性能更高。而且云计算平台具有可伸缩和高可靠性,以后可以在不停机的情况下通过增加节点来应对数据量的增长,升级更简单更便宜,彻底摆脱因系统升级给用户带来的困扰。2.6 系统可靠性与扩展性2.6.1 系统可靠性HDFS可靠性概述:HDFS包括元数据节点(Namenode)和数据节点(Datanode),Namenode是一个中心服务器,负责管理文件系统的Namespace和客户端对文件的访问。,Datanode在集群中一般是一个节点一个,Datanode是文件系统中真正存储数据的地方。DataNode所在机器挂了怎么办? HDFS(Hadoop Distribut
24、ed File System)默认的最基本的存储单位是64M的数据块(block)。 一个文件对应的所有BLOCK全部按照一定的部署策略存在于DataNode上,文件的所有block为了容错都会被复制(一般为3份),每个文件的block大小和replication因子都是可配置的。Datanode每3分钟向Namenode发送心跳,如果10分钟datanode没有向Namenode发送心跳,则Namenode认为该Datanode已经dead,Namenode将取出该Datanode上对应的block,对其进行复制。 Namenode挂了怎么办?Namenode主控服务器,为了避免主节点失效而
25、影响整个系统正常工作,我们采用基于HDFS的改进方案Avatar,同时可开启两个Namenode,主Namenode和secondNamenode,实际工作的只有主Namenode。主Namenode将所有关于文件和目录的操作记录都会写入日志,并定时序列化到本地做镜像,并且保存到本地的NFS服务器,同时secondNamenode读取主Namenode所在NFS服务器的日志并对镜像日志做CheckPoint。故障后,secondNamenode升级为Namenode,通过镜像数据和文件日志迅速恢复系统。数据服务器可通过分布式协同服务机制得知关于主控服务器的更迭情况,然后向新的主控注册并继续发送
26、心跳。 HBase可靠性概述:HBase系统由HBase集群和ZooKeeper集群组成。HBase的可靠性由其自身的ZooKeeper机制保证。HBase包括Hregion服务器群和Master主服务器构成。Master负责管理Hregion。物理上,一张表是被拆成多个块,一张完整的表格是保存在多个Hregion上面的。master挂掉怎么办?由于master只维护表和region的元数据,因此master下线短时间内对整个hbase集群没有影响,master保存的信息全是可以冗余信息(都可以从系统其它地方收集到或者计算出来),因此,启动HBase时可以再启动一个备用的master,实际工作
27、的只有主master,当主master所在节点宕机,会自动切换到备用master所在节点。Hregionserver挂掉怎么办?物理上,表格分为多个Region一张表是被拆成多个块,一张完整的表格是保存在多个Hregionserver上面的。并且分布在多台Hregionserver中,物理上所有数据存储在Hadoop的HDFS上,由一些子表服务器来提供数据服务,提供服务时,子表先查HMemcache,如果没有,再查HDFS上的HStore,由HDFS来保证数据的可靠性。如果丢失Region的数据所在节点的datanode宕机,HDFS会自动映射到其他节点,从而保证Region数据的可靠性。Zo
28、oKeeper挂掉怎么办?Zookeeper分为2个部分:服务器端和客户端。启动Zookeeper服务器集群环境后,多个Zookeeper服务器在工作前会选举出一个Leader,在接下来的工作中这个被选举出来的Leader死了,而剩下的Zookeeper服务器会知道这个Leader死掉了,在活着的Zookeeper集群中会继续选出一个Leader,选举出leader的目的是为了可以在分布式的环境中保证数据的一致性。MapReduce可靠性概述:MapReduce整体上可以分为这么几条执行的线索,JobTracker与JobTracker是一个master服务,软件启动之后JobTracker接
29、收job,负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。TaskTracker是运行于多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker都需要运行在HDFS的DataNode上,JobTracker0挂掉怎么办?在系统启动时同时启动备份JobTracker1节点,当JobTracker0节点宕机时,ZooKeeper会在其上启动JobTracker进程替代JobTracker0节
30、点,虚拟IP会指向此节点,TaskTracker会注册到此节点上,未完成的MapReduce作业会被ZooKeeper调度到此节点上重新执行。TaskTracker挂掉怎么办?JobTracker是一个master服务,软件启动之后JobTracker接收job,负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。并且将其负责的task分配给其他TaskTracker上。2.6.2 系统扩展性已有的Hadoop集群规模Hadoop是一个相当有弹性和扩展性的平台,它既可以在成千上万的机器上跑,也可以在很小规模上运行。目前最大的Ha
31、doop集群有四千台机器。 Hadoop扩展优势:与其它分布式系统相比,使用Hadoop的好处在于它的水平的可扩展性,在少量结点上,用Hadoop处理有限的数据时,不能展示Hadoop的性能,因为开始Hadoop程序相关的代价比较高,其它并行/分布程序方式,比如MPI (Message Passing Interface)可能在2台,4台或许10多台计算机上有更好的性能,尽管在少量机器上协同工作在这种系统上也许会取得更好的性能,但这种为性能所要付出的努力是非线性的增长。用其它分布式框架所写的程序在从十台机器的级别到成百上千台机器需要大量的重构工作,这也许要程序重写几次,并且其它框的基础元素会限
32、制应用的规模大小。但是特别设计的Hadoop有着水平的可扩展性,一个Hadoop程序写完后,在10个结点上运行,如果迁徙到更大的集群上运行,几乎不需要做什么工作, Hadoop平台会管理数据和硬件资源并提供与可用资源成比例的可靠性能。Hadoop扩展方法:HBase集群具备线性扩展功能,只需要将配置好的region server节点加入到集群中。MapReduce集群具备线性扩展功能,只需要将配置好的TaskTracker节点加入到集群中,JobTracker节点就会将Map或Reduce任务分配给此节点处理。HDFS具备线性扩展功能,只需要将配置好的DataNode节点加入到集群中,并且在集
33、群空闲时执行balancer工具以平衡集群中DataNode的数据块负载。2.7 系统设计性能2.7.1 数据存储能力原始交管数据存储采用云存储平台,分布式文件系统存储服务。性能指标:l 存储量指标单系统应支持PB级存储容量。l 吞吐量指标吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。吞吐量根据应用系统读写方式和应用系统读取存储内容大小分成四个指标。分布式文件存储系统按照32个节点并发500个用户计算,单节点8块2T大小的硬盘情况下,每个节点指标具体内容如下表所示:表8分布式文件存储系统吞吐量指标编号读写方式存储内容大小平均吞吐量指标(MBps)1100%读1GB602100%写1G
34、B303100%读100KB304100%写100KB15图表 1 分布式文件存储系统吞吐量指标l 系统响应时间指标千兆网络环境下,局域网客户端从分布式文件存储系统中读取4096字节存储内容的响应时间应不高于50ms。交管数据存储采用HDFS性能指标,如下:l 数据读取性能:4080MB/s节点;l 数据规模:10PB规模;l 数据负载均衡时间:可依据流量配置而确定;l 集群重新启动时间(10PB规模):分钟级别;2.7.2 查询分析计算性能 对任何实时分析操作的反应时间小于10秒; 查询、统计操作的首次响应时延小于1秒; 并发操作终端数大于30个 ; 基于交管数据的统计,记录5000万条以内
35、,30秒可以统计完成。2.8 数据存储系统 2.8.1 海量数据分布式数据存储架构 云计算是一种超级的计算模式,可以把网络中的计算机虚拟为一个资源池,将所有的计算资源集中起来,并用特定软件实现自动管理,使得各种计算资源可以协同工作,这就使得处理数量巨大的数据成为了可能。 基于云计算的海量数据存储模型,是依据云计算的核心计算模式MapReduce,并依托实现了MapReduce 计算模式的开源分布式并行编程框架Hadoop,将存储模型和云计算结合在一起,实现海量数据的分布式存储。 MapReduce 是云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式编程模式,用于解决问题的程序开发模
36、型,也是开发人员拆解问题的方法。MapReduce 模式的主要思想是将自动分割要执行的问题,拆解成Map(映射)和Reduce(化简)的方式。在数据被分割后通过Map 函数的程序将数据映射成不同的区块,分配给计算机集群处理达到分布式运算的效果,在通过Reduce 函数的程序将结果汇整,从而输出开发者需要的结果。 MapReduce 借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map 函数,把键值对(key/value)映射成新的键值对(key/value),形成一系列中间结果形式的key/value 对,然后把它们传给Reduce(规约)函数,把具有相同中间形式key 的value
37、 合并在一起。Map 和Reduce 函数具有一定的关联性。MapReduce流程如图所示:图表 2 分布式计算流程 Hadoop 是一个实现了MapReduce 计算模型的开源分布式并行编程框架,程序员可以借助Hadoop 编写程序,将所编写的程序运行于计算机集群上,从而实现对海量数据的处理。此外,Hadoop 还提供一个分布式文件系统(HDFS)及分布式数据库(HBase)用来将数据存储或部署到各个计算节点上。借助Hadoop 框架及云计算核心技术MapReduce 来实现数据的计算和存储,并且将HDFS 分布式文件系统和HBase 分布式数据库很好的融入到云计算框架中,从而实现云计算的分
38、布式、并行计算和存储,并且得以实现很好的处理大规模数据的能力。综合MapReduce和HDFS来看Hadoop的结构:图表 3 Hadoop结构在Hadoop的系统中,会有一台Master,主要负责Namenode的工作以及JobTracker的工作。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。还会有多台Slave,每一台Slave通常具有DataNode的功能并负责TaskTracker的工作。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务。 主服务控制集群相当于控制器部分,主要负责接收应用请求并且根据请求类型进行应答。存储
39、节点集群相当于存储器部分,是由庞大的磁盘阵列系统或是具有海量数据存储能力的集群系统,主要功能是处理数据资源的存取。HDFS 和Hbase 用来将数据存储或部署到各个计算节点上。Hadoop 中有一个作为主控的Master,用于调度和管理其它的计算机(将其称之为TaskTracker),Master 可以运行于集群中任一台计算机上。TaskTracker 负责执行任务,必须运行于DataNode上,DataNode 既是数据存储节点,也是计算节点。Master将Map 任务和Reduce 任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况。如果其中任意一个Tas
40、kTracker 出故障了,Master 会将其负责的任务转交给另一个空闲的TaskTracker 重新运行。用户不直接通过Hadoop 架构读取及HDFS 和Hbase存取数据,从而避免了大量读取操作可能造成的系统拥塞。用户从Hadoop 架构传给主服务控制集群的信息后,直接和存储节点进行交互进行读取操作。2.8.2 适应应用需求的混合存储策略 混合存储策略可以简述为HDFS分布式文件系统用来存储海量数据,可以根据存储的数据类型建立索引,HBase也可用来存储海量数据,其由查询条件建立索引表, Database对小型数据的存储处理。 分布式文件系统HDFS是一个开源云计算平台Hadoop框架
41、的底层实现部分,适合运行在通用硬件上的分布式文件系统,具有高容错性,能提高吞吐量的数据访问,非常适合于大规模数据集上的应用。MapReduce在HDFS的基础上实现的并行框架,为用户提供容易使用的并行编程模式,MapReduce计算包括两个阶段,Map(映射)阶段和Reduce(规范)阶段。首先,Map函数把一组(Key,Value)输入,映射为一组中间结果 (Key,Value),然后通过Reduce函数把具有相同Key值的中间结果,进行合并化简。MapReduce将计算作业分成许多小的单元,同时数据也会被HDFS分为多个Block,并且每个数据块被复制多份,保证系统的可靠性,HDFS按照一
42、定的规则将数据块放置在集群中的不同机器上,以便MapReduce在数据宿主机器上进行计算。 HBase类似Bigtable的分布式数据库,是一个稀疏的,长期存储的,多维的,排序的映射表.这张表的索引是行关键字,列关键字和时间戳。所有数据库的更新都是一个时间戳标记,每个更新都是一个新的版本,而HBase会保留一定数量的版本,这个值是可以设定的。客户端可以获取距离某个时间最近的版本,或者一次获取所有版本。2.8.3 HDFS数据存储 分布式文件系统HDFS被设计为将海量文件存储在一个大集群的多台计算机上。HDFS将每一个文件以分块序列的形式进行存储,一个文件的所有分块除去最后一个分块外都是等大小的
43、。为了实现容错将文件分块进行自动复制。文件分块的块大小和复制比例都是可以按照单个文件进行配置的。HDFS中的所有文件都是“只写一次”并且严格限定在任何时候只有一个写文件操作者。 HDFS是Hadoop框架的分布式并行文件系统,是分布式计算的存储基石。负责数据分布式存储及数据的管理,并能提供高吞吐量的数据访问。HDFS的基本特征如下:(l)对于整个集群有单一的命名空间。(2)文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且根据配置会有复制的文件块来保证数据安全性。(3)数据一致性。适合一次写入多次读取的模型,客户端在成功创建文件之后,才能看到文件的存在。(4)Hadoop,包括H
44、DFS,非常适合在廉价机器上的分布式存储和分布式处理。它是容错的、可伸缩的、非常易于扩展。并且,以简单性和适用性著称的MapReduce是Hadoop不可缺少的重要组成部分。(5)HDFS的默认配置适合于大多数安装的应用。通常情况下,只有在一个非常大规模的集群上才需要修改默认配置。(6)支持shell命令行风格的HDFS目录交互。(7)HDFS是用java编写的,可广泛运行在多种软硬件平台上。(8)HDFS经常性地实现新的特性和改进。(9)Namenode和DataNode都内建了Web服务器,可以方便地查看集群的状态。 HDFS的体系框架是Master/Slave结构,一个典型的HDFS通常
45、由单个Namenode和多个DataNode组成。Namenode是一个中心服务器,负责文件系统的名字空间的操作,比如打开、关闭、重命名文件或目录,它负责维护文件路径到数据块的映射,数据块到DataNode的映射,以及监控DataNode的心跳和维护数据块副本的个数。集群中的DataNode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组DataNode上。DataNode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制
46、。 所有对目录树的更新和文件名和数据块关系的修改,都必须能够持久化,文件在HDFS中存储图如图:图表 4 Hdfs结构HDFS涉及到Namenode、DataNode和客户端们之间的交互。本质上,客户端与Namenode通讯是通过获取或者修改文件的元数据,与 DataNode进行实际的I/O操作。如图13所示,在HDFS中有三个重要的角色:Namenode、DataNode和Client,其中Client就是需要获取分布式文件系统文件的应用程序。这里通过三个操作来说明他们之间的交互关系:(l)文件写入。首先Client向Namenode发起文件写入的请求,Namenode根据文件大小和文件块配
47、置情况,返回给Client它所管理部分DataNode的信息。Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。(2)文件读取。Client向Namenode发起文件读取的请求,Namenode返回文件存储的DataNode的信息。Client根据返回的信息读取DataNode上的文件信息。(3)文件Block复制。Namenode发现部分文件的Block不符合最小复制数或者部分DataNode失效,通知DataNode相互复制Block。DataNode收到通知后开始直接相互复制。图表 5 HDFS Namenode、DataNode和客户端们之间的交互2.8.4 HBase数据存储 HBase Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。其目的是处理庞大的表,可以用普通的计算机处理10亿行数据,并且有数百万列元素组成的数据表这张表的索引是行关键字。Hbase可以直接使用本地的文件系统和Hadoop作为数据存储方式,不过为了