市公安局智慧交通云平台技术方案建议项目可行性研究报告89页.doc
下载文档
上传人:职z****i
编号:1165988
2024-09-13
89页
10.41MB
1、市公安局智慧交通云平台技术方案建议项目可行性研究报告XX工程咨询有限公司二零XX年XX月XX项目可行性研究报告建设单位:XX建筑工程有限公司建设地点:XX省XX市编制单位:XX工程咨询有限公司20XX年XX月58可行性研究报告编制单位及编制人员名单项目编制单位:XX工程咨询有限公司资格等级: 级证书编号:(发证机关:中华人民共和国住房和城乡建设部制)编制人员: XXX高级工程师XXX高级工程师XXX高级工程师XXXX有限公司二XX年XX月XX日目 录1系统总体设计11.1云计算系统设计方案概述11.1.1系统基本功能11.1.2主要设计思想和设计目标、设计原则11.1.3智慧交通云平台的云计算2、解决方案21.1.4系统的主要技术特点31.2系统总体构架31.2.1系统基本组成与构架31.2.2系统功能构架41.2.3系统总体构架与功能模块71.3系统基本功能与处理方案91.3.1交管数据入库功能与处理方案91.3.2数据存储功能与处理方案101.3.3查询分析功能与处理方案121.4系统互联与管理131.4.1组网方案131.4.2网络管理141.4.3系统安全151.5系统可靠性与扩展性161.5.1系统可靠性161.5.2系统扩展性181.6系统设计性能191.6.1交管数据流量处理能力191.6.2数据存储能力201.6.3查询分析计算性能211.7定制开发方案212系统设计实3、施与关键技术方法242.1系统平台242.2系统规格262.3数据处理流程272.4数据存储系统282.4.1海量数据分布式数据存储构架282.4.2适应应用需求的混合存储策略302.4.3HDFS数据存储312.4.4HBase数据存储342.4.5Database数据存储362.4.6数据存储的可靠性382.4.7数据压缩392.5数据实时处理、实时查询系统402.5.1数据立方(DataCube)412.5.2任务调度器(JobKeeper)422.5.3cProc数据处理442.5.4交管数据处理流程462.5.5交管数据处理步骤472.6交管数据处理集群的可靠性与负载均衡设计472.4、6.1负载均衡处理机的单点失效容错处理472.6.2查询处理机的单点失效容错处理502.7计算与存储集群的可靠性与负载均衡设计512.7.1计算与存储集群Master单点失效容错处理512.7.2计算与存储集群的负载均衡处理572.7.3HDFS的可靠性设计602.7.4HBase可靠性设计622.7.5MapReduce计算可靠性设计642.8查询统计计算可靠性与负载均衡设计662.8.1基于Zookeeper的单点失效和负载均衡设计662.9系统安全性设计682.9.1安全保障体系框架682.9.2云计算平台的多级信任保护702.9.3基于多级信任保护的访问控制742.9.4云平台安全审计5、762.9.5云计算综合安全网关793详细设备配置清单831 系统总体设计1.1 云计算系统设计方案概述1.1.1 系统基本功能按照全省公安机关信息化建设总体规划,为实现对重点车辆的自动比对和动态管控、对异常车辆行踪的自动研判预警、对特定车辆行车轨迹的自动生成、对重要节点道路交通信息的远程再现、对基层单位和执勤民警的勤务实施管理等建设目标,为交通管理、治安管控、侦查破案、巡逻防范、反恐处突等各项公安工作提供服务保障。系统的基本功能和性能如下:海量数据存储能够对百亿级的海量交通监控数据进行存储,保存时间为2年。海量数据实时处理、实时入库、生成索引能够对百亿级的海量交通监控数据进行实时处理,能够处6、理每天500万条记录,能够实时处理约60条/秒的实时数据流量。百亿级数据秒级查询能力、秒级实时业务响应高效实时数据查询架构,提供秒级响应时间,1天的记录能在5秒钟内查询出来,一周记录能在15秒内查询出来。1.1.2 主要设计思想和设计目标、设计原则设计思想:将海量数据分解到由大量X86架构计算机构成的低成本云计算平台上进行实时处理,依靠分布式云计算软件进行容错,从而提升智慧交通云平台海量数据分析的实时性和性价比。设计目标:利用大量性价比高的计算机,建立云计算平台,能够对流量超过500w条/天的原始交通监控数据流进行实时处理。系统具有可动态可伸缩性、高度容错性和响应实时性,达到较之传统方案有一个7、数据量级的性能价格比提升。设计原则:(1)前瞻性技术与实际应用环境相结合本项目是既是先进技术应用示范项目,又是工程实施型项目。把握技术正确性和先进性是前提,但是前瞻性技术实施必须在云计算平台的实际应用环境和实际监控流量的基础上进行,必须结合云计算平台的实际情况进行研究和开发,只有与实际应用环境相结合才有实际应用价值。(2)学习借鉴国外先进技术与自主创新相结合在云计算平台用于超大规模数据处理方面,国内外几乎是在一个起跑线上;但在关键技术研究及既往的技术积累方面,国外一些大公司有着明显的优势。同时,智慧交通云平台所将要面对的交通监控数据流高达500w条/天,是一个世界级的云计算应用。我们将积极学习8、借鉴国外先进的云计算技术,同时与自主创新相结合,形成功能强大、性能卓越的能够满足实际应用环境需求的云计算数据处理和分析平台。(3)遵循公安320工程相关标准规范本项目的设计将严格遵循公安320工程相关标准规范。1.1.3 智慧交通云平台的云计算解决方案在公安网内部,构建若干X86架构计算/存储节点,虚拟出海量存储空间、处理能力和数据管理能力。同时研制面向应用的分布式数据处理软件,满足数据汇总、数据上报、数据入库、数据查询、数据计算和数据管理等应用需求。图表 1 智慧交通云平台云计算解决方案1.1.4 系统的主要技术特点实时性:平台在高效率并行分布式软件的支撑下,可以实时完成交管数据入库、分析和9、管理工作,如数据汇总、数据上报、数据入库、数据查询、数据计算和数据管理等。海量数据入库不会出现数据堆积现象,各类分析和查询工作基本都在秒级完成,具有前所未有的高效性。高可靠性:基于对云计算可靠性深厚的研究积累,彻底解决了当前分布式计算平台易出现的单点故障问题。任何一个节点出现故障,系统将自动屏蔽,而且不会出现丢失数据的现象。包括查询任务分配节点、计算任务分配节点、HDFS元数据节点、HDFS数据存储节点、MapReduceJob Tracker节点、MapReduce Worker节点、HBase管理节点、HBase Region节点等。可伸缩性:在不停机的情况下,增加节点,平台的处理能力自动10、增加;减少节点,平台的处理能力自动缩减。这样,可以做到与云计算平台的无缝对接,根据计算和存储任务动态地申请或释放资源,最大限度地提高资源利用率。高性价比:采用X86架构廉价计算机构建云计算平台,用软件容错替代硬件容错,大大节省成本。在目标性能和可靠性条件下,可比传统的小型机加商用数据库方案节省10倍左右的成本。全业务支持:采用分布式数据库模式,绝大部分海量数据存放于分布式平台并进行分布式处理,少量实时性要求很高的数据存放于关系数据库中,可支撑各种类型的业务。不仅支撑查询、统计、分析业务,还可支撑深度数据挖掘和商业智能分析业务。1.2 系统总体构架1.2.1 系统基本组成与构架智慧交通云平台是一11、个处于交管数据采集与交管数据监测应用之间的系统。从系统基本组成与构架上来看,该共享平台由7个主要部分组成:历史数据汇总处理系统,上报数据上报系统,实时数据入库系统,交管数据存储系统,交管数据查询分析应用系统,数据管理系统以及系统管理。1.2.2 系统功能构架智慧交通云平台需要提供的7大主要功能描述如下。(1)历史数据汇总处理系统历史数据汇总处理主要负责把南京市6个分散的数据中心的历史数据,进行读取解析处理,并将处理后的历史数据汇入一个统一的数据中心。在内部处理模块上,历史数据汇总系统主要包括三个模块:读取模块、解析模块和汇总模块。读取模块主要负责各个数据中心历史数据的读取处理,解析模块主要负责12、把读取到的历史数据解析成合理的数据格式,而汇总模块主要负责把解析好的历史数据上传到统一的数据中心。在系统构架上,为了满足6个分散的数据中心处理需要,需要在每一个数据中心处安装一个数据汇总程序。(2)上报数据上报处理信系统上报数据上报处理负责把市数据中心的数据,按照一定的需求(按时间段或一定的数据量),上报给省厅数据中心。在内部处理模块上,上报数据上报系统主要包括三个模块:读取模块、解析模块和上报模块。读取模块主要负责市数据中心需要上报数据的读取处理,解析模块主要负责把读取到的数据解析成合理的数据格式,而上报模块主要负责把解析好的数据上传到的省厅数据中心。在系统构架上,为了满足市数据中心处理需要13、,需要在市数据中心处安装一个数据上报程序。而省厅数据中心需要提供数据上报的接口。(3)实时数据入库系统实时数据入库系统主要负责全市每个卡口产生的数据实时入库。在内部处理模块上,实时数据入库系统主要包括三个模块:接受模块、解析模块和数据入库模块。接受模块主要负责接收每个卡口产生的数据流,解析模块主要负责把接受到的数据流解析成合理的数据格式,而数据入库模块负责把解析好的数据加入到市数据中心。在系统架构上,为了使每个卡口的数据能实时入库市数据中心,需要在每一个负责接受卡口数据的工控机上安装一个实时数据入库系统。(4)交管数据存储系统原始交管数据,将全部存储在智慧交通云平台的云存储资源中。资源池提供两14、种存储资源:一种是结构化数据存储资源,用于存储少量的接口中间数据;另一种是分布式文件系统,用于存储海量的非结构化数据。为了满足和适应数据量、数据特征和查询处理的不同需求,将采用一种混搭式的数据存储方案。对容量巨大、常规数据库难以处理的数据,如交管数据,将主要存储在基于HDFS的分布式文件系统中;这些数据将通过HDFS接口进行访问和计算处理。而对于部分数据量不大、且查询响应性能要求很高的数据,如用于报警比对的中间数据,将被存放在关系数据库中。关系数据库将采用Sybase ASE版本。这些数据将通过结构化数据存储访问接口(如JDBC)进行访问。在存储构架上,若以存储3年的原始交管数据、报警信息数据15、和针对快速查询建立的索引数据,在10000条/s的交管数据流量下,将大约需要512TB的存储容量,按照每个存储节点16TB的存储容量,加上少量的冗余节点,将需要32个存储节点。(5)交管数据查询分析应用系统交管数据查询分析应用主要提供包括实时监控、报警监控、车辆轨迹与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析等功能。车辆轨迹查询处理时,由于交管数据量巨大,难以存储在常规的关系数据库中,而如果直接存储在HDFS或HBase中又难以保证查询效率。为此,需要考虑对交管数据进行索引处理,并将索引数据存储在HDFS或Hbase中。为了建立交管数据索引,需要在交管数据传送到16、云存储系统中时,进行实时的索引处理。但由于交管数据流量巨大,需要调度使用多台服务器节点进行并行处理。此外,用户从客户端发起以上各种数据查询分析任务时,也会产生大量并发的查询任务。以上各种查询分析计算任务的处理将需要考虑在计算集群上进行并行化任务调度和负载均衡处理。这些并行计算任务及负载均衡处理将使用Zookeeper基于计算集群完成统一的控制和实现。在系统构架上,以上查询分析计算任务将需要使用一个大规模数据并行计算集群。在编程实现上,存储在数据库中的数据将使用常规的数据库查询语言实现;对存储在分布式文件系统中的交管数据,针对不同的处理要求,在数据量极大而处理实时性要求不是特别高的情况下,为了方17、便对海量数据的并行处理,将采用MapReduce编程方式实现;而对于那些实时性要求很高的查询分析计算,由于MapReduce启动作业需要较长的时间开销,将不适合采用MapReduce编程实现,而需要用非MapReduce编程方式实现。(6)数据管理系统在实际使用中,可能用户会对某一时间段或者类型的数据特别关心,就可以通过数据管理系统查询并导出这部分数据以供使用。包括数据查询和数据导出两大部分。数据查询让用户以自定义的条件查询出数据,而数据导出就是将这些数据以合理的格式导出到数据中心以外。(7)系统管理系统管理主要包括智慧交通云平台的配置管理、系统安全管理、系统用户管理,以及数据备份、系统故障监18、测复等管理维护功能。配置管理是其中最主要的部分,是系统各个模块正常运行的基础。系统应能够对网络地址、设备地址等进行配置;能够对用户做权限管理,以防止数据外泄;并能及时有效的对数据进行备份和故障检测等工作,防止数据的意外丢失。系统应支持树图、数据表格、网络拓扑图形式展示配置数据。1.2.3 系统总体构架与功能模块基于以上基本的系统组成和功能构架,系统的详细总体构架和功能模块设计如图所示。图表 2 智慧交通云平台总体构架与功能模块图上图中,自底向上分为五个层面。最下层是硬件平台层,将使用南京市公安局云计算中心所提供的计算、存储和网络资源。从系统处理系统的角度看,这一层主要包括云存储计算集群,此外还19、包括接口和管理服务器、包括用于实现客户端访问的Web服务器。第二层是系统软件层,包括移动的云存储系统软件,综合分析云计算软件平台,以及Web服务软件等。云存储系统将提供基于Sybase ASE关系数据库的结构化数据存储访问能力,以及基于HDFS的分布式文件系统存储访问能力,分别提供基于JDBC/SQL的数据库访问接口以及HDFS访问接口。综合分析云计算软件平台可提供对HDFS、Hbase数据的访问,并提供MapReduce编程模型和接口、以及非MapReduce模型的编程接口,以及用于实现并行计算任务负载均衡和服务器单点失效恢复的Zookeeper。第三层是智慧交通云平台中的数据层,包括原始交20、管数据、索引数据、用于分析的中间数据、以及系统配置数据等。其中,原始交管数据、索引数据等海量数据将存储在南京公安局云存储系统的HDFS分布式文件系统中,用HDFS接口进行存储和访问处理;而其它用于分析的中间数据等数据量不大、但处理响应性能要求较高的数据,将存储在云存储系统的关系数据库系统中,用JDBC/SQL进行存储和访问处理。第四层是交管数据处理软件层,主要完成智慧交通云平台所需要提供的诸多功能,包括实时监控、报警监控、车辆轨迹查询与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析、系统管理等功能。最上层是客户端用户界面软件,主要供用户查询和监视相关的数据信息,除了21、事件检测报警不需要用户界面外,其它部分都需要实现对应的用户界面。1.3 系统基本功能与处理方案1.3.1 交管数据入库功能与处理方案交管数据入库系统总架构如图:图表 3 智慧交通云平台架构智慧交通云平台通过实时数据入库系统接入采集层的交管数据,数据分配进入负载均衡机,负载均衡机根据集群各节点负载情况,动态分配交管数据到各存储处理机, 进行报警检测、建立索引等处理, 同时将交管数据存入分步式存储系统。负载均衡机功能监控所集群机器负载情况,动态分配交管数据。监控所有集群机器,如果发现问题,那么就把分配给这台机器的交管数据重新分配到其他机器,去除单点故障,提高系统可靠性。负载均衡机采用Paxos 算22、法解决一致性问题,集群在某一时刻只有一个Master负责均衡能力,当Master宕机后,其他节点重新选举Master。保证负载均衡机不会存在单点问题,集群机器一致性。实时业务对于实时性要求高的业务应用,如:实时监控、实时报警,走实时专道。1.3.2 数据存储功能与处理方案数据存储处理总架如图:图表 4 数据存储处理架构数据存储系统提供如下功能:交管数据处理:接收来自数据汇总和数据入库系统的交管数据, 索引模块实时生成索引,以提高查询速度。生成的索引存储到HDFS中,以供查询交管数据使用。专题业务分析,通过MapReduce并行计算,同期提取业务数据,将结果分存两路,一路存入Hbase或日志详单23、存储, 一路存入关系型数据库。报警数据处理智慧交通云平台对接收到的实时交管数据进行计算,以判断这辆车有没有符合报警条件。如果符合,会对报警信息入库,并同时通过对外实时报警的接口,将报警信息迅速展示到用户界面上。1.3.3 查询分析功能与处理方案交管数据查询构架如图:图表 5 交管数据接入当客户发起请求后, 客户端把请求发向查询接口服务器,查询接口服务器解析查询请求,后向Master任务调度机发送查询任务执行命令;Master回应执行命令节点信息,查询服务器根据节点信息将查询命令发向查询计算模块,进行具体查询操作,将查询结果返回给客户端,呈现给用户。1.4 系统互联与管理1.4.1 组网方案组网24、方案如图:图表 6组网方案我司可向公安数据中心申请VPN或公网IP服务,如果系统出故障,可以保障第一时间远程排查。1.4.2 网络管理1.4.2.1 服务器间网络安全检查系统自管理通过启用网络安全检查进程(netinspect),定期检查整个系统的网络状况,并上报各服务模块网络流量信息,在终端形成网络拓扑图,实时在界面呈现各节点网络状态,管理员也能及时了解,各服务模块的网络流量机承载的负荷。若出现网络故障,netinspect进程实时上报故障情况,在网络拓扑图上以报警方式提示,或以短信的方式提示,便于管理员及时发现问题,并恢复网络故障,确保系统在安全的网络环境下运行。1.4.2.2 服务模块进25、程监控管理系统自管理通过启用服务模块运行状态检查进程(proinspect),定期检查整个系统的服务模块进程运行状况,并上报各服务模块进程的运行状态信息,在终端将运行的进程的状态以表格形式显示,定时更新进程的运行状态信息。通过它管理员也能及时了解,各服务模块的进程运行负荷。若在固定的时间内没有更新,视为进程运行故障,启动主机代理自动恢复故障进程,保障各服务模块进程持续稳定的运行的状态。1.4.2.3 系统性能监控管理系统自管理通过启用服务模块性能检查进程(serverinspect),定期检查整个系统的各服务器性能指标,包括CPU开销、内存占用、IO峰值、网络流量、连接数等。并上报各服务性能指26、标,在终端形成拓扑图,实时在界面呈现各节点服务器性能状态,管理员也能及时了解,各服务节点处理性能及资源开销。若性能持续高负荷,拓扑图上以报警方式提示,或以短信的方式提示,便于管理员及时发现问题,查找问题的来源或重新评估服务器配置情况,为系统稳定运行提供一个确实可靠的标准。1.4.2.4 系统日志分析处理系统各服务模块在运行期间写日志文件,将进程的模块编号、服务器的IP、出错页码等日志的状态(错误、告警、提示)等级别的信息保存磁盘文件,供工程师来分析系统运行状态。同时日志分析进程(loganalyse)分析日志文件,将重要的日志信息,进行对比、分析并汇总后,生产统一格式的日志信息,提取出来,写入27、的数据库表中,终端管理通过查询界面来来显示,能及时了解到系统的运行的状态。1.4.2.5 系统运行状态及报警处理系统运行报警分为以下几种:服务器运行状态报警服务器网络状态报警服务模块进程报警日志模块状态报警1.4.3 系统安全1.4.3.1 网络安全为保障整个系统稳定运行,首先要保障系统在网络方面是安全的。从硬件、软件方面做相应的安全措施。硬件:所有的网络设备都要1+1 冗余配置,涉及以下网络硬件设备冗余配置以太网100M/ 1000M网卡以太网网络交换设备光纤网络接口FC/HBASAN光纤网络交换机软件:在整个系统上部署防火墙软件、及自产的安全管理管理软件模块来保障系统平稳运行。1.4.3.28、2 数据文件安全性见集群可靠性章节。1.5 系统可靠性与扩展性1.5.1 系统可靠性 HDFS可靠性概述:HDFS包括元数据节点(Namenode)和数据节点(Datanode),Namenode是一个中心服务器,负责管理文件系统的Namespace和客户端对文件的访问。,Datanode在集群中一般是一个节点一个,Datanode是文件系统中真正存储数据的地方。DataNode所在机器挂了怎么办? HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块(block)。 一个文件对应的所有BLOCK全部按照一定的部署策略存在于DataNo29、de上,文件的所有block为了容错都会被复制(一般为3份),每个文件的block大小和replication因子都是可配置的。Datanode每3分钟向Namenode发送心跳,如果10分钟datanode没有向Namenode发送心跳,则Namenode认为该Datanode已经dead,Namenode将取出该Datanode上对应的block,对其进行复制。 Namenode挂了怎么办?Namenode主控服务器,为了避免主节点失效而影响整个系统正常工作,我们采用基于HDFS的改进方案Avatar,同时可开启两个Namenode,主Namenode和secondNamenode,实际工30、作的只有主Namenode。主Namenode将所有关于文件和目录的操作记录都会写入日志,并定时序列化到本地做镜像,并且保存到本地的NFS服务器,同时secondNamenode读取主Namenode所在NFS服务器的日志并对镜像日志做CheckPoint。故障后,secondNamenode升级为Namenode,通过镜像数据和文件日志迅速恢复系统。数据服务器可通过分布式协同服务机制得知关于主控服务器的更迭情况,然后向新的主控注册并继续发送心跳。 HBase可靠性概述:HBase系统由HBase集群和ZooKeeper集群组成。HBase的可靠性由其自身的ZooKeeper机制保证。HBas31、e包括Hregion服务器群和Master主服务器构成。Master负责管理Hregion。物理上,一张表是被拆成多个块,一张完整的表格是保存在多个Hregion上面的。master挂掉怎么办?由于master只维护表和region的元数据,因此master下线短时间内对整个hbase集群没有影响,master保存的信息全是可以冗余信息(都可以从系统其它地方收集到或者计算出来),因此,启动HBase时可以再启动一个备用的master,实际工作的只有主master,当主master所在节点宕机,会自动切换到备用master所在节点。Hregionserver挂掉怎么办?物理上,表格分为多个Reg32、ion一张表是被拆成多个块,一张完整的表格是保存在多个Hregionserver上面的。并且分布在多台Hregionserver中,物理上所有数据存储在Hadoop的HDFS上,由一些子表服务器来提供数据服务,提供服务时,子表先查HMemcache,如果没有,再查HDFS上的HStore,由HDFS来保证数据的可靠性。如果丢失Region的数据所在节点的datanode宕机,HDFS会自动映射到其他节点,从而保证Region数据的可靠性。ZooKeeper挂掉怎么办?Zookeeper分为2个部分:服务器端和客户端。启动Zookeeper服务器集群环境后,多个Zookeeper服务器在工作前会33、选举出一个Leader,在接下来的工作中这个被选举出来的Leader死了,而剩下的Zookeeper服务器会知道这个Leader死掉了,在活着的Zookeeper集群中会继续选出一个Leader,选举出leader的目的是为了可以在分布式的环境中保证数据的一致性。MapReduce可靠性概述:MapReduce整体上可以分为这么几条执行的线索,JobTracker与JobTracker是一个master服务,软件启动之后JobTracker接收job,负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTra34、cker部署在单独的机器上。TaskTracker是运行于多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker都需要运行在HDFS的DataNode上,JobTracker0挂掉怎么办?在系统启动时同时启动备份JobTracker1节点,当JobTracker0节点宕机时,ZooKeeper会在其上启动JobTracker进程替代JobTracker0节点,虚拟IP会指向此节点,TaskTracker会注册到此节点上,未完成的MapReduce作业会被ZooKeeper调度到此节点上重新执行。TaskTr35、acker挂掉怎么办?JobTracker是一个master服务,软件启动之后JobTracker接收job,负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。并且将其负责的task分配给其他TaskTracker上。1.5.2 系统扩展性已有的Hadoop集群规模Hadoop是一个相当有弹性和扩展性的平台,它既可以在成千上万的机器上跑,也可以在很小规模上运行。目前最大的Hadoop集群有四千台机器。 Hadoop扩展优势:与其它分布式系统相比,使用Hadoop的好处在于它的水平的可扩展性,在少量结点上,用Hadoop处理有限36、的数据时,不能展示Hadoop的性能,因为开始Hadoop程序相关的代价比较高,其它并行/分布程序方式,比如MPI (Message Passing Interface)可能在2台,4台或许10多台计算机上有更好的性能,尽管在少量机器上协同工作在这种系统上也许会取得更好的性能,但这种为性能所要付出的努力是非线性的增长。用其它分布式框架所写的程序在从十台机器的级别到成百上千台机器需要大量的重构工作,这也许要程序重写几次,并且其它框的基础元素会限制应用的规模大小。但是特别设计的Hadoop有着水平的可扩展性,一个Hadoop程序写完后,在10个结点上运行,如果迁徙到更大的集群上运行,几乎不需要做什37、么工作, Hadoop平台会管理数据和硬件资源并提供与可用资源成比例的可靠性能。Hadoop扩展方法:HBase集群具备线性扩展功能,只需要将配置好的region server节点加入到集群中。MapReduce集群具备线性扩展功能,只需要将配置好的TaskTracker节点加入到集群中,JobTracker节点就会将Map或Reduce任务分配给此节点处理。HDFS具备线性扩展功能,只需要将配置好的DataNode节点加入到集群中,并且在集群空闲时执行balancer工具以平衡集群中DataNode的数据块负载。1.6 系统设计性能1.6.1 交管数据流量处理能力交管数据集群完全采用分布式实38、现,支持线性扩展, 每节点采用低端X86PC Server处理60条/s流量。 对于全全市总量500w条/天的实时入库数据和大量的历史数据来说,需要6台处理机。以下是各部分处理能力统计: l 交管数据存储查询服务器配置: 8核CPU2,主频2.3GHz,内存32G,硬盘82T SATA处理能力:折合交管数据入库流量 15条/s/台l 应用分析服务器配置: 8核CPU2,主频2.3GHz,内存16G,硬盘2300G SAS处理能力:折合处理并发访问量500次/s/台1.6.2 数据存储能力原始交管数据存储采用云存储平台,分布式文件系统存储服务。性能指标:l 存储量指标单系统应支持TB级存储容量。39、l 吞吐量指标吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。吞吐量根据应用系统读写方式和应用系统读取存储内容大小分成四个指标。分布式文件存储系统按照4个节点并发500个用户计算,单节点8块2T大小的硬盘情况下,每个节点指标具体内容如下表所示:表8分布式文件存储系统吞吐量指标编号读写方式存储内容大小平均吞吐量指标(MBps)1100%读1GB62100%写1GB33100%读100KB34100%写100KB2图表 7 分布式文件存储系统吞吐量指标l 系统响应时间指标千兆网络环境下,局域网客户端从分布式文件存储系统中读取4096字节存储内容的响应时间应不高于50ms。交管数据存储采用H40、DFS性能指标,如下:l 数据读取性能:4080MB/s节点;l 数据规模:100TB规模;l 数据负载均衡时间:可依据流量配置而确定;l 集群重新启动时间(100TB规模):分钟级别;1.6.3 查询分析计算性能 对任何实时分析操作的反应时间小于10秒; 查询、统计操作的首次响应时延小于1秒; 并发操作终端数大于30个 ; 基于交管数据的统计,记录5000万条以内,30秒可以统计完成。1.7 定制开发方案相对于已经完成的传统方案,云计算方案还需要在以下方面进行特定开发。(1)历史数据汇入处理平台定制开发历史数据入库系统需要使用与计算存储集群分立的专用机器(可安装在各县市现有的数据服务器上)。41、由于数据汇入处理不需要存储任何数据,仅仅需要读取、解析和入库数据。因此,数据汇入时对服务器的要求比较简单,不需要考虑和使用诸如Hadoop的大规模数据并行计算和存储系统,只需要一般的单一的服务器即可。(2)上报数据上报处理平台定制开发上报数据上报系统需要使用与计算存储集群分立的专用机器(可安装在市数据中心现有的数据服务器上)。由于数据上报处理不需要存储任何数据,仅仅需要读取、解析和上报数据。因此,数据上报时对服务器的使用比较简单,不需要考虑和使用诸如Hadoop的大规模数据并行计算和存储系统,只需要一般的单一的服务器即可。但是由于上报的数据量比较大,而上报时间又不会很长,所以对服务器的性能有一42、定要求。(3)交管数据实时入库并创建索引程序定制开发交管数据存储在Hadoop系统的HDFS中,但由于巨大的交管数据流量,每秒钟将有大量的交管数据产生,为了提供及时的数据查询,这些数据文件必须得到及时的索引创建处理,否则将造成大量的交管数据积压。因此,索引创建程序需要有较高的实时处理能力,以便能在毫秒级时间内保证处理完大量的一秒钟的交管数据。由于MapReduce计算任务需要较长的作业初始化时间,交管数据索引创建程序将难以用MapReduce程序实现,而需要基于HDFS、利用HDFS编程接口编写和定制较为复杂的非MapReduce程序,该程序不能依赖任何MapReduce的编程构架和接口,而需43、要自行编写程序完成全部的数据读出、解析处理、复杂的索引计算、以及索引数据的输出(输出到HDFS或者Hbase)处理过程。(4)查询分析接口开发智慧交通云平台会提供以下的应用接口:实时监控、报警监控、车辆轨迹查询与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析、系统管理等。这些应用接口都需要根据实际的应用需求再进行合理的改进过程。(5)查询分析软件定制开发(可选)查询分析软件将设计为基于Web的应用程序,包括客户端查询用户界面以及服务器端查询服务程序。客户端查询用户界面可基于通用的浏览器实现,也可设计为独立(standalone)的客户端软件。具体的客户端界面将需要根44、据不同的查询功能需求设计实现不同的查询界面。查询服务软件将基于ApacheWeb服务器设计实现。需要特别考虑的是,大量并发的用户查询任务将需要设计实现查询任务分发时的负载均衡处理。(6)并行处理任务的负载均衡调度和单节点失效恢复机制的定制方案前述的交管数据入库、建立索引、数据汇总和数据上报、数据查询等处理中需要考虑的一个共性的重要问题是,为了对大量数据进行并行化的处理、或者大量用户同时发出了很多查询请求时,需要考虑并行计算任务的分发调度和负载均衡,尤其是负责分发调度的节点可能出现单节点失效而导致系统无法正常工作。为此,将基于Zookeeper设计实现一个可防止单节点失效的并行计算任务分发调度控45、制机制和程序框架。该框架中,Zookeeper将使用3台并行计算任务调度服务器,并有Zookeeper负责选择和确定一个主服务器进行工作,但当主服务器失效时,Zookeeper将能够自动感知并选择另一个服务器作为主服务器工作,以此完成单节点失效的恢复处理。进而,通过Zookeeper还可以控制和均衡调度使用大量的计算节点,从而完成并行计算任务分发调服时的负载均衡。(7)Hadoop计算与存储集群的可靠性设计和功能扩展 Hadoop作为一个开源的面向大规模数据并行计算的编程框架和平台,其可靠性和性能方面还存在不少需要改进的地方。比如,Hadoop集群的Master服务器虽然开用了一个备份Mast46、er服务器,但当主Master服务器失效时,备份Master服务器并不能自动完成失效恢复和切换处理。这就无法满足智慧交通的实时性处理需求。为此,我们需要对Hadoop进行改进,设计实现一个能自动完成Master服务器失效处理和切换的定制Hadoop系统,以便为智慧交通云平台提供一个高可靠性的大规模数据并行计算和存储平台。2 系统设计实施与关键技术方法2.1 系统平台cProc云处理平台是搭建在云存储系统上,对业务层直接提供对外开发接口和数据传输接口的分布式数据处理平台。云存储层包括公司自主研发的云储存系统cStor和apache开源云储存系统HDFS;而在数据管理层中,包含数据立方、Hbase47、;数据处理层包含JobKeeper和MapReduce;最后的监控协调层则包括zookeeper和Chukwa来实现对整个系统的实时监控和数据管理。下图为cProc云处理平台架构:通过数据立方,可以对元数据进行数据分析、清理、分割。对结构化数据任意关键字索引,形成一个多维数据模型,数据立方的命名也由此而来。数据立方是独立于cProc云处理平台的技术架构,用户可以选择性采用数据立方,也可以单独采用Hbase、Hive等技术框架,通过数据立方或Hbase,可以将结构化数据看成一张无限大的表,操作这张表跟操作传统关系型数据库一样,上层应用无需修改,完全符合用户原来操作习惯。对于非结构化数据,cPro48、c云处理平台采用公司自主研发的超安存算法,对这些数据块进行分割,散乱存储到云储存系统上,然后采用分布式并行处理,对数据进行实时处理,cProc云处理平台的处理性能随着节点的增多而成倍数增长。cProc云处理平台拥有以下特点:1.对任意多关键字实时索引2.支持类SQL复杂并行组合查询3.分布式万兆实时数据流秒级处理4.高可靠性,系统无单点,确保意外情况下,系统的正常运行以上特点由云创公司自主研发的下面几大功能来提供保证,分别是数据立方,分布式数据处理,调度均衡器、数据传输接口等。数据立方对数据建立高效的索引结构。数据立方是云创公司研发的高效数据结构,该结构成功解决了海量数据的快速索引和查询问题,49、使得百亿条记录级的数据能够秒级处理。分布式数据处理是云创公司研发的处理海量数据的处理框架,用于对大规模数据集的并行处理。处理能力可以通过增加或减少机器达到动态调整。采用先进的容错技术,确保处理任务的可靠性,即使在异常情况下,如机器宕机、断网的情况下,确保处理任务的实时性和准确性。调度均衡器是云创公司研发的解决单点故障的一项技术,用于解决系统内的单点问题,确保某机器的应用程序状态在宕机或断网时,可将状态从异常机器转移到其他机器上,中间无数据丢失。数据传输接口是云创公司经过多年积累,专门针对地面数据传输研究出高性能可靠文件传输协议,采用并行流水线方式、将传输与存储作联合优化,并支持多点中继高效传输50、。经过多项实地远程传输试验,结果表明该技术的传输效率在1Gb/s光纤线路上达到了带宽的80%左右,处于国际最高水平。几大功能相辅相成,高效且可靠地处理海量数据,确保响应迅速,传输速度快,处理结果准确。2.2 系统规格规格说明项目内容可管理的数据总量()支持100PB量级的数据管理实时索引的数据流量()支持100GBps以上量级的数据流实时索引任意关键字段实时创建索引()根据提供的表结构解析元数据,并根据提供的任意关键字段实时创建索引。可移植性()Java语言实现,具有跨平台性,一次编程,任意操作系统都可运行。实时查询()1小时范围查询:1秒内响应,24小时范围查询: 1秒内响应,7*24小时范51、围查询: 1秒内响应。支持简单SQL组合查询()采用和关系数据库混合模式,绝大部分海量数据存放于分布式平台并进行分布式处理,少量实时性要求很高的数据存放于关系数据库,可支撑各种类型的业务。不仅支撑查询、统计、分析业务,还可支撑深度数据挖掘和商业智能分析业务。负载均衡可靠性()拔掉或增加一台节点后,仍能均匀地向各处理节点分发数据。支持并发查询()1、 20个查询都能正常下发执行、且都能正常返回结果,2、 20个查询任务的总耗时差距不大,根据机器负载进行均衡分配查询任务。数据准确性()查询条件相同情况下,每次查询结果相同。稳定性()1、 系统连续运行7*24小时,无任何故障,2、 所有周期任务均正52、常执行,且执行结果正确。可靠性()没有单点故障,任意节点宕机,系统工作正常,可以继续进行数据处理和应用查询,不会影响分布式系统运行和查询结果的准确性。扩展性()既可以在很小规模机器上跑,也可以在成千上万台的机器上运行,而且经过很简单的操作就可以把规模扩展到成千上万台服务器上,而且可靠性随着加入节点的增加成线性上升。分布式处理能力()集群能增加节点、并且能正常执行查询任务,在流量没变、资源增加的情况下,增加机器前后,查询任务耗时按比例降低。支持对外接口()支持Web访问和Web Services接口进行对外数据交互操作。监控功能()提供web界面对分布式文件进行监控,支持查看、下载索引文件和元数53、据文件。备注:为必须满足项。2.3 数据处理流程数据汇总上报处理流程如图:图表 8 数据汇总上报处理流程实时数据入库流程如图: 图表 9 实时数据入库流程2.4 数据存储系统 2.4.1 海量数据分布式数据存储构架 云计算是一种超级的计算模式,可以把网络中的计算机虚拟为一个资源池,将所有的计算资源集中起来,并用特定软件实现自动管理,使得各种计算资源可以协同工作,这就使得处理数量巨大的数据成为了可能。 基于云计算的海量数据存储模型,是依据云计算的核心计算模式MapReduce,并依托实现了MapReduce 计算模式的开源分布式并行编程框架Hadoop,将存储模型和云计算结合在一起,实现海量数据54、的分布式存储。 MapReduce 是云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式编程模式,用于解决问题的程序开发模型,也是开发人员拆解问题的方法。MapReduce 模式的主要思想是将自动分割要执行的问题,拆解成Map(映射)和Reduce(化简)的方式。在数据被分割后通过Map 函数的程序将数据映射成不同的区块,分配给计算机集群处理达到分布式运算的效果,在通过Reduce 函数的程序将结果汇整,从而输出开发者需要的结果。 MapReduce 借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map 函数,把键值对(key/value)映射成新的键值对(key/valu55、e),形成一系列中间结果形式的key/value 对,然后把它们传给Reduce(规约)函数,把具有相同中间形式key 的value 合并在一起。Map 和Reduce 函数具有一定的关联性。MapReduce流程如图所示:图表 10 分布式计算流程 Hadoop 是一个实现了MapReduce 计算模型的开源分布式并行编程框架,程序员可以借助Hadoop 编写程序,将所编写的程序运行于计算机集群上,从而实现对海量数据的处理。此外,Hadoop 还提供一个分布式文件系统(HDFS)及分布式数据库(HBase)用来将数据存储或部署到各个计算节点上。借助Hadoop 框架及云计算核心技术MapRe56、duce 来实现数据的计算和存储,并且将HDFS 分布式文件系统和HBase 分布式数据库很好的融入到云计算框架中,从而实现云计算的分布式、并行计算和存储,并且得以实现很好的处理大规模数据的能力。综合MapReduce和HDFS来看Hadoop的结构:图表 11 Hadoop结构在Hadoop的系统中,会有一台Master,主要负责Namenode的工作以及JobTracker的工作。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。还会有多台Slave,每一台Slave通常具有DataNode的功能并负责TaskTracker的工作。TaskTracker根据应用要57、求来结合本地数据执行Map任务以及Reduce任务。 主服务控制集群相当于控制器部分,主要负责接收应用请求并且根据请求类型进行应答。存储节点集群相当于存储器部分,是由庞大的磁盘阵列系统或是具有海量数据存储能力的集群系统,主要功能是处理数据资源的存取。HDFS 和Hbase 用来将数据存储或部署到各个计算节点上。Hadoop 中有一个作为主控的Master,用于调度和管理其它的计算机(将其称之为TaskTracker),Master 可以运行于集群中任一台计算机上。TaskTracker 负责执行任务,必须运行于DataNode上,DataNode 既是数据存储节点,也是计算节点。Master将58、Map 任务和Reduce 任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况。如果其中任意一个TaskTracker 出故障了,Master 会将其负责的任务转交给另一个空闲的TaskTracker 重新运行。用户不直接通过Hadoop 架构读取及HDFS 和Hbase存取数据,从而避免了大量读取操作可能造成的系统拥塞。用户从Hadoop 架构传给主服务控制集群的信息后,直接和存储节点进行交互进行读取操作。2.4.2 适应应用需求的混合存储策略 混合存储策略可以简述为HDFS分布式文件系统用来存储海量数据,可以根据存储的数据类型建立索引,HBase也可用来存59、储海量数据,其由查询条件建立索引表, Database对小型数据的存储处理。 分布式文件系统HDFS是一个开源云计算平台Hadoop框架的底层实现部分,适合运行在通用硬件上的分布式文件系统,具有高容错性,能提高吞吐量的数据访问,非常适合于大规模数据集上的应用。MapReduce在HDFS的基础上实现的并行框架,为用户提供容易使用的并行编程模式,MapReduce计算包括两个阶段,Map(映射)阶段和Reduce(规范)阶段。首先,Map函数把一组(Key,Value)输入,映射为一组中间结果 (Key,Value),然后通过Reduce函数把具有相同Key值的中间结果,进行合并化简。MapRe60、duce将计算作业分成许多小的单元,同时数据也会被HDFS分为多个Block,并且每个数据块被复制多份,保证系统的可靠性,HDFS按照一定的规则将数据块放置在集群中的不同机器上,以便MapReduce在数据宿主机器上进行计算。 HBase类似Bigtable的分布式数据库,是一个稀疏的,长期存储的,多维的,排序的映射表.这张表的索引是行关键字,列关键字和时间戳。所有数据库的更新都是一个时间戳标记,每个更新都是一个新的版本,而HBase会保留一定数量的版本,这个值是可以设定的。客户端可以获取距离某个时间最近的版本,或者一次获取所有版本。2.4.3 HDFS数据存储 分布式文件系统HDFS被设计为61、将海量文件存储在一个大集群的多台计算机上。HDFS将每一个文件以分块序列的形式进行存储,一个文件的所有分块除去最后一个分块外都是等大小的。为了实现容错将文件分块进行自动复制。文件分块的块大小和复制比例都是可以按照单个文件进行配置的。HDFS中的所有文件都是“只写一次”并且严格限定在任何时候只有一个写文件操作者。 HDFS是Hadoop框架的分布式并行文件系统,是分布式计算的存储基石。负责数据分布式存储及数据的管理,并能提供高吞吐量的数据访问。HDFS的基本特征如下:(l)对于整个集群有单一的命名空间。(2)文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且根据配置会有复制的文件块62、来保证数据安全性。(3)数据一致性。适合一次写入多次读取的模型,客户端在成功创建文件之后,才能看到文件的存在。(4)Hadoop,包括HDFS,非常适合在廉价机器上的分布式存储和分布式处理。它是容错的、可伸缩的、非常易于扩展。并且,以简单性和适用性著称的MapReduce是Hadoop不可缺少的重要组成部分。(5)HDFS的默认配置适合于大多数安装的应用。通常情况下,只有在一个非常大规模的集群上才需要修改默认配置。(6)支持shell命令行风格的HDFS目录交互。(7)HDFS是用java编写的,可广泛运行在多种软硬件平台上。(8)HDFS经常性地实现新的特性和改进。(9)Namenode和D63、ataNode都内建了Web服务器,可以方便地查看集群的状态。 HDFS的体系框架是Master/Slave结构,一个典型的HDFS通常由单个Namenode和多个DataNode组成。Namenode是一个中心服务器,负责文件系统的名字空间的操作,比如打开、关闭、重命名文件或目录,它负责维护文件路径到数据块的映射,数据块到DataNode的映射,以及监控DataNode的心跳和维护数据块副本的个数。集群中的DataNode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存64、储在一组DataNode上。DataNode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。 所有对目录树的更新和文件名和数据块关系的修改,都必须能够持久化,文件在HDFS中存储图如图:图表 12 Hdfs结构HDFS涉及到Namenode、DataNode和客户端们之间的交互。本质上,客户端与Namenode通讯是通过获取或者修改文件的元数据,与 DataNode进行实际的I/O操作。如图13所示,在HDFS中有三个重要的角色:Namenode、DataNode和Client,其中Client就是需要获取分布式文件系统文件的应用程序。这里通过三个65、操作来说明他们之间的交互关系:(l)文件写入。首先Client向Namenode发起文件写入的请求,Namenode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。(2)文件读取。Client向Namenode发起文件读取的请求,Namenode返回文件存储的DataNode的信息。Client根据返回的信息读取DataNode上的文件信息。(3)文件Block复制。Namenode发现部分文件的Block不符合最小复制数或者部分DataNode失66、效,通知DataNode相互复制Block。DataNode收到通知后开始直接相互复制。图表 13 HDFS Namenode、DataNode和客户端们之间的交互2.4.4 HBase数据存储 HBase Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。其目的是处理庞大的表,可以用普通的计算机处理10亿行数据,并且有数百万列元素组成的数据表这张表的索引是行关键字。Hbase可以直接使用本地的文件系统和Hadoop作为数据存储方式,不过为了提高数据的可靠性和系统的健壮性,发挥Hba67、se处理大数据量等功能,需要使用Hadoop作为文件系统。1、数据模式 HBase类似Bigtable的分布式数据库,是一个稀疏的,长期存储的,多维的,排序的映射表.这张表的索引是行关键字,列关键字和时间戳。每个值是一个不解释的字符数组,数据都是字符串,没类型。用户在表格中存储数据,每一行都是一个可排序的主键和任意多的列。由于是稀疏存储的,所以同一张表里面的每一行数据都可以有截然不同的列。列名字的格式是:,都是由字符串组成,每一张表有一个family集合,这个集合是固定不变的,相当于表的结构,只能通过改变表的结构来改变。但是lable值相对于每一行来说都是可以改变的。HBase把同一个fami68、ly里面的数据存储在同一个目录底下,而HBase的写操作时锁行的,每一个都是一个原子元素都可以加锁。所有数据库的更新都是一个时间戳标记,每个更新都是一个新的版本,而HBase会保留一定数量的版本,这个值是可以设定的。客户端可以获取距离某个时间最近的版本,或者一次获取所有版本。2、 概念视图一个表可以想象成一个大的映射关系,通过主键,或者主键+时间戳,可以定位一行数据,由于是稀疏数据,所以某些列可以是空白的,下面就是数据的概念视图: Row KeyTime StampColumnColumn anchorColumn mimen.wwwt9anchor:CNNt8anchor:my.look.c69、aCNN.comt6.t5.text/htmlt3.3、物理视图从概念视图看每个表格是有很多行组成,但是在物理存储上,它是按照列来保存的。Row KeyTime StampColumn contentsn.wwwt6.t5.t3.Row KeyTime StampColumn anchorn.wwwt9anchor:CNNt8anchor:my.look.caCNN.comRow KeyTime StampColumn minen.wwwt6text/html在概念视图上面有些列是空白的,这样的列实际上并不会被存储,当请求这些空白的单元格的时候,会返回null值。如果在查询的时候不提供时间戳,70、那么会返回距离现在最近的那个版本数据。因为在存储的时候,数据会按照时间戳排序2.4.5 Database数据存储数据库(Database)是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。数据库中的数据有两种性质:1、数据整体性 数据库是一个单位或是一个应用领域的通用数据处理系统。数据库中的数据是从全局观点出发建立的,他按一定的数据模型进行组织、描述和存储。其结构基于数据71、间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。 2、数据共享性 数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。数据库的基本结构分为三层: 1.物理数据层它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字72、组成。 2.概念数据层它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。 3.逻辑数据层它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。 数据库不同层次之间的联系是通过映射进行转换的。主要特点: (1)实现数据共享。 数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。 (2)减少数据的冗余度。 同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自73、建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。 (3)数据的独立性。 数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。 (4)数据实现集中控制。 文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。 (5)数据一致性和可维护性,以确保数据的安全性和可靠性。 主要包括:安全性控制:以防止数据丢失、错误更新和越权使用;完整性控制:保证数据的正确性、有效性和相容性;并发控制:使在同一时间周期内74、,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏 (6)故障恢复。 由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。2.4.6 数据存储的可靠性 HBase采用的是Hadoop作为文件系统,hadoop以机柜为基础的数据存放策略, 那么不仅充分利用了网络宽带,而且提高数据可靠性。HDFS的主要目标就是实现在失败情况下的数据存储可靠性。常见的三种失败:N75、amenode failures, Datanode failures和网络分割(network partitions)。(1)硬盘数据错误、心跳检测和重新复制每个Datanode节点都向Namenode周期性地发送心跳包。网络切割可能导致一部分Datanode跟Namenode失去联系。 Namenode通过心跳包的缺失检测到这一情况,并将这些Datanode标记为dead,不会将新的IO请求发给它们。寄存在dead Datanode上的任何数据将不再有效。Datanode的死亡可能引起一些block的副本数目低于指定值,Namenode不断地跟踪需要复制的 block,在任何需要的情况下启76、动复制。在下列情况可能需要重新复制:某个Datanode节点失效,某个副本遭到损坏,Datanode上的硬盘错误,或者文件的replication因子增大。(2)集群均衡HDFS支持数据的均衡计划,如果某个Datanode节点上的空闲空间低于特定的临界点,那么就会启动一个计划自动地将数据从一个Datanode搬移到空闲的Datanode。当对某个文件的请求突然增加,那么也可能启动一个计划创建该文件新的副本,并分布到集群中以满足应用的要求。这些均衡计划目前还没有实现。(3)数据完整性从某个Datanode获取的数据块有可能是损坏的,这个损坏可能是由于Datanode的存储设备错误、网络错误或者软77、件bug造成的。HDFS客户端软件实现了HDFS文件内容的校验和。当某个客户端创建一个新的HDFS文件,会计算这个文件每个block的校验和,并作为一个单独的隐藏文件保存这些校验和在同一个HDFS namespace下。当客户端检索文件内容,它会确认从Datanode获取的数据跟相应的校验和文件中的校验和是否匹配,如果不匹配,客户端可以选择从其他Datanode获取该block的副本。(4)元数据磁盘错误FsImage和Editlog是HDFS的核心数据结构。这些文件如果损坏了,整个HDFS实例都将失效。因而,Namenode可以配置成支持维护多个FsImage和Editlog的拷贝。任何对F78、sImage或者Editlog的修改,都将同步到它们的副本上。这个同步操作可能会降低 Namenode每秒能支持处理的namespace事务。这个代价是可以接受的,因为HDFS是数据密集的,而非元数据密集。当Namenode重启的时候,它总是选取最近的一致的FsImage和Editlog使用。Namenode在HDFS是单点存在,如果Namenode所在的机器错误,手工的干预是必须的。目前,在另一台机器上重启因故障而停止服务的Namenode这个功能还2.4.7 数据压缩 (1)HDFS数据压缩与组织方法任何一种数据资源都具有生命周期,不同的时期有其存在的不同意义。在数据刚生成的数日内,访问频79、率最高,带来的使用价值也最高。随着时间推移,访问频率会逐渐降低,数据的价值也随之下降,低访问频率的数据量远远超过高访问频率的数据量。不同生命周期的数据是提供给不同使用对象的,这就为以最低的成本获得最高的使用价值提供了可能。通常情况下,某段时间内访问量比较大的数据只有不到20%,80%的数据是不经常被访问的,虽然这些数据访问量低,但这些数据仍然很重要,必须完好的保存。同时考虑到方便数据压缩,这里采用了分级存储策略,这样不仅可以方便为访问量大的数据项设置缓存,而且为数据压缩提供了方便,显著提高了效率。分级存储就是以信息生命周期管理理论为依据,根据数据所能提供的使用价值来决定存储成本、存储设备。文件80、依据用户需求有选择地对某些数据进行迁移,如进行远端备份等。数据分级存储之所以重要,是因为它既能最大限度地满足变化的需求,又能方便文件的组织和压缩。数据分级存储的优点有减少总体存储成本、性能优化、改善数据可用性、数据迁移对应用透明。借助云平台,分级存储满足以下要求:数据的安全性、数据的高可用性、容量可扩展性、设备的兼容性、管理的高效性、经济效益性。数据将被组织成两级,一级称为chuck,一级称为block。chuck被分为多个block,文件将以block的形式存储在数据服务器上。block的优点是方便文件压缩和文件的传输,适合多种备份方式,在很大程度上提高了存储效率和可扩展性。下图给出了基于分81、级存储的数据块级压缩方式。图表 14 HDFS数据压缩与组织处理流程如下:1)将一个chunk划分成为多个block。2)读取一个block,对该block进行数据压缩并写入到临时缓存中。3)将临时缓存的压缩数据拷贝到缓冲池中。4)重复2-3步直到一个chunk中的block都被压缩拷贝完成。5)将缓冲池中的内容按顺序回写到存储区域。2.5 数据实时处理、实时查询系统数据处理是对数据的采集、存储、检索、加工、变换和传输。数据是对事实、概念或指令的一种表达形式,可由人工或自动化装置进行处理。数据的形式可以是数字、文字、图形或声音等。数据经过解释并赋予一定的意义之后,便成为信息。数据处理的基本目的82、是从大量的、可能是杂乱无章的、难以理解的数据中抽取并推导出对于某些特定的人们来说是有价值、有意义的数据。数据处理是系统工程和自动控制的基本环节。数据处理贯穿于社会生产和社会生活的各个领域。数据处理技术的发展及其应用的广度和深度,极大地影响着人类社会发展的进程。2.5.1 数据立方(DataCube)我们以B+树的结构建立了字段的索引,每个B+树结构的字段索引相当于一个数据平面,这样一个全局数据表与其多个重要字段的索引就组成了一个类似于立方体的数据组织结构,我们称之为“数据立方(DataCube)”。如下图所示: 数据立方(DataCube)是一种用于数据分析与索引的技术架构。它是针对大数据(b83、ig data)的分布式数据库,可以对元数据进行任意多关键字实时索引。通过数据立方对元数据进行分析之后,可以大大加快数据的查询和检索效率。数据立方是凌驾于数据存储层和数据库系统之上的,通过数据立方解析后,可以大大增加数据查询和检索等业务,可以让系统平台具备数据实时入库、实时查询、查询结果实时传输等优势。2.5.2 任务调度器(JobKeeper)JobKeeper调度平台是建立于虚拟化资源层之上,统一调度,统一配置的管理平台,用于对集群中任务实时的处理调度,实时结果集的反馈,集群的负载均衡,失败调度,集中管理,集中配置的平台。用来保证整个集群的超低人员干预。同时,提供完善的集群伸缩机制为整个服84、务提供更高的可靠性。JobKeeper云调度技术架构图 应用层是一组用于管理和结果反馈的显示组件。用于显示任务的处理情况以及集群中机器的活动情况,同时其也是一个上层应用和底层服务的对接平台。是整个系统面向用户和开发人员的基础承载。 业务层是对于应用层的相关功能的业务化,数字化处理,用于将应用层的需求任务进行规则化划分,形成统一的处理化模式。 数据处理层是独立的数据处理程序,是对不同需求数据的统一处理方案,他的运行与监控的工作将由JobKeeper调度平台进行统一的配置管理。 存储层是用来存储数据存储层的处理结果集或者其他中间结果集的单元。 虚拟化资源层是将实体的机器进行虚拟化,形成更大范围的服85、务集群。 JobKeeper调度平台是由一组管理节点(Master Node)和一组处理节点(Task Node)组成,管理节点组是一组基于Webserver的RPC(RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。)服务器,负责对处理节点的系统信息以及任务处理信息进行实时的86、跟踪和保存,对应的信息镜像存储在基于cStor或者NFS服务的存储系统上,保证每个管理节点中的镜像信息的实时同步。同时架设在管理节点上的ZooKeeper服务(ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个简单的原语集。分布式应用可以使用它来实现诸如:统一命名服务、配置管理、分布式锁服务、集群管理等功能。)用于对整个管理节点组进行统一的配置化管理。处理节点组通过RPC的远程调用获取各自节点的任务处理目标,并实时的和处理节点上的任务处理目标进行对比,控制程序的执行和结束。(注:这里的程序,可以是任何语言任何形式的独立程序,但是必须提供执行脚本,和运行参数选项)处理节87、点组会在一个设定的心跳间隔内主动的和管理节点组联系一次,报告节点存活状态。如果在若干个心跳间隔后管理节点组仍然没有获取到处理节点心跳报告,那么该处理节点将会被踢出处理节点组,同时该节点处理的所有处理任务也会被重新调度。随着集群处理数据量的不断增大,处理节点组提供了简单高效的自动化部署方案,当新机器加入处理集群后,会主动的与管理节点组同步心跳信息,从同一配置服务器ZooKeeper上获取相关配置信息,通过WebServer服务获取任务列表,开始执行数据处理工作。 JobKeeper调度平台提供了一套基于Web的管理化界面,可以实时的观察各个处理节点的任务运行状态,以及任务列表的分配情况,机器的负88、载情况等。用户在管理系统界面上可以完成所有的工作,如新任务的添加,任务的手动调度以及集群日志的查看与分析等。 任务处理节点和管理节点之间维护一个心跳时间,实时向管理节点汇报任务处理信息,同时,任务处理节点在每个心跳时间内向管理节点获取该处理的任务列表,并和本机正在处理的任务列表进行比对,完成相关的任务调度工作。若一个处理节点在多个心跳时间范围内仍然没有主动的和管理节点相互联系,那么管理节点将会根据各机器的负载情况,将失去心跳连接的处理节点上的任务进行任务的重新分配和执行。2.5.3 cProc数据处理cProc云处理是云创公司研发的处理海量数据的处理框架,特点是实时性高。主从式的管理节点监控着89、所有处理节点(slave),并接受任务,分配子任务,监控任务以及处理各类异常情况。处理节点(slave),接受子任务,监控子任务,向主节点汇报任务。结构如下图所示:cProc云处理是cProc云处理平台分布式的核心。该架构内部避免了大多数分布式系统内部存在的单点问题。里面的两个管理员节点(主节点和备节点)对整个集群进行着管理,通过先进的调度监控器解决了管理节点的单点问题和数据同步问题,确保在主节点异常情况下,主从节点的切换不丢失管理数据。cProc云处理内部采用高效的数据结构cProcJob,维护每个任务以及子任务的状态,并严格按照任务状态转移表进行任务状态切换。在cProc分布式数据处理的过90、程中,系统采用以下三个原则:1.数据尽可能的本地性原则在任务提交后, 管理节点根据数据所在位置分配处理,这样在每个处理节点上要处理的存储介质上的数据块就在本地,直接操作本地文件,避免了数据的移动,极大地减少了网络IO负载,缩短了处理时间。2.数据分布的平衡性原则cProc并行处理架构能够周期性地对存储介质上的数据进行维护,保持存储节点上所存储的数据量的平衡,减少因数据负载的不平衡而导致的处理负载的不平衡。3.调度任务公平的原则公平调度是一种多用户的赋予作业(job)资源的策略,它的目的是让所有的作业随着时间的推移,都能获取与权值相应的共享资源。当单独一个作业在运行时,它将使用整个集群。当有其它91、作业被提交上来时,系统会将任务空闲处理单元赋给这些新的作业,以使得每一个作业都大概获取到与权值相应的处理时间。这个特性让短作业在合理的时间内完成的同时又保证了长作业的服务质量。公平调度器按资源池(pool)来组织作业,默认情况下,每一个用户拥有一个独立的资源池。在Slave处理节点上设置有同时运行的任务个数上限,若未达到上限,则就产生了空闲处理单元。当集群上出现空闲处理单元时,调度按两步进行,首先空闲处理单元在作业池之间分配,其次在作业池内的作业间分配。2.5.4 交管数据处理流程1.卡口数据采集下来之后,通过工控机将实时数据直接保存到云计算平台。2.通过JobKeeper进行负载均衡,能够将92、实时数据均衡地分配到各个节点上面去,让整个集群并行的处理索引、入库等操作;3.每个节点接收到数据之后先将数据存储到HDFS,此时对于集群而言,已经做好可靠性工作,任意节点宕机,不会丢失数据。4.每个节点对该数据再进行实时索引,通过数据立方(DataCube)将索引结构与元数据的关系进行有效管理,并对应用层提供对应的接口.5.目前数据立方支持sql语法进行检索和查询,同时自带有的api、webserviceApi都能够对外提供有效接口,与应用层进行无缝对接。2.5.5 交管数据处理步骤1.根据原始数据的表结构,定义数据立方认可的表结构(基本无差别)。2.根据原始数据的记录,可以进行单条、多条、文93、件插入,然后进行查询看是否格式相对应。3.格式与数据对应之后,可以用系统自带的数据插入接口,接收实时数据流的插入,此时数据流能够实时保存到数据立方中,数据立方自动创建相关索引。4.采用数据立方中提供的api或者sql语句查询方式,与应用层进行对接。5.对接成功,应用层能够显示数据。2.6 交管数据处理集群的可靠性与负载均衡设计2.6.1 负载均衡处理机的单点失效容错处理负载均衡机分布如图: 图表 15 负载均衡机分布图全量原始数据接入交换机,将数据发向指IP的负载均衡机,负载均衡机向负载均衡Master节点请求任务处理机,Master返回存任务处理机IP端口信息,负载均衡机根据任务处理机的IP94、端口信息将数据发向任务处理机。单点容错如图: l 当某一台负载均衡机宕机后:图表 16 负载均衡机宕机预案第一步 Master节点能过链接心跳得知宕机负载均衡机。第二步 Master节点从所有均衡机中选出负载小的负载均衡机,启动虚拟IP及相关进程第三步 启动虚拟IP接收原始交管数据,进行负载均衡l 当Master节点宕机后: 图表 17 Master节点宕机预案第一步Master节点宕机, 负载均衡节点及存储计算节点能过链接心跳得知Master宕机第二步所有负载均衡节点,重选举出Master节点,并通知存储计算节点新Master节点所有存储计算节点,根据负载均衡IP列表,请求新Master节点95、,后向新Master节点上报负载状态。第三步 新Master节点接管所有工作,对宕机的Master节点容错。2.6.2 查询处理机的单点失效容错处理图表 18 查询处理单点失效容错处理第一步:任务处理机宕机, 负载均衡机得知任务处理机宕机,缓存交管数据.同时Master得知任务处理宕机后, 将任务处理机信息删除待分配列表。第二步:负载均衡机向Master请求任务处理机,Master重新分配任务处理机给负载均衡机。第三步: 负载均衡机将原始数据发向新任务处理机,进行查询2.7 计算与存储集群的可靠性与负载均衡设计2.7.1 计算与存储集群Master单点失效容错处理图表 19 Master单点失96、效容错处理AvatarNode0以Primary方式启动,AvatarNode0作为Namenode节点与用户交互。AvatarNode1以Standby方式启动,它是一个处于safemode的Namenode。它定期读取AvatarNode0的日志来更新自己内存和磁盘中的元数据,并定期做checkpoint,更新AvatarNode0上的fsimage以及editlog。DataNode节点向AvatarNode0和AvatarNode1同时发送心跳信息和BlockReport,其中包括Block的位置信息。NFS服务器存储AvatarNode0和AvatarNode1的fsimage和ed97、itlog。AvatarNode的primary节点写入editlog,standby节点读取editlog,更新内存中的元数据信息,并且定期做checkpoint,将fsimage及editlog回写到nfs服务器。具体使用时:AvatarNode0以Primary方式启动,AvatarNode1以Standby方式启动,然后启动各个DataNode。当AvatarNode0确认故障后,手动切换AvatarNode1到Primary,同时,选取一个备用节点,以standby启动,这样,当AvatarNode1发生故障时,即可将备用节点切换到Primary状态,始终保持Namenode可以对外98、提供服务。 运行流程AvatarNode0以Pimary启动(1)等待DN的心跳信息 (2)图5-2中的sharedir为NFS服务器上的共享目录/usr/local/sharedir,share0、share1分别为AvatarNode0、AvatarNode1镜像日志的存储目录(3)一个DN抽象代表了所有的DataNodeAvatarNode0:PrimaryNFS服务器ClientDN读写镜像日志用户请求只能操作元数据AvatarNode1:XXXXsharedirshare1share0图表 20 AvatarNode0以Pimary启动过程 AvatarNode1以Standby启动99、(1)若启动参数中有 -sync,则AvatarNode1备份本地和NFS的镜像日志目录,而后用NFS中的AvatarNode0对应镜像日志目录中覆盖AvatarNode1的本地和NFS的对应目录;(2) 启动之后,处于保护模式;(3) 等待DN的心跳信息;(4)ingest线程从NFS中的AvatarNode0对应日志的目录中读取AvatarNode0启动后的日志后线程关闭;(5)启动ingest线程定期从NFS中的AvatarNode0对应日志的目录中读取AvatarNode0的日志。AvatarNode0:PrimaryClientDNAvatarNode1:Standby读日志用户请求100、,读写文件操作数据与元数据用户请求只能读操作NFS服务器NFS服务器sharedirshare1share0写镜像写日志写镜像图表 21 AvatarNode1以Standby启动过程DataNode启动(1)向Primary、Standby发送心跳信息。(2)AvatarNode0与AvatarNode1收集DN的心跳信息,构建Block元数据与Block备份位置的映射AvatarNode0:PrimaryClientAvatarNode1:Standby读日志用户请求,读写文件操作数据与元数据NFS服务器NFS服务器sharedirshare1share0写镜像写日志写镜像DN心跳信息心跳101、信息用户请求只能读操作图表 22 DataNode启动过程AvatarNode0宕机AvatarNode0:XXXXClientAvatarNode1:Standby读日志NFS服务器NFS服务器sharedirshare1share0写镜像写镜像DN心跳信息用户请求只能读操作图表 23 AvatarNode0宕机后的状态AvatarNode1切换为Primary(1)启动ingest线程最后一次从NFS中的AvatarNode0对应日志的目录中读取AvatarNode0的日志。结束ingest线程。(2) AvatarNode1将依据用户操作写入日志 AvatarNode0:XXXXClie102、ntDNAvatarNode1:Primary写日志心跳信息用户请求,读写文件操作数据与元数据NFS服务器sharedirshare1share0图表 24 AvatarNode1切换为Primary过程AvatarNode0以Standby重启或其它备用机器以Standby重启(1) AvatarNode0:Standby重新接收心跳信息,(2) 定期从NFS中的AvatarNode1对应存储的目录中读取AvatarNode1的日志。(3)当日志文件达到上限,则将日志与镜像合并,写入本地与NFS中的AvatarNode0对应的存储目录AvatarNode0:StandbyClientAvat103、arNode1:Primary读日志用户请求,读写文件操作数据与元数据NFS服务器NFS服务器sharedirshare1share0写镜像写日志写镜像DN心跳信息心跳信息用户请求只能读操作图表 25 AvatarNode0重启过程AvatarNode启动切换流程图AvatarNode0以Primary启动,AvatarNode1以Standby启动,AvatarNode0第一次宕机则改变配置文件的参数设置,当再有AvatarNode0、 AvatarNode1或其替代节点宕机时不再改变配置文件,并均以Standby方式启动,另一个节点在此之前若为Primary状态应切换到Standby状态。104、AvatarNode0以Primary启动AvatarNode1以Standby启动AvatarNode0或其他机器重新设置配置文件正常运行:AvatarNode0:PrimaryAvatarNode1:StandbyAvatarNode1或其他机器以Standby启动DataNode启动宕机AvatarNode1宕机AvatarNode0或其他机器以Standby启动AvatarNode0宕机宕机AvatarNode1宕机正常运行:AvatarNode0: Standby AvatarNode1: PrimaryAvatarNode0宕机AvatarNode0切换为PrimaryAvatar105、Node0或其他机器以Standby启动AvatarNode1切换为PrimaryAvatarNode1或其他机器以Standby启动正常运行:AvatarNode0:PrimaryAvatarNode1:Standby宕机AvatarNode0宕机宕机AvatarNode1宕机AvatarNode1切换为Primary图表 26 AvatarNode启动切换流程图2.7.2 计算与存储集群的负载均衡处理负载的均衡,就是要让大家各尽其力齐心干活,发挥各自独特的优势,不能忙得忙死闲得闲死,影响战斗力。而且,负载均衡也是一个复杂的问题,什么是均衡,是一个很模糊的概念。 比如,在分布式文件系统中,总106、共三百个数据块,平均分配到十个数据服务器上,就算均衡了么?其实不一定,因为每一个数据块需要若干个备份,各个备份的分布 应该充分考虑到机架的位置,同一个机架的服务器间通信速度更快,而分布在不同机架则更具有安全性,不会在一棵树上吊死。在这里说的负载均衡,是宽泛意义上的均衡过程, 主要涵盖两个阶段的事务,一个是在任务初始分配的时候尽可能合理分配,另一个是在事后时刻监督及时调整。HDFS中,ReplicationTargetChooser类, 是负责实现为新分配的数据块寻找婆家的。基本上来说,数据块的分配工作和备份的数量、申请的客户端地址(也就是写入者)、已注册的数据服务器位置,密切相 关。其算法基本107、思路是只考量静态位置信息,优先照顾写入者的速度,让多份备份分配到不同的机架去。具体算法,自行参见源码。此外,HDFS的Balancer类, 是为了实现动态的负载调整而存在的。Balancer类派生于Tool类,这说明,它是以一个独立的进程存在的,可以 独立的运行和配置。它运行有NamenodeProtocol和ClientProtocol两 个协议,与主控服务器进行通信,获取各个数据服务器的负载状况,从而进行调整。主要的调整其实就是一个操作,将一个数据块从一个服务器搬迁到另一个服务器 上。Balancer会向相关的目标数据服务器发出一个DataTransferProtocol.OP_REPLA108、CE_BLOCK消 息,接收到这个消息的数据服务器,会将数据块写入本地,成功后,通知主控服务器,删除早先的那个数据服务器上的同一块数据块。MapReduce负载平衡用的是公平调度算法,公平调度是一种多用户的赋予作业(job)资源的策略,它的目的是让所有的作业随着时间的推移,都能获取与权值相应的共享资源。当单独一个作业在运行时,它将使用整个集群。当有其它作业被提交上来时,系统会将任务(task)空闲计算槽(slot)赋给这些新的作业,以使得每一个作业都大概获取到与权值相应的计算时间。这个特性让短作业在合理的时间内完成的同时又保证了长作业的服务质量。公平调度器按资源池(pool)来组织作业,默认情109、况下,每一个用户拥有一个独立的资源池。在节点的TaskTracker上设置有同时运行的Map任务和Reduce任务个数上限,若未达到上限,则就产生了空闲计算槽,包括Map和Reduce空闲计算槽。当集群上出现空闲计算槽时,调度按两步进行,首先空闲计算槽在作业池之间分配,其次在作业池内的作业间分配。最小份额和公平份额最小份额确保作业池总能获取到足够的资源,由用户设定。作业池的公平份额的计算是根据作业的权值将集群的资源总量划分给各个运行的作业池。在缺省的情况下,作业池权值的设定是基于优先级的,即优先级每升高一级,那么相应的权值就增加一倍即所分配的计算槽是次一级的两倍。例如:平台上有甲乙两个作业池,110、甲优先级为high,乙低一级为normal,则甲被分配计算槽总数的,则乙被分配计算槽总数的。通常情况下一个作业池的最小份额小于公平份额。池间的公平分配算法描述如下:1) 若存在没有达到最小份额的作业池,则设c为池内已分配到的计算槽,m为作业池的最小份额,值为最小的作业池将被优先分配计算槽,2) 若每个池都已得到最小份额,设w为计算槽的权重,则值为最小的作业池将被优先分配计算槽。3) 公平调度算法中为每个作业池维护着两个变量,最小份额时限T和公平份额时限T,当作业池在T时间内没达到最小份额或T时间内没达到公平份额的一半时,公平调度器将杀死最近开始运行的任务占用其计算槽,以最小化被浪费的计算。抢占111、不会导致被抢占的作业失败,因为Hadoop作业容忍任务丢失。每个作业池中有运行作业数量限制。若达到作业池上限,则后续作业将在调度队列中等待,直到早先的作业执行完成并释放计算槽。池内计算槽的分配池内作业间计算槽的分配,可以按照池间公平分配算法或按照hadoop默认的FIFO进行。当采取公平分配算法时,池内的作业也被设置最小份额并按权值被统计公平份额,作业间的公平分配与作业池间的公平分配基本类似。而由于较差的数据本地性,公平调度策略又提供了一个辅助的池内作业间的等待调度算法(Delay Scheduling),虽然牺牲了一定程度的公平性,但由于考虑到了hadoop平台的数据本地性,使得小作业的响应112、时间有了较大的改善并提高了集群的吞吐率。算法描述如下:在作业池内,当出现空闲计算槽时,按公平分配或FIFO排序的作业队列,头结点作业所需数据不在此计算槽所在的节点上时,则将此槽分配给下一个节点,以此类推。如果作业由于数据本地性未被分配计算槽超过一定时间,则此作业被允许分配一个计算槽,此计算槽所在节点可以与其所需数据所在节点在同一机架内,若再过一定时间后此作业仍然在等待,则允许分配一个计算槽,此计算槽所在节点可以与其所需数据所在节点不在同一机架内。2.7.3 HDFS的可靠性设计本存储系统采用基于HDFS的FaceBook版本的改进方案Avatar方案。图表 27 Avatar体系架构图各节点功113、能说明1) AvatarNode0以Primary方式启动,作为主Namenode节点接受用户请求。同时作为NFS服务器,存储AvatarNode0和AvatarNode1的fsimage和editlog。AvatarNode0的primary节点写入editlog,standby节点读取editlog,更新内存中的元数据信息,并且定期做checkpoint,将fsimage及editlog回写到nfs服务器。2) AvatarNode1以Standby方式启动,它是一个处于safemode的Namenode节点。它定期读取AvatarNode0存储在NFS上的日志来更新自己内存中的元数据,并114、定期做checkpoint,更新AvatarNode0、AvatarNode1上的fsimage以及AvatarNode0的editlog。3) DataNode此节点存储数据块,并向AvatarNode0和AvatarNode1同时发送心跳信息和BlockReport,其中包括Block的位置信息。虚拟IP机制本方案在AvatarNode0 、AvatarNode1所在的节点上使用虚拟IP工具ucarp。客户端通过虚拟IP提交请求。具体流程1) 在AvatarNode0上启动ucarpucarp的启动脚本将会检测到AvatarNode1节点上的AvatarNode进程未启动,则以Primar115、y方式启动AvatarNode进程,并且将虚拟IP指向AvatarNode0(真实IP:IP0);2) 在AvatarNode1上启动ucarpucarp的启动脚本将会检测到AvatarNode0节点上的AvatarNode进程已启动,则以Standby方式启动AvatarNode进程;3) 启动各个DataNode;4) AvatarNode0节点宕机若AvatarNode0所在节点(IP0)宕机, 此时在AvatarNode1上ucarp自动调用脚本使虚拟IP自动指向AvatarNode1(真实IP:IP1),同时调用脚本将AvatarNode进程切换到Primary状态(切换时间在20秒116、以内),保持HDFS可以对外提供服务,客户端通过VIP访问HDFS。2.7.4 HBase可靠性设计HBase系统由HBase集群和ZooKeeper集群组成。如图所示图表 28 HBase系统架构方案说明HBase的可靠性由其自身的ZooKeeper机制保证,ZooKeeper被包括在HBase的tar包中。各节点功能说明1) Zookeeper集群1 保证任何时候,集群中只有一个master2 存贮所有Region的寻址入口。3 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master4 存储Hbase的schema,包括有哪些table117、,每个table有哪些column family2) Master1 为Region server分配region2 负责region server的负载均衡3 发现失效的region server并重新分配其上的region4 HDFS上的垃圾文件回收5 处理schema更新请求3) Region Server1 Region server维护Master分配给它的region,处理对这些region的IO请求2 Region server负责切分在运行过程中变得过大的region具体流程1) 启动ZooKeeper集群2) 启动多个Master节点最先启动的节点将会在zookeeper上的118、建立代表自己的文件,并获得该文件的独占锁,用来阻止其它master成为master。3) 启动各个region server;master使用zookeeper来跟踪region server状态。当某个region server启动时,会首先在zookeeper上的server目录下建立代表自己的文件,并获得该文件的独占锁。由于master订阅了server目录上的变更消息,当server目录下的文件出现新增或删除操作时,master可以得到来自zookeeper的实时通知。因此一旦region server上线,master能马上得到消息。4) Master节点宕机由于master只维护表119、和region的元数据,而不参与表数据IO的过程,master宕机仅导致所有元数据的修改被冻结(无法创建删除表,无法修改表的schema,无法进行region的负载均衡,无法处理region上下线,无法进行region的合并,唯一例外的是region的split可以正常进行,因为只有region server参与),表的数据读写还可以正常进行。因此master下线短时间内对整个hbase集群没有影响。从上线过程可以看到,master保存的信息全是可以冗余信息(都可以从系统其它地方收集到或者计算出来),因此,一般hbase集群中总是有一个master在提供服务,还有一个以上的master在等待时120、机抢占它的位置。2.7.5 MapReduce计算可靠性设计本方案通过使用ZooKeeper的选举机制解决MapReduce的单点故障,当JobTracker节点宕机时,能够在一台备用的JobTracker节点上启动JobTracker进程,并使用虚拟IP机制将虚拟IP指向备用JobTracker节点。在JobTracker进程启动后,ZooKeeper将未完成的MapReduce作业提交给备用JobTracker节点重新执行。各节点功能说明1.JobTracker0节点主JobTracker节点,接受客户端的MapReduce作业并处理。初始启动时虚拟IP会指向此节点。2.JobTracke121、r1节点备份JobTracker节点,当JobTracker0节点宕机时,ZooKeeper会在其上启动JobTracker进程替代JobTracker0节点,虚拟IP会指向此节点,TaskTracker会注册到此节点上,未完成的MapReduce作业会被ZooKeeper调度到此节点上重新执行。 3.TaskTracker节点执行Map或Reduce任务。 4.ZooKeeper集群接受客户端提交的MapReduce作业的注册,监控JobTracker0和JobTracker1节点,当监控到JobTracker0宕机时,会在JobTracker1节点上启动JobTracker进程,并将未完成122、的MapReduce作业提交给JobTracker1节点重新执行,轮询作业状态,当作业完成时注销作业具体流程1)启动MapReduce和ZooKeeper集群在JobTracker0节点上启动JobTracker进程,同时启动ucarp使得虚拟IP(VIP)指向此节点的真实IP(IP0),在TaskTracker节点上的TaskTracker进程;2)作业提交当客户端将作业提交给JobTracker0节点的同时需要在ZooKeeper上注册此作业;如图所示图表 29 作业提交3宕机:JobTracker0宕机时,虚拟IP(VIP)会指向JobTracker1,TaskTracker节点注册到J123、obTracker1上,ZooKeeper会监测到JobTracker0已宕机,在JobTracker1节点上启动JobTracker进程,并将未完成的MapReduce作业提交给JobTracker1节点重新执行。如图所示图表 30 JobTracker0宕机 4.作业注销ZooKeeper轮询作业状态,当作业的状态为已完成时注销此作业。如图所示图表 31 作业注销2.8 查询统计计算可靠性与负载均衡设计2.8.1 基于Zookeeper的单点失效和负载均衡设计ZooKeeper可为分布式应用建立更高层次的同步(synchronization)、配置管理 (configuration mai124、ntenance)、群组(groups)以及命名服务(naming)。在编程上,ZooKeeper使用的数据模型风格很像文件系统的目录树结构,简单来说,有点类似windows中注册表的结构,有名称,有树节点,有Key(键)/Value(值)对的关系,可以看做一个树形结构的数据库,分布在不同的机器上做命名管理。Zookeeper的基本工作结构如下图所示。图表 32 Zookeeper基本工作结构图Zookeeper分为2个部分:服务器端和客户端,客户端只连接到整个ZooKeeper服务的某个服务器上。客户端使用并维护一个TCP连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送心跳。如果125、这个TCP连接中断,客户端将尝试连接到另外的ZooKeeper服务器。客户端第一次连接到ZooKeeper服务时,接受这个连接的 ZooKeeper服务器会为这个客户端建立一个会话。当这个客户端连接到另外的服务器时,这个会话会被新的服务器重新建立。启动Zookeeper服务器集群环境后,多个Zookeeper服务器在工作前会选举出一个Leader作为主服务器。在后续工作中,如果这个被选举出来的主服务器失效,而剩下的Zookeeper服务器会感知这个事件,并在活着的Zookeeper集群中重新选出一个Leader作为新的主服务器,选举出leader的目的是为了可以在分布式的环境中保证数据的一致性126、。查询索引创建、以及各种查询分析计算任务的处理将需要调度和使用计算集群上的一组服务器节点进行并行任务的分发和负载均衡处理。而负责并行任务调度和分发的节点可能会出现单点故障,进而引起整个计算系统无法正常工作。因此,需要设计一个单点失效恢复机制,以保证查询分析计算的可靠性,以及正确的并行计算任务分发和负载均衡处理。在具体实现上,我们将使用Zookeeper基于计算集群完成统一的控制和实现。基本设计和实现方法是,将计算集群中所有的计算节点都纳入Zookeeper的管理,选择其中3个计算节点注册为Zookeeper的服务器节点负责并行计算任务的调度和分发节点,Zookeeper将自动在这3个服务器节点127、中选举一个主服务器节点。当主服务器节点出现故障时,Zookeeper将能自动从剩下的2个服务器节点中重新选举产生一个新的主服务器节点来接管失效的主服务器。以此,将能保证并行计算任务的分发和调度处理不会出现单点失效。Zookeeper能感知当前所管辖的节点中任何节点的失效并作出相应的处理。当Zookeeper保证有一个负责并行任务分发调度的主服务器工作后,该主服务器将能在Zookeeper中所维护的当前有效的计算节点中挑选一个空闲的节点,并把一个计算任务分发给该节点;当多个计算任务到达时,主节点将能有效地将计算任务分发给不同的计算节点,从而实现并行计算任务在整个集群节点上的负载均衡。图表 33 128、基于Zookeeper的查询分析计算单点失效和2.9 系统安全性设计2.9.1 安全保障体系框架NSA提出的信息安全保障技术框架(IATF),如下图所示。IATF依据“深度防护战略”理论,要求从整体、过程的角度看待信息安全问题,强调人、技术、操作这三个核心原则,关注四个层次的安全保障:保护网络和基础设施、保护边界、保护计算环境、支撑基础设施。 图表 34 基于深度防护战略的IATF模型IATF模型从深度防护战略出发,强调人、技术和操作三个要素:人:人是信息的主体,是信息系统的拥有者、管理者和使用者,是信息保障体系的核心,是第一位的要素,同时也是最脆弱的。正是基于这样的认识,安全组织和安全管理在129、安全保障体系中是第一位的,要建设信息安全保障体系,首先必须建立安全组织和安全管理,包括组织管理、技术管理和操作管理等多个方面。技术:技术是实现信息安全保障的重要手段,信息安全保障体系所应具备的各项安全服务就是通过技术机制来实现的。当然IATF所指的技术是防护、检测、响应、恢复并重的、动态的技术体系。操作:也可称之“运行”,它体现了安全保障体系的主动防御,如果说技术的构成是被动的,那操作和流程就是将各方面技术紧密结合在一起的主动过程,运行保障至少包括安全评估、入侵检测、安全审计、安全监控、响应恢复等内容。信息安全保障体系的实现就是通过建立安全组织、安全管理和防护技术体系,协调组织、技术、运作三者130、之间的关系,明确技术实施和安全操作中技术人员的安全职责,从网络和基础设施、区域边界、计算环境、支撑基础设施等多层次保护,从而达到对安全风险的及时发现和有效控制,提高安全问题发生时的反应速度和恢复能力,增强网络与信息的整体安全保障能力。对于云计算安全参考模型,云安全联盟CSA(Cloud Security Alliance)提出了基于3种基本云服务的层次性及其依赖关系的安全参考模型,并实现了从云服务模型到安全控制模型的映射。该模型显示PaaS位于IaaS之上,SaaS位于PaaS之上。该模型的重要特点是供应商所在的等级越低,云服务用户所要承担的安全能力和管理职责就越多。 根据资源或服务的管理权、131、所有权和资源物理位置的不同,CSA也给出了不同的云部署模型的可能实现方式及其不同部署模式下共享云服务的消费者之间的信任关系,如下图所示。图表 35 云部署模型的实现此图显示,对于私有云和社区云,有多种实现方式,可以和公共云一样,由第三方拥有和管理并提供场外服务(off-premises),所不同的是共享云服务的消费者群体之间具有信任关系,局限于组织内部和可信任的群体之间。 对于每一种云部署实现方式,都可以提供3种基本的云服务。云部署实现的不同方式和基本云服务的组合构成不同的云服务消费模式。结合云服务安全参考模型,可以确定不同的云服务消费模式下供应商和用户的安全控制范围和责任,用户评估和比较不同132、云服务消费模式的风险及现有安全控制与要求的安全控制之间的差距,做出合理的决策。2.9.2 云计算平台的多级信任保护云计算可信平台实现系统平台(计算环境)认证、应用系统完整性认证、分布式资源信任认证和用户身份认证4个层次。多层信任保护的具体结构如下图所示。图表 36 多级信任保护在上图中,平台认证是基础,为其他3种认证提供一个可靠的计算环境。平台认证、应用认证、资源认证和用户认证都通过统一的证书机制来实现。(1)云平台信任保护由于TPM(trust platform module)规范能够支持现有的公钥基础设施,并且TPM内部的认证密钥和64位物理唯一序列号都能很好地实现自身和平台的绑定。因此可133、信平台之间的信任关系可以借助基于可信第三方的证书机制来保障。即每一个节点将能够代表自身特征的关键信息以可靠地方式提交到可信第三方(如CA中心),可信第三方在核实这些数据的真实性和完整性后对其签名,并为其颁发一个平台证书。此后,该平台在和其他平台通信时可以出示该证书,以表明自己的合法身份。平台在向可信第三方提交平台信息和验证其他平台证书合法性时,都需要借助TPM的硬件支持。在下图所示的实例中,云平台A和B都从证书颁发中心获得自己的平台证书。当B请求与A建立连接并向A出示自己的证书后,A借助TPM验证B出示的证书的有效性。图表 37 基于可信第三方的平台认证为了确保云端用户访问云平台的可信性,并确134、保远程节点具有期望的完全保障条件,基于可信计算平台的多级信任保护方法构造包含下表中各种主要因素的平台证书。数据名称数据类型数据说明Cert_NumChar证书编号Cert_TypeShort证书类型Cert_DistributeTimeByte20颁发时间Cert_LimitTimeByte20有效期限TPM_IDByte8TPM序列号Hardware_CodeByte20平台硬件标识Software_CodeByte20平台软件标识SecureComponent_CodeByte20安全组织组件标识CA_SignatureByte128CA签名信息图表 38 主要因素平台证书在图中,TPM和135、端系统唯一绑定;硬件标识码代表了端系统中各种硬件设备的完整性信息,包括CPU序列号、主板型号、硬盘序列号、内存容量等;软件标识码代表了端系统中包含操作系统版本、补丁、主要服务等软件完整性信息;安全组件标识码是各种安全组件的完整性度量结果,包括防火墙类型、安全补丁、防病毒软件名称等。为了获取这些数据的完整性度量结果,采用Hash函数对系统中的硬件标识信息、软件版本信息或安全组件描述信息进行计算,得出一个代表该系统相关信息完整性的度量值。此处,选择SHA-1算法作为完整性度量函数。签名信息是可信第三方对证书内容的数字签名,签名信息的存在确保了证书的合法性和不可篡改性。(2)应用信任保护有了云平台认136、证,用户就能断言远程协作者在确定的节点和环境中进行工作。但在网络计算等复杂应用中,一个节点可能承载了多个应用系统、担负着多个计算任务。所以,需要确保单个应用系统不同部分间(如客户端和服务器端)的可信。Seshadri等人研究了代码的远程完整性验证方法。该方法从数据完整性的角度解决了授权执行的远程应用的可信性。借鉴他的思想,采用认证应用系统中进程完整性的办法对应用系统进行信任保护。即端系统控制各个应用的进程,只有通过完整性认证并授权执行的进程才能被启动。为此,系统为每个重要的分布式应用定义若干个进行完整性证书,证书的主要内容如下表所示。数据名称数据类型数据说明Process_IDByte20进程137、IDProcess_IntegrityByte20完整性度量值TPM_SignByte20TPM签名信息在图中,进程完整性度量值是采用单向散列函数对进程代码进行计算后得出的值。进程完整性证书中。进程完整性认证可以确保远程协作进程的可信性,一定程度上降低病毒和木马进行插入攻击的风险。(3)资源信任保护多级信任保护方法仍然采用证书机制实现对资源的信任保护。即端系统基于TPM给平台中共享的网络资源颁发完整性证书并签名。其他对等的端系统需要访问该资源时,可以验证该证书的合法性并从证书中获悉资源的完整性度量数据。由于采用单向散列函数计算出的资源完整性度量值能够代表该资源的可信性,因此远程用户可以据此决定138、是否访问该网络资源。考虑单纯采用单向散列函数计算资源的完整性消耗的时间过长,实际实现时根据资源可信要求的不同采取了一些灵活的措施。如一些可信要求不高的资源文件,只针对资源文件的基本属性或按样条规则抽出部分数据进行完整性度量;资源完整性证书的主要数据成员如下表所示。数据名称数据类型数据说明Process_IDByte20资源标识IDProcess_IntegrityByte20资源完整性信息TPM_SignByte20TPM签名信息(4)用户信任保护用户信任保护的需求在现有分布式应用中已经普遍存在,但现有基于身份认证的用户信任保护方法仅仅针对用户实体进行认证,无法将用户实体和计算环境以及用户的物139、理存在性联系起来。基于可信平台的多级信任保护方法在系统平台认证和应用认证的基础上进一步进行用户身份认证,从而能够将系统中的用户锁定到具体的计算平台和具体的应用系统。多级信任保护方法中的用户身份证书的主要数据成员如下表所示。数据名称数据类型数据说明User_IDByte16用户IDApplication_IDByte16应用IDPlatform_IDByte16平台IDApp_SignByte16应用签名TPM_SignByte16TPM签名在上表中,用户ID是系统中用户的惟一标识,可以使用用户编号(用户名称)或者用户拥有的智能卡(SKEY)的序列号;所属应用ID是用户所属应用的惟一标识,可以使140、用应用的完整性度量值来代替(单进程应用可以使用进程的完整性数据代替,多进程应用可以将各个进程完整性度量数据拼接后,计算出新的整个应用的完整性度量数据);平台ID是创建该用户的端系统标识,可以使用和平台绑定的TPM的惟一序列号。2.9.3 基于多级信任保护的访问控制用户管理与权限控制子系统的接口关系如下图所示,各模块间接口关系如下:身份服务模块在用户提交进入系统的申请后向身份管理系统模块提交用户信息和身份申请;身份管理系统模块在确认用户信息后将身份管理指令和身份信息反馈至身份服务模块;认证服务模块对用户身份进行验证,确认用户合法性;访问控制模块接收用户的授权请求后,向授权管理系统模块提交用户授权141、和相关信息;授权管理系统模块根据用户信息(如用户所对应角色、所在安全域等)为用户分配相应的权限或回收相应权限将结果反馈给访问控制模块;访问控制模块得到用户的权限信息后根据信息的内容和用户请求执行需要的具体操作。数据隔离、数据校验(防篡改)、数据加密和数据保护模块提供对存储数据的安全保护。图表 39 云存储安全子系统接口关系图在云平台中,用户有不同的访问权限,针对不同权限的用户可以设定不同等级的操作。同时存储在底层资源池中的资源也同样划分为不同的安全等级,不同等级的资源,访问途径是不相同的。本项目提出了基于可信平台的多级信任保护方法,其主要目标是能够认证访问云平台的应用(进程)、资源和用户的可信142、性,从而能够非常方便地服务于多级访问控制技术,为其提供良好的基础。简单地,可以将系统中的资源按可信性需求程度分为高、中和低3个等级。资源的可信要求越高,对访问该资源的用户的可信性也要求越高。具体流程如下图所示:图表 40 基于多级信任保护的多级访问控制流程为了更好的保护虚拟资源池的数据安全,首先要建立一个可信的资源访问控制,可以利用网闸和访问控制器建立一套监控机制,对访问资源池的请求进行监督,只允许外部连接通过专用的协议进行访问,而对其它非可信的访问一律拒绝,以防止恶意的非法入侵和攻击,包括漏洞攻击、DDoS攻击和带宽攻击等,建立一个数据安全交换平台,如下图所示。图表 41 数据安全交换平台具143、体实现方式包括:会话终止:请求端通过网闸与资源池建立连接时,网闸的对外网络接口会通过模拟应用的服务器端,终止网络之间的会话连接,这样可确保在不可信和可信网络之间没有一条激活的会话连接;协议安全检查:对来自连接的数据包进行基于内部RFC的协议分析,也可以对某些协议进行动态分析,检查是否有攻击成分;数据抽取和内部封装:在协议检查同时,将协议分析后的数据包中的数据提取出来,然后将数据和安全协议一起通过特定的格式压缩、数据封装转化成网闸另一端能接受的格式;基于安全策略的决策审查:安全策略决策是运行在访问控制器上,由系统管理员定义。它分析外部来的数据,主要是源地址、目的地址以及协议等信息,并且和规则库进144、行匹配,看是否允许通过或丢弃;编码与解码:对静态的数据块进行编码,编码是相对复杂而且基于随机关键字的。一旦编码,则打乱了数据或命令的原有格式,使数据中可能携带的可执行恶意代码失效,阻止恶意程序执行。一旦数据经过了内容检测且确认是安全的,它就被解码,准备发送到内部网络;会话生成内部服务器模拟应用的客户端,将经检测过的数据发送到内部网络,和内部网络上真正的应用服务器建立一个新的连接,接着生成符合RFC协议的新通信包。同时,通过外部集成入侵检测系统IDS,对网络通信进行安全审计,及时发现和追踪各类非法连接行为;通过外部集成的负载均衡设备,为访问用户提供虚拟IP地址,保证物理机器对用户不可见,避免非法145、用户对真实物理机的直接访问,避免对物理机的可能操作动作。2.9.4 云平台安全审计云平台安全审计任务由分布于网络各处的功能单元协作完成,这些单元还能在更高层次结构上进一步扩展,从而能够适应网络规模的扩大。云安全审计体系结构如下图所示。图表 42 云存储安全审计体系结构它由三部分组成:l 主机代理模块:在受监视系统中作为后台进程运行的审计信息收集模块。主要目的是收集主机上与安全相关的事件信息,并将数据传送给中央管理者。l 局域网监视器代理模块:主要分析局域网通讯流量,根据需要将结果报告给中央管理者。l 中央管理者模块:接收包括来自局域网监视器和主机代理的数据和报告,控制整个系统的通信信息,对接收146、到的数据进行分析。在云安全审计体系结构中,代理截获审计收集系统生成的审计记录,应用过滤器去掉与安全无关的记录,然后将这些记录转化成一种标准格式以实现互操作。然后,代理中的分析模块分析记录,并与该用户的历史映像相比较,当检测出异常时,向中央管理者报警。局域网监视器代理审计主机与主机之间的连接以及使用的服务和通讯量的大小,以查找出显著的事件,如网络负载的突然改变、安全相关服务的使用等。对于安全审计系统来说,数据源可以分为三类:基于主机、基于网络和其他途径,下面分别对每类来源进行论述。(1)基于主机的数据源基于主机(包括虚拟机)的数据有以下四类:操作系统日志、系统日志、应用日志和基于目标的信息。(2147、)基于目标的数据源评估出系统中关键的或是有特殊价值的对象,针对每一个对象制定信息收集和监视机制,该对象即为审计的目标;对于审计目标的每一次状态转变,与系统的安全策略进行比较,所出现的任何异常都进行记录或响应。最常见的基于目标的审计技术是完整性校验,其审计对象多为文件。采用消息摘要算法,计算需要保护的系统对象(如关键文件)的校验值,并存储在安全区域。周期性地对目标进行检查,可以发现目标是否被改变,从而提供一定级别的保护。(3)基于网络的数据源网络数据源的基本原理是:当网络数据流在网段中传播时,采用特殊的数据提取技术,收取网络中传输的数据,作为安全审计系统的数据源。在计算机网络系统中,局域网普遍采148、用的是基于广播机制的IEEE 802.3协议,即以太网(Ethernet)协议。该协议保证传输的数据包能被同一冲突域内的所有主机接收,基于网络的安全审计正是利用了以太网的这一特性。安全审计方法描述:为系统描述方便,用T表示安全服务器,与外部网络隔离,它的通信安全性可由各种方法实现,如抵赖的令牌、VPN安全信道、SSL安全信道等,如内部网络中的安全服务器、安全的电子证据收集设备或安全的中央服务器等;用U表示不安全的系统,容易受到攻击却记录着日志的计算机系统,它在物理位置上并不安全,也就是说它是接入网络的,也没有有效的防御措施来确保不被攻击者控制,如个人PC、防火墙、入侵检测系统或其它应用系统等;149、用V表示某些授权用户使用的计算机,安全性介于U和T之间,它能被信任查看某些日志记录,但不能修改记录,也就是说并不支持所有的操作,如内部工作站等。本系统创建新的安全日志文件时,由U随机产生初始认证密钥,并由安全信道发送到T保存。U产生原始日志信息,通过多种加密的标准工具对原始日志的每条记录进行保护后写入安全审计日志文件中,并定期将安全审计日志文件备份到T中保存。安全审计时,T发送认证码给V,指定V查看或审计U和T中的日志文件的部分日志记录,也可由T直接对U中的日志文件进行安全审计,出现可疑信息时与T中的备份日志数据进行比较,发现确实不一致的则可初步判断U可能遭受攻击。安全日志审计系统结构如下图所150、示。图表 43 安全日志审计系统结构图U开始创建日志文件时与安全的认证系统T共享一个密钥,用这个密钥创建日志文件。对于分布式安全审计系统的具体实现来说,应用Agent技术是一个较好的解决方案,该技术已经在一些实际的安全审计系统中得到了应用。Agent最早起源于人工智能,现广泛地应用于人工智能、网络管理、软件工程等领域,。我们将Agent(代理)定义为“一个自治的实体,它能够感知环境,并且对外界的信息做出判断和推理,来控制自己的决策和行动,以便完成一定的任务”。基于Agent的安全审计系统是将Agent分布于系统的关键点上,包括提供各项服务的服务器、重要的工作站、内部网关和防火墙上,完成大部分安151、全审计和响应任务。由于代理本身具有自治性,可以针对特定的应用环境编程和配置,使得代理占用系统资源最小;在将代理放入具体复杂环境前可以对它进行独立测试;同时通过Agent间的有限交互(包括数据和控制信息),可以获得更复杂的信息,有利于解决网络中的协作入侵活动。安全审计中Agent通过探查所在的系统的日志文件,捕获网络数据包或其他的信息源获取数据。此外,将审计任务分配到多台计算机上有利于减少监控计算机的负荷,而且能提高系统的处理速度和效率,提高系统的实时性;最后,Agent可以自动升级,而且对系统的其他部分保持透明。2.9.5 云计算综合安全网关我司参与研制的云计算综合安全网关(Cloud-USG152、)是满足云计算环境网络安全交付需求的综合安全网关, Cloud-USG采用高性能的硬件架构和一体化的软件设计(合理的Single Pass & Parallel Processing SP3软件体系及数据平面与控制平面分离的硬件架构),集防火墙、VPN(IPSec VPN/SSL VPN)、抗拒绝服务攻击(Anti-DoS/DDoS)、入侵防御(IPS)、Web应用防火墙(WAF)、上网行为管理、流量管理等功能,以及云数据中心边界安全防护技术于一身;可选的支持(地端的)防病毒、内容审计、反垃圾邮件等安全技术,同时全面支持QoS、高可用性(HA)、日志审计等功能,支持云计算环境下,不同虚拟系统的153、不同安全策略和防护手段,为云计算数据中心提供了全面、实时的安全防护和安全高效的云计算性能交付。Cloud-USG云计算综合安全交付网关采用了一体化的设计方案,在一个产品中协调统一地实现了接入安全需要考虑的方方面面,采用Cloud-USG云计算综合安全交付网关,可以从整体上解决接入安全的问题。用户可不必考虑产品部署、兼容性等困惑,也不再因为多个产品难于维护管理而苦恼,Cloud-USG云计算综合安全交付网关是低成本、高效率、易管理的理想解决方案。云计算综合安全网关(Cloud-USG)由三个部分组成:(1)Cloud-USG-Appliance,(安全网关服务器设备)Cloud-USG-Appl154、iance设备部署在云计算数据中心,融合多种安全能力,针对恶意攻击、非法活动和网络资源滥用等威胁,实现精确防控的高可靠、高性能、易管理的网关安全设备。(2)Cloud-USG-Console,(安全网关管理控制台)部署在云计算数据中心内部管理区,对Cloud-USG-Appliance设备进行集中管理。对Cloud-USG-Appliance 设备集中管理、统一监控和升级中心,通过它可以集中配置、监控和管理所管辖的多台Cloud-USG-Appliance设备;按照一定的规则组织成层次结构,方便管理员对于整网Cloud-USG-Appliance设备的监控维护工作。(3)Cloud-USG-S155、DC(安全数据管理中心)部署在云数据中心或其他数据中心,集中存储多个安全网关的安全数据信息,并集中的进行分析处理。收集、存储多台Cloud-USG的安全数据信息;集中分析、审计和处理安全数据信息,形成相关决策建议或报告。Cloud-USG采用了以下三项独特的识别技术,可实现对应用程序、用户和内容的可视化和控制:App-ID、User-ID 和 Content-ID。系统采用统一安全策略管理,所有功能采用一套安全策略控制,只需要定制一个策略模板就可以实现全部的安全功能,这就是策略单通功能(One Policy);同时,所有安全功能按照并行处理进行设计,每一个数据包只需要处理一次即可,大大节省了处156、理时间,确保网络性能的达成,这就是数据包单通功能(Single Pass)。Cloud-USG的三个组成部分,分别部署在不同的位置:Cloud-USG-Appliance设备部署在云计算数据中心,针对恶意攻击、非法活动和网络资源滥用等威胁,实现精确防控;Cloud-USG-Console部署在云计算数据中心内部管理区,对Cloud-USG-Appliance设备进行集中管理;Cloud-USG-SDC部署在云数据中心或其他数据中心,集中存储多个安全网关的安全数据信息,并集中的进行分析处理。Cloud-USG部署方式支持以下三种模式:支持路由、透明、混合等多种模式;支持分布式多级部署;支持htt157、p等透明代理。图表 44 Cloud-USG三种部署模式Cloud-USG针对不同虚拟域,可根据实际防护内容,采用不同防护手段;能够采用关联分析技术快速分析恶意URL、病毒、木马等不同安全风险,具备即时、立体的安全防御能力。Cloud-USG具有下列主要功能:(1)安全访问控制Cloud-USG支持云计算所用到的多种虚拟环境,包括应用于硬件抽象层、操作系统层、应用程序编程接口层和编程语言层等层次的高级虚拟机,以及应用虚拟化和存储虚拟化技术等;采用智能状态检测技术,不仅对数据包进行检测,还对控制通信的基本状态信息(例如,通信信息、通信状态、应用状态和信息操作性)进行检测;提供基于源/目的IP地址158、协议/端口、时间、用户、VLAN、VPN、安全区的精细粒度的安全访问控制。(2)远程安全接入云Cloud-USG支持标准IPSEC VPN和SSL VPN;支持基于标准IKE协商的VPN通信隧道;支持多种IKE认证方式,如预共享密钥、数字证书;支持IKE扩展认证,如Radius认证等;支持3DES、DES、AES等算法;支持标准MD5、SHA-1认证算法;支持隧道的NAT穿越;支持隧道内的QoS。(3)抗拒绝服务能力Cloud-USG具备对SYN Flood、ICMP Flood、UDP Flood等流量型DDoS攻击的防御能力;具备对CC攻击等应用层DDoS攻击的防御能力。(4)入侵检测/159、防护能力Cloud-USG除针对各种传统网络攻击,例如远程扫描、暴力破解、缓存区溢出、蠕虫病毒、木马后门等进行入侵检测和防护以外,重点针对虚拟化技术本身引入的hypervisor和其它管理模块所带来新攻击方式进行入侵检测;攻击规则不少于1000条,每条规则具备详细的攻击规则描述及解决方案,按照攻击手段、严重程度分类,还可以自定义规则。(5)WEB安全Cloud-USG系统内置先进、可靠的Web可信度判断机制,能够有效抵御Web安全威胁渗入;URL分类库:提供超过1000万条的URL分类库,提供多种精细分类(网络“钓鱼”、论坛聊天等),支持独立配置界面,实时告警、阻断并记录。(5)网关设备自身管160、理支持安全事件、网络流量、网络状态、设备状态日志查询;提供日志存储、事件检索、统计报表功能,支持用户自定义报表模版,同时提供定时自动发送报表功能,支持将生成的报表以html、word、uof等通用格式输出。3 详细设备配置清单总容量:512T服务器是存储与计算复用。序号名称规格单位数量单价小计1交换机千兆48口台160000600002云存储集成套件(硬件)机架、KVM、监控终端等套350,000150,0003云计算/存储元数据服务器8核CPU32G内存2T硬盘8台250,000100,0005云计算/存储节点服务器8核CPU16G内存2T硬盘8台442,00016,80006应用服务器4核CPU16G 内存2T硬盘4台132,00032,0007云计算软件系统套1600,000云存储软件系统套18()软硬件总价1, 100,0009()施工与集成费用200,00010()系统备件成本费用200,00011()维护与服务费用200,00012()管理费用、税收160,00013总计=+ + + 1,860,00014折扣后实际收取费用1,500,000