环保项目解决方案书.doc
目 录环保数据汇聚处理项目解决方案书目 录1系统总体设计11.1云计算系统设计方案概述11.1.1系统基本需求及功能11.1.2主要建设目标和建设原则21.1.3系统的主要技术特点21.1.4系统的主要性能指标31.2系统总体构架51.2.1系统基本组成与构架51.2.2系统功能构架51.2.3系统总体构架与功能模块101.3系统基本功能与处理方案111.3.1交管数据入库功能与处理方案111.3.2数据存储功能与处理方案131.3.3查询分析功能与处理方案141.4系统可靠性与扩展性151.4.1系统可靠性151.4.2系统扩展性171.5系统设计性能181.5.1交管数据流量处理能力181.5.2数据存储能力181.5.3查询分析计算性能191.6定制开发方案192硬件云平台建设方案222.1交换机详细指标222.2云存储集成套件详细指标222.3云计算/存储主控制服务器节点详细指标232.4云计算/存储从服务器节点详细指标232.5数据采集服务器详细指标242.6应用服务器详细指标242.7数据库服务器详细指标252.8管理控制台服务器详细指标253软件系统设计与关键技术方法273.1系统软件平台273.2历史数据汇聚上报处理流程273.3实时数据入库流程283.4数据存储子系统293.4.1海量数据分布式数据存储构架293.4.2适应应用需求的混合存储策略313.4.3HDFS数据存储313.4.4HBase数据存储343.4.5Database数据存储363.4.6数据存储的可靠性383.4.7数据压缩393.5数据查询与统计分析子系统413.5.1数据查询与统计分析系统基本构架413.5.2交管数据查询功能与用户界面413.5.3实时报警功能与用户界面423.5.4车辆轨迹回放功能与用户界面433.6基于云方案的交管数据查询索引与查询优化技术433.6.1基于分布式数据库的交管数据查询索引处理方案433.7交管数据处理集群的可靠性与负载均衡设计443.7.1负载均衡处理机的单点失效容错处理443.7.2查询处理机的单点失效容错处理483.8计算与存储集群的可靠性与负载均衡设计493.8.1计算与存储集群Master单点失效容错处理493.8.2计算与存储集群的负载均衡处理553.8.3HDFS的可靠性设计583.8.4HBase可靠性设计603.8.5MapReduce计算可靠性设计623.9查询统计计算可靠性与负载均衡设计643.9.1基于Zookeeper的单点失效和负载均衡设计643.10系统安全性设计663.10.1安全保障体系框架663.10.2云计算平台的多级信任保护683.10.3基于多级信任保护的访问控制723.10.4云平台安全审计743.10.5云计算综合安全网关774实施方案814.1时间进度814.2测试和验收814.3技术支持服务814.4培训服务82图表 1 “3.20”道路图像监控数据汇聚处理云平台的基本组成与构架5图表 2 “3.20”道路图像监控数据汇聚处理云平台总体构架与功能模块图10图表 3 “3.20”道路图像监控数据汇聚处理云平台架构12图表 4 数据存储处理架构13图表 5 交管数据接入14图表 6 分布式文件存储系统吞吐量指标19图表 7 系统软件结构27图表 8 数据汇聚上报处理流程28图表 9 实时数据入库流程28图表 10 分布式计算流程29图表 11 Hadoop结构30图表 12 HDFS结构33图表 13 HDFS Namenode、DataNode和客户端们之间的交互34图表 14 HDFS数据压缩与组织40图表 15 数据查询子系统构架41图表 16 用户界面图42图表 17 实时报警功能42图表 18 车辆轨迹回放43图表 19 负载均衡机分布图45图表 20 负载均衡机宕机预案46图表 21 Master节点宕机预案47图表 22 查询处理单点失效容错处理48图表 23 Master单点失效容错处理49图表 24 AvatarNode0以Pimary启动过程51图表 25 AvatarNode1以Standby启动过程52图表 26 DataNode启动过程52图表 27 AvatarNode0宕机后的状态53图表 28 AvatarNode1切换为Primary过程53图表 29 AvatarNode0重启过程54图表 30 AvatarNode启动切换流程图55图表 31 Avatar体系架构图58图表 32 HBase系统架构60图表 33 作业提交63图表 34 JobTracker0宕机63图表 35 作业注销64图表 36 Zookeeper基本工作结构图64图表 37 基于Zookeeper的查询分析计算单点失效和66图表 38 基于深度防护战略的IATF模型66图表 39 云部署模型的实现67图表 40 多级信任保护68图表 41 基于可信第三方的平台认证69图表 42 主要因素平台证书69图表 43 云存储安全子系统接口关系图72图表 44 基于多级信任保护的多级访问控制流程73图表 45 数据安全交换平台73图表 46 云存储安全审计体系结构75图表 47 安全日志审计系统结构图76图表 48 Cloud-USG三种部署模式79系统总体设计1 系统总体设计1.1 云计算系统设计方案概述1.1.1 系统基本需求及功能按照全省公安机关“3·20”工程建设的要求,需要对全市500多个车辆监控点实时抓拍的车辆轨迹数据进行及时汇聚、管理和分析服务。目前,全市已经建成江宁、浦口、六合、高淳、溧水及市政府信息中心等六个数据分中心数据库。经初步测算,仅集中存储全市“3·20”文字数据、图片的位置索引,以及车牌小图片片段数据(图像数据在需要时可以按照索引自动到相应的分中心图片系统进行分布调用),按照数据存储3年要求,总记录数近200亿条,原始数据总存储容量约120TB,高峰时段每秒产生的数据将超过1万条记录(每条记录5K数据量,包括文字数据、图片索引和号牌特征图片)。加上要为原始数据记录创建查询索引以及保存从原始数据统计分析出的中间结果数据,需提供总量为150TB的原始数据存储量。如此庞大的数据量使得现有的关系式数据库已经难以提供相应的数据存储管理和处理能力。为此,需要考虑基于云平台的分布式海量数据存储和处理解决方案。本项目的基本建设要求是:在市局集中建设一套适应海量数据处理的高性能道路图像监控数据存储和计算平台,该平台将从现有的六个数据分中心获取和汇聚道路监控数据,以便提供集中式的道路监控数据管理功能,为开展各种车辆监控数据应用提供海量数据存储管理和计算服务能力。系统的基本功能和性能如下:海量历史交通监控数据汇总能够对百亿级的海量历史交通监控数据进行汇总处理。海量原始交通监控数据上报能够对百亿级的海量上报交通监控数据进行上报处理。海量原始数据实时入库、生成索引能够对流量超过10000条/m的全量原始交通监控数据流进行实时处理。海量数据存储、计算能够存储百亿级别的数据, 并完成各种复杂业务应用计算。百亿级数据秒级查询能力高效索引算法,智能化调度任务系统,满足秒级查询速度。秒级实时业务响应高效实时数据通道,对于像实时监控、告警等实时业务,提供秒级响应时间。1.1.2 主要建设目标和建设原则建设目标:利用大量普通的性价比高的商用服务器,构建一个高性能的云计算平台,对峰值流量超过10000条/秒、3年高达150TB的总数据量进行存储处理,以便为实时监控、报警监控、车辆轨迹回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析等多种应用业务提供海量数据存储管理支撑和计算服务能力。建设原则:(1)前瞻性技术与实际应用环境相结合在技术方案上,本系统必须充分利用目前先进的云计算和海量数据处理相关技术,保证系统技术的前瞻性和先进性。(2)高可靠性、高扩展性、高可获得性、实时性和高性价比的云平台与此同时,通过利用业界成熟的云计算和海量数据并行计算平台和技术,提供切实可行的海量数据存储处理解决方案,并保证所设计实现的系统具有高可靠性、高扩展性和高可获得性;同时,通过云平台的海量数据并行处理,保证数据查询响应的实时性;此外,系统将利用比传统方案更为低廉的价格,提供更高的处理能力,达到较之传统方案至少一个数量级的性价比提升。(3)遵循公安320工程相关标准规范在项目设计和工程实施上,本项目所有的数据格式、接口等要遵循公安320工程相关标准规范。1.1.3 系统的主要技术特点实时性:系统在分布式海量数据存储和并行处理能力的支撑下,需要实时完成交管数据获取、入库、以及数据汇总、上报、查询、分析计算和管理等工作,保证海量数据的获取和入库不会出现数据堆积现象,各类基本的数据查询操作基本都在秒级完成,大规模或复杂的分析计算在分钟级完成,实现传统数据库所难以达到的处理能力和处理效率。高可靠性:系统应采用目前业界成熟可靠的海量数据处理平台和技术,需要考虑数据存储和计算时的系统可靠性,避免系统主节点的单点失效,并具有存储和计算节点失效检测和恢复的容错处理能力,保证不出现系统瘫痪和数据出错现象。高可扩展性:系统构架和方案必须具有高可扩展性,保证在将来应用系统规模扩大时能根据需要随时增加节点以扩大系统的数据存储能力和计算能力;并能在不停机的情况下增加节点,以保证应用服务的连续性。高可获得性:项目使用市场上标准的普通商用服务器,采用标准的网络构建云计算平台,云计算平台通用性强,且任何节点损坏都易于更换和维护;云计算系统软件尽可能采用业界广为使用的开源系统,既节省软件费用,也易于获得。高性价比:替代使用价格昂贵的高端专用存储和计算设备,采用价格不高的普通服务器,大大节省系统的构建和维护成本,同时通过云计算平台的并行化计算能力可提供比传统方案更高的计算性能,获得很高的性价比。全业务支持:海量数据分布存储,少量数据关系复杂或实时性要求很高的数据存放于关系数据库,采用这种分布式海量数据存储为主、关系数据库为辅的混合式数据存储模式,可存储各种不同规模和不同媒体和类型的数据,满足各种不同的数据处理和应用业务需求。1.1.4 系统的主要性能指标数据存储和处理指标3年的原始道路监控数据量为120TB,加上要为原始数据记录创建查询索引以及保存从原始数据统计分析出的中间结果数据,需提供总量为150TB的数据存储量;为了保证数据存储的可靠性防止数据丢失,系统要求采用3倍副本方式保存数据,因此,云平台需要提供150 x 3=450TB的总存储量。同时,系统必须能实时接收和处理峰值流量高达1万条/秒的实时入库数据,包括实时接收保存和创建索引处理。硬件系统指标为了保证计算集群的存储和计算性能,每个服务器节点配置为不低于2颗Intel至强5645六核处理器,内存24G,6×2T(RAID0) SAS热插拔硬盘;而集群计算和存储主控节点配置为不低于2颗Intel至强5660六核处理器,内存32G,5×2T(RAID1) SAS热插拔硬盘;关系数据库服务器配置为不低于2颗Intel至强5660六核处理器,内存24G,3×2T(RAID1) SAS热插拔硬盘;应用分析服务器和数据采集服务器配置均为不低于2颗Intel至强5645六核处理器,内存16G,应用服务器采用600GB15000转SAS热插拔硬盘,数据采集服务器采用2T(RAID1)SAS热插拔硬盘。详细指标要求参见本文建设内容部分描述。计算响应时间实时入库时延:道路监控数据从分中心获取后入库处理(包括创建查询索引)时的时间延迟小于5秒,并保证不会出现数据堆积现象。查询响应:查询响应依赖于上层应用的具体查询分析的复杂程度、查询时所涉及到的时间跨度和具体数据量、及上层应用查询具体的设计实现方法。由于本项目并不包括上层应用的开发,因此,本项目中难以确定和评估上层应用的查询响应时间。但为了保证本项目所设计实现的系统能满足实时查询响应能力、并制定项目验收时的有效评估标准,本项目要求对最常用的指定车辆牌号在不同时间段的查询能达到实时响应。具体要求是,平均计算,对单个车辆牌号1个月内的轨迹查询返回和结果读出在1秒内完成,6个月内的轨迹查询返回和结果读出在5秒内完成,6-12个月内的轨迹查询返回和结果读出在10秒内完成(其中全部查询结束至第一个结果读出应在3秒内完成),而1-3年的轨迹查询和结果返回应在30秒内完成(其中全部查询结束至第一个结果读出应在10秒内完成)。1.2 系统总体构架1.2.1 系统基本组成与构架“3.20”道路图像监控数据汇聚处理项目是一个处于交管数据采集与交管数据监测应用之间的系统。从系统基本组成与构架上来看,该共享平台由7个主要部分组成:历史数据汇聚系统、实时数据入库系统、数据存储管理系统、数据上报处理系统,数据应用接口、数据查询导出系统以及系统管理。在基础设施构架上,在市局集中建设一套适应海量数据处理的高性能道路图像监控数据存储和计算平台,作为“3.20”道路图像监控数据汇聚处理项目的基础设施和支撑平台。图表 1 “3.20”道路图像监控数据汇聚处理云平台的基本组成与构架1.2.2 系统功能构架“3.20”道路图像监控数据汇聚处理云平台需要提供的7大数据处理和服务功能描述如下。(1)历史数据汇聚历史数据汇总处理主要负责把南京市6个分散的数据中心的历史数据,进行读取解析处理,并将处理后的历史数据汇入一个统一的数据中心。在内部处理模块上,历史数据汇总系统主要包括三个模块:读取模块、解析模块和汇总模块。读取模块主要负责各个数据中心历史数据的读取处理,解析模块主要负责把读取到的历史数据解析成合理的数据格式,而汇总模块主要负责把解析好的历史数据上传到统一的数据中心。在系统构架上,为了满足6个分散的数据中心处理需要,需要在每一个数据中心处安装一个数据汇总程序。接口调用说明:鉴于历史数据是存储在Oracle关系数据库中,在这里数据汇总程序的读取模块将通过结构化数据存储访问接口(如JDBC)访问和读取其中的历史数据。汇总模块则会利用“3.20”道路图像监控数据汇聚处理云平台的云存储系统提供的数据添加接口把解析好的历史数据添加到云存储系统中。(这里的数据添加接口以jar包的方式集成到数据汇总程序中。调用十分方便、简洁,调用方法类似于一般的应用程序利用JDBC向传统的关系数据库中添加数据。)接口安全性说明:数据添加接口把从Oracle数据库中读取到的历史数据,利用网络,传输给云存储系统,由云存储系统完成历史数据的入库操作。当整个流程都准确无误的完成后,云存储系统会返还一个“成功”标记给数据汇总系统。当数据汇总系统明确的得到了“成功”标记后,记录下这条已经完成汇总操作的数据,然后进行下一条历史数据的汇总操作。否则会判断本次汇总操作失败,并进行失败处理(如:判定本次汇总操作失败的原因、记录到日志中、进行再次汇总操作等)。这样可以最大限度上,保证在各种异常情况下(如:网络阻塞)数据汇总的安全性。是否有必要使用消息中间件(如IBM MQ):MQ负责在两个系统之间传递消息:这两个系统可以是异构的,处于不同硬件、不同操作系统、用不同语言编写,只需要简单的调用几个MQ的API,就可以互相通讯,你不必考虑底层系统和网络的复杂性。而“3.20”道路图像监控数据汇聚处理云平台的数据汇总系统和云存储系统并不是一般的两个相互孤立的系统,它们之间的关系很类似于应用程序对于传统数据库的关系。消息中间件在这么并没有相应的应用场景。但MQ的功能仅限于消息队列:至于应用A发给应用B的消息格式是怎样的、能不能被应用B解析,MQ管不了,他只是尽力将消息发到目的地(MQ能够应付多种异常情况,例如网络阻塞、临时中断等等)。“3.20”道路图像监控数据汇聚处理云平台的数据汇总系统已经能够对多种异常情况进行处理。故从分析来看,数据汇总系统和云存储系统之间不需要再加入一个中间件来保证数据传输的安全性。(2)实时数据入库实时数据入库主要负责从分中心所采集的全市每个卡口产生的实时数据同步地传送给本系统进行实时入库处理(需要通过网闸等安全隔离交换设备)。在内部处理模块上,实时数据入库系统主要包括三个模块:接受模块、解析模块和数据入库模块。接受模块主要负责接收每个卡口产生的数据流,解析模块主要负责把接受到的数据流解析成合理的数据格式,而数据入库模块负责把解析好的数据加入到市数据中心。在系统架构上,为了使每个卡口的数据能实时入库市数据中心,需要在每一个负责接受卡口数据的工控机上安装一个实时数据入库系统。接口调用及安全性说明:同数据汇总系统,区别在于:数据汇总的数据来源于关系数据库,而实时数据上报系统的数据来源于接受卡口数据的工控机。(3)数据存储管理原始交管数据,将全部存储在“3.20”道路图像监控数据汇聚处理云平台的云存储资源中。资源池提供两种存储资源:一种是结构化数据存储资源,用于存储少量的接口中间数据;另一种是分布式文件系统,用于存储海量的非结构化数据。为了满足和适应数据量、数据特征和查询处理的不同需求,将采用一种混搭式的数据存储方案。对容量巨大、常规数据库难以处理的数据,如交管数据,将主要存储在基于HDFS的分布式文件系统中;这些数据将通过HDFS接口进行访问和计算处理。而对于部分数据量不大、且查询响应性能要求很高的数据,如用于报警比对的中间数据,将被存放在关系数据库中。关系数据库将采用Oracle 10g版本。这些数据将通过结构化数据存储访问接口(如JDBC)进行访问。在存储构架上,若以存储3年的原始交管数据、报警信息数据和针对快速查询建立的索引数据,在10000条/s的交管数据流量下,将大约需要512TB的存储容量,按照每个存储节点16TB的存储容量,加上少量的冗余节点,将需要32个存储节点。(4)数据上报处理数据上报处理负责把市局数据中心的数据,按照一定的汇总格式需求(按时间段或一定的数据量),上报给省厅数据中心。在内部处理模块上,上报数据上报系统主要包括三个模块:读取模块、解析模块和上报模块。读取模块主要负责市数据中心需要上报数据的读取处理,解析模块主要负责把读取到的数据解析成合理的数据格式,而上报模块主要负责把解析好的数据上传到的省厅数据中心。在系统构架上,为了满足市数据中心处理需要,需要在市数据中心处安装一个数据上报程序。而省厅数据中心需要提供数据上报的接口。(5)数据应用接口数据应用接口主要提供包括交管信息查询、报警信息查询、事件检测报警、流量统计和分析等功能。车辆轨迹查询处理时,由于交管数据量巨大,难以存储在常规的关系数据库中,而如果直接存储在HDFS或HBase中又难以保证查询效率。为此,需要考虑对交管数据进行索引处理,并将索引数据存储在HDFS或HBase中。为了建立交管数据索引,需要在交管数据传送到云存储系统中时,进行实时的索引处理。但由于交管数据流量巨大,需要调度使用多台服务器节点进行并行处理。此外,用户从客户端发起以上各种数据查询分析任务时,也会产生大量并发的查询任务。以上各种查询分析计算任务的处理将需要考虑在计算集群上进行并行化任务调度和负载均衡处理。这些并行计算任务及负载均衡处理将使用Zookeeper基于计算集群完成统一的控制和实现。在系统构架上,以上查询分析计算任务将需要使用一个大规模数据并行计算集群。在编程实现上,存储在数据库中的数据将使用常规的数据库查询语言实现;对存储在分布式文件系统中的交管数据,针对不同的处理要求,在数据量极大而处理实时性要求不是特别高的情况下,为了方便对海量数据的并行处理,将采用MapReduce编程方式实现;而对于那些实时性要求很高的查询分析计算,由于MapReduce启动作业需要较长的时间开销,将不适合采用MapReduce编程实现,而需要用非MapReduce编程方式实现。接口调用说明:这里的各类查询分析应用的接口,都会以Java方法的形式封装在jar包里,提供给其他应用系统。其他应用系统通过调用jar包里的对应的Java方法,便可以获取想要的数据(具体的使用类似于利用JDBC提供的Java方法从数据库获取指定条件的数据)。对于查询结果数据数目过大的情况,我们采用分页查询的方法,以保证能在很短的时间内响应用户的请求。(6)数据查询导出在实际使用中,可能用户会对某一时间段或者类型的数据特别关心,就可以通过数据管理系统查询并导出这部分数据以供使用。包括数据查询和数据导出两大部分。数据查询让用户以自定义的条件查询出数据,而数据导出就是将这些数据以合理的格式导出到数据中心以外。(7)系统管理系统管理主要包括“3.20”道路图像监控数据汇聚处理云平台的配置管理、系统安全管理、系统用户管理,以及数据备份、系统故障监测复等管理维护功能。配置管理是其中最主要的部分,是系统各个模块正常运行的基础。系统应能够对网络地址、设备地址等进行配置;能够对用户做权限管理,以防止数据外泄;并能及时有效的对数据进行备份和故障检测等工作,防止数据的意外丢失。系统应支持树图、数据表格、网络拓扑图形式展示配置数据。1.2.3 系统总体构架与功能模块基于以上基本的系统组成和功能构架,系统的详细总体构架和功能模块设计如图所示。图表 2 “3.20”道路图像监控数据汇聚处理云平台总体构架与功能模块图上图中,自底向上分为五个层面。最下层是硬件平台层,将使用南京市公安局云计算中心所提供的计算、存储和网络资源。从系统处理系统的角度看,这一层主要包括云存储计算集群,此外还包括接口和管理服务器、包括用于实现客户端访问的Web服务器。第二层是系统软件层,包括移动的云存储系统软件,综合分析云计算软件平台,以及Web服务软件等。云存储系统将提供基于Oracle 10g关系数据库的结构化数据存储访问能力,以及基于HDFS的分布式文件系统存储访问能力,分别提供基于JDBC/SQL的数据库访问接口以及HDFS访问接口。综合分析云计算软件平台可提供对HDFS、HBase数据的访问,并提供MapReduce编程模型和接口、以及非MapReduce模型的编程接口,以及用于实现并行计算任务负载均衡和服务器单点失效恢复的Zookeeper。第三层是“3.20”道路图像监控数据汇聚处理云平台中的数据层,包括原始交管数据、索引数据、用于分析的中间数据、以及系统配置数据等。其中,原始交管数据、索引数据等海量数据将存储在南京公安局云存储系统的HDFS分布式文件系统中,用HDFS接口进行存储和访问处理;而其它用于分析的中间数据等数据量不大、但处理响应性能要求较高的数据,将存储在云存储系统的关系数据库系统中,用JDBC/SQL进行存储和访问处理。第四层是交管数据处理软件层,主要完成“3.20”道路图像监控数据汇聚处理云平台所需要提供的诸多功能,包括实时监控、报警监控、车辆轨迹查询与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析、系统管理等功能。最上层是客户端用户界面软件,主要供用户查询和监视相关的数据信息,除了事件检测报警不需要用户界面外,其它部分都需要实现对应的用户界面。1.3 系统基本功能与处理方案1.3.1 交管数据入库功能与处理方案交管数据入库系统总架构如图:图表 3 “3.20”道路图像监控数据汇聚处理云平台架构“3.20”道路图像监控数据汇聚处理云平台通过实时数据入库系统接入采集层的交管数据,数据分配进入负载均衡机,负载均衡机根据集群各节点负载情况,动态分配交管数据到各存储处理机, 进行报警检测、建立索引等处理, 同时将交管数据存入分步式存储系统。负载均衡机功能监控所集群机器负载情况,动态分配交管数据。监控所有集群机器,如果发现问题,那么就把分配给这台机器的交管数据重新分配到其他机器,去除单点故障,提高系统可靠性。负载均衡机采用Paxos 算法解决一致性问题,集群在某一时刻只有一个Master负责均衡能力,当Master宕机后,其他节点重新选举Master。保证负载均衡机不会存在单点问题,集群机器一致性。实时业务对于实时性要求高的业务应用,如:实时监控、实时报警,走实时专道。1.3.2 数据存储功能与处理方案数据存储处理总架如图:图表 4 数据存储处理架构数据存储系统提供如下功能:交管数据处理:接收来自数据汇总和数据入库系统的交管数据, 索引模块实时生成索引,以提高查询速度。生成的索引存储到HDFS中,以供查询交管数据使用。专题业务分析,通过MapReduce并行计算,同期提取业务数据,将结果分存两路,一路存入HBase或日志详单存储, 一路存入关系型数据库。报警数据处理“3.20”道路图像监控数据汇聚处理云平台对接收到的实时交管数据进行计算,以判断这辆车有没有符合报警条件。如果符合,会对报警信息入库,并同时通过对外实时报警的接口,将报警信息迅速展示到用户界面上。1.3.3 查询分析功能与处理方案交管数据查询构架如图:图表 5 交管数据接入当客户发起请求后, 客户端把请求发向查询接口服务器,查询接口服务器解析查询请求,后向Master任务调度机发送查询任务执行命令;Master回应执行命令节点信息,查询服务器根据节点信息将查询命令发向查询计算模块,进行具体查询操作,将查询结果返回给客户端,呈现给用户。1.4 系统可靠性与扩展性1.4.1 系统可靠性HDFS可靠性概述:HDFS包括元数据节点(Namenode)和数据节点(Datanode),Namenode是一个中心服务器,负责管理文件系统的Namespace和客户端对文件的访问。,Datanode在集群中一般是一个节点一个,Datanode是文件系统中真正存储数据的地方。DataNode所在机器挂了怎么办? HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块(block)。 一个文件对应的所有BLOCK全部按照一定的部署策略存在于DataNode上,文件的所有block为了容错都会被复制(一般为3份),每个文件的block大小和replication因子都是可配置的。Datanode每3分钟向Namenode发送心跳,如果10分钟datanode没有向Namenode发送心跳,则Namenode认为该Datanode已经dead,Namenode将取出该Datanode上对应的block,对其进行复制。 Namenode挂了怎么办?Namenode主控服务器,为了避免主节点失效而影响整个系统正常工作,我们采用基于HDFS的改进方案Avatar,同时可开启两个Namenode,主Namenode和secondNamenode,实际工作的只有主Namenode。主Namenode将所有关于文件和目录的操作记录都会写入日志,并定时序列化到本地做镜像,并且保存到本地的NFS服务器,同时secondNamenode读取主Namenode所在NFS服务器的日志并对镜像日志做CheckPoint。故障后,secondNamenode升级为Namenode,通过镜像数据和文件日志迅速恢复系统。数据服务器可通过分布式协同服务机制得知关于主控服务器的更迭情况,然后向新的主控注册并继续发送心跳。 HBase可靠性概述:HBase系统由HBase集群和ZooKeeper集群组成。HBase的可靠性由其自身的ZooKeeper机制保证。HBase包括Hregion服务器群和Master主服务器构成。Master负责管理Hregion。物理上,一张表是被拆成多个块,一张完整的表格是保存在多个Hregion上面的。master挂掉怎么办?由于master只维护表和region的元数据,因此master下线短时间内对整个HBase集群没有影响,master保存的信息全是可以冗余信息(都可以从系统其它地方收集到或者计算出来),因此,启动HBase时可以再启动一个备用的master,实际工作的只有主master,当主master所在节点宕机,会自动切换到备用master所在节点。Hregionserver挂掉怎么办?物理上,表格分为多个Region一张表是被拆成多个块,一张完整的表格是保存在多个Hregionserver上面的。并且分布在多台Hregionserver中,物理上所有数据存储在Hadoop的HDFS上,由一些子表服务器来提供数据服务,提供服务时,子表先查HMemcache,如果没有,再查HDFS上的HStore,由HDFS来保证数据的可靠性。如果丢失Region的数据所在节点的datanode宕机,HDFS会自动映射到其他节点,从而保证Region数据的可靠性。ZooKeeper挂掉怎么办?Zookeeper分为2个部分:服务器端和客户端。启动Zookeeper服务器集群环境后,多个Zookeeper服务器在工作前会选举出一个Leader,在接下来的工作中这个被选举出来的Leader死了,而剩下的Zookeeper服务器会知道这个Leader死掉了,在活着的Zookeeper集群中会继续选出一个Leader,选举出leader的目的是为了可以在分布式的环境中保证数据的一致性。MapReduce可靠性概述:MapReduce整体上可以分为这么几条执行的线索,JobTracker与JobTracker是一个master服务,软件启动之后JobTracker接收job,负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。TaskTracker是运行于多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker都需要运行在HDFS的DataNode上,JobTracker0挂掉怎么办?在系统启动时同时启动备份JobTracker1节点,当JobTracker0节点宕机时,ZooKeeper会在其上启动JobTracker进程替代JobTracker0节点,虚拟IP会指向此节点,TaskTracker会注册到此节点上,未完成的MapReduce作业会被ZooKeeper调度到此节点上重新执行。TaskTracker挂掉怎么办?JobTracker是一个master服务,软件启动之后JobTracker接收job,负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。并且将其负责的task分配给其他TaskTracker上。1.4.2 系统扩展性已有的Hadoop集群规模Hadoop是一个相当有弹性和扩展性的平台,它既可以在成千上万的机器上跑,也可以在很小规模上运行。目前最大的Hadoop集群有四千台机器。 Hadoop扩展优势:与其它分布式系统相比,使用Hadoop的好处在于它的水平的可扩展性,在少量结点上,用Hadoop处理有限的数据时,不能展示Hadoop的性能,因为开始Hadoop程序相关的代价比较高,其它并行/分布程序方式,比如MPI (Message Passing Interface)可能在2台,4台或许10多台计算机上有更好的性能,尽管在少量机器上协同工作在这种系统上也许会取得更好的性能,但这种为性能所要付出的努力是非线性的增长。用其它分布式框架所写的程序在从十台机器的级别到成百上千台机器需要大量的重构工作,这也许要程序重写几次,并且其它框的基础元素会限制应用的规模大小。但是特别设计的Hadoop有着水平的可扩展性,一个Hadoop程序写完后,在10个结点上运行,如果迁徙到更大的集群上运行,几乎不需要做什么工作, Hadoop平台会管理数据和硬件资源并提供与可用资源成比例的可靠性能。Hadoop扩展方法:HBase集群具备线性扩展功能,只需要将配置好的region server节点加入到集群中。MapReduce集群具备线性扩展功能,只需要将配置好的TaskTracker节点加入到集群中,JobTracker节点就会将Map或Reduce任务分配给此节点处理。HDFS具备线性扩展功能,只需要将配置好的DataNode节点加入到集群中,并且在集群空闲时执行balancer工具以平衡集群中DataNode的数据块负载。1.5 系统设计性能1.5.1 交管数据流量处理能力交管数据集群完全采用分布式实现,支持线性扩展, 每节点采用低端X86PC Server处理500条/s流量。 对于全市总量10000条/s的实时入库数据和大量的历史数据来说,需要38处理机。以下是各部分处理能力统计: l 交管数据计算存储服务器配置: 6核CPU×2,主频2.4GHz,内存24G,硬盘6×2T SATA处理能力:折合交管数据入库流量 500条/s/台l 应用分析服务器配置: 6核CPU×2,主频2.4GHz,内存24G,硬盘2×600G SAS处理能力:折合处理并发访问量100次/s/台1.5.2 数据存储能力原始交管数据存储采用云存储平台,分布式文件系统存储服务。性能指标:l 存储量指标单系统应支持PB级存储容量。l 吞吐量指标吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。吞吐量根据应用系统读写方式和应用系统读取存储内容大小分成四个指标。分布式文件存储系统按照32个节点并发500个用户计算,单节点8块2T大小的硬盘情况下,每个节点指标具体内容如下表所示:编号读写方式存储内容大小平均吞吐量指标(MBps)1100%读1GB602100%写1GB303100%读100KB304100%写100KB15图表 6 分布式文件存储系统吞吐量指标l 系统响应时间指标千兆网络环境下,局域网客户端从分布式文件存储系统中读取4096字节存储内容的响应时间应不高于50ms。交管数据存储采用HDFS性能指标,如下:l 数据读取性能:4080MB/s·节点;l 数据规模:10PB规模;l 数据负载均衡时间:可依据流量配置