




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
“智慧南京”综合视频平台解决方案页系统总体设计云计算系统设计方案概述系统基本功能按照全省公安机关信息化建设总体规划,为实现对重点车辆的自动比对和动态管控、对异常车辆行踪的自动研判预警、对特定车辆行车轨迹的自动生成、对重要节点道路交通信息的远程再现、对基层单位和执勤民警的勤务实施管理等建设目标,为交通管理、治安管控、侦查破案、巡逻防范、反恐处突等各项公安工作提供服务保障。系统的基本功能和性能如下:海量历史交通监控数据汇总能够对千亿级的海量历史交通监控数据进行汇总处理。海量原始交通监控数据上报能够对千亿级的海量上报交通监控数据进行上报处理。海量原始数据实时入库、生成索引能够对流量超过10000条/m的全量原始交通监控数据流进行实时处理。海量数据存储、计算能够存储千亿级别的数据,并完成各种复杂业务应用计算。千亿级数据秒级查询能力高效索引算法,智能化调度任务系统,满足秒级查询速度。秒级实时业务响应高效实时数据通道,对于像实时监控、告警等实时业务,提供秒级响应时间。主要设计思想和设计目标、设计原则设计思想:将海量数据分解到由大量X86架构计算机构成的低成本云计算平台上进行实时处理,依靠分布式云计算软件进行容错,从而提升智慧交通云平台海量数据分析的实时性和性价比。设计目标:利用大量性价比高的计算机,建立云计算平台,能够对流量超过10000条/s的原始交通监控数据流进行实时处理,提供实时监控、报警监控、车辆轨迹与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析等多种业务支持。系统具有可动态可伸缩性、高度容错性和响应实时性,达到较之传统方案有一个数据量级的性能价格比提升。设计原则:(1)前瞻性技术与实际应用环境相结合本项目是既是先进技术应用示范项目,又是工程实施型项目。把握技术正确性和先进性是前提,但是前瞻性技术实施必须在云计算平台的实际应用环境和实际监控流量的基础上进行,必须结合云计算平台的实际情况进行研究和开发,只有与实际应用环境相结合才有实际应用价值。(2)学习借鉴国外先进技术与自主创新相结合在云计算平台用于超大规模数据处理方面,国内外几乎是在一个起跑线上;但在关键技术研究及既往的技术积累方面,国外一些大公司有着明显的优势。同时,智慧交通云平台所将要面对的交通监控数据流高达10000条/s,是一个世界级的云计算应用。我们将积极学习借鉴国外先进的云计算技术,同时与自主创新相结合,形成功能强大、性能卓越的能够满足实际应用环境需求的云计算数据处理和分析平台。(3)遵循公安320工程相关标准规范本项目的设计将严格遵循公安320工程相关标准规范。智慧交通云平台的云计算解决方案在公安网内部,构建若干X86架构计算/存储节点,虚拟出海量存储空间、处理能力和数据管理能力。同时研制面向应用的分布式数据处理软件,满足数据汇总、数据上报、数据入库、数据查询、数据计算和数据管理等应用需求。图表SEQ图表\*ARABIC1智慧交通云平台云计算解决方案系统的主要技术特点实时性:平台在高效率并行分布式软件的支撑下,可以实时完成交管数据入库、分析和管理工作,如数据汇总、数据上报、数据入库、数据查询、数据计算和数据管理等。海量数据入库不会出现数据堆积现象,各类分析和查询工作基本都在秒级完成,具有前所未有的高效性。高可靠性:基于对云计算可靠性深厚的研究积累,彻底解决了当前分布式计算平台易出现的单点故障问题。任何一个节点出现故障,系统将自动屏蔽,而且不会出现丢失数据的现象。包括查询任务分配节点、计算任务分配节点、HDFS元数据节点、HDFS数据存储节点、MapReduce
JobTracker节点、MapReduceWorker节点、HBase管理节点、HBaseRegion节点等。可伸缩性:在不停机的情况下,增加节点,平台的处理能力自动增加;减少节点,平台的处理能力自动缩减。这样,可以做到与云计算平台的无缝对接,根据计算和存储任务动态地申请或释放资源,最大限度地提高资源利用率。高性价比:采用X86架构廉价计算机构建云计算平台,用软件容错替代硬件容错,大大节省成本。在目标性能和可靠性条件下,可比传统的小型机加商用数据库方案节省10倍左右的成本。全业务支持:采用分布式数据库模式,绝大部分海量数据存放于分布式平台并进行分布式处理,少量实时性要求很高的数据存放于关系数据库中,可支撑各种类型的业务。不仅支撑查询、统计、分析业务,还可支撑深度数据挖掘和商业智能分析业务。系统总体构架系统基本组成与构架智慧交通云平台是一个处于交管数据采集与交管数据监测应用之间的系统。从系统基本组成与构架上来看,该共享平台由7个主要部分组成:历史数据汇总处理系统,上报数据上报系统,实时数据入库系统,交管数据存储系统,交管数据查询分析应用系统,数据管理系统以及系统管理。在基础设施构架上,该平台将架构将构建在南京公安云计算平台之上,利用南京公安所提供的计算资源、存储资源和网络资源,作为智慧交通云平台的基础设施和支撑平台。图表SEQ图表\*ARABIC2智慧交通云平台的基本组成与构架系统功能构架智慧交通云平台需要提供的7大主要功能描述如下。(1)历史数据汇总处理系统历史数据汇总处理主要负责把南京市6个分散的数据中心的历史数据,进行读取解析处理,并将处理后的历史数据汇入一个统一的数据中心。在内部处理模块上,历史数据汇总系统主要包括三个模块:读取模块、解析模块和汇总模块。读取模块主要负责各个数据中心历史数据的读取处理,解析模块主要负责把读取到的历史数据解析成合理的数据格式,而汇总模块主要负责把解析好的历史数据上传到统一的数据中心。在系统构架上,为了满足6个分散的数据中心处理需要,需要在每一个数据中心处安装一个数据汇总程序。(2)上报数据上报处理信系统上报数据上报处理负责把市数据中心的数据,按照一定的需求(按时间段或一定的数据量),上报给省厅数据中心。在内部处理模块上,上报数据上报系统主要包括三个模块:读取模块、解析模块和上报模块。读取模块主要负责市数据中心需要上报数据的读取处理,解析模块主要负责把读取到的数据解析成合理的数据格式,而上报模块主要负责把解析好的数据上传到的省厅数据中心。在系统构架上,为了满足市数据中心处理需要,需要在市数据中心处安装一个数据上报程序。而省厅数据中心需要提供数据上报的接口。(3)实时数据入库系统实时数据入库系统主要负责全市每个卡口产生的数据实时入库。在内部处理模块上,实时数据入库系统主要包括三个模块:接受模块、解析模块和数据入库模块。接受模块主要负责接收每个卡口产生的数据流,解析模块主要负责把接受到的数据流解析成合理的数据格式,而数据入库模块负责把解析好的数据加入到市数据中心。在系统架构上,为了使每个卡口的数据能实时入库市数据中心,需要在每一个负责接受卡口数据的工控机上安装一个实时数据入库系统。(4)交管数据存储系统原始交管数据,将全部存储在智慧交通云平台的云存储资源中。资源池提供两种存储资源:一种是结构化数据存储资源,用于存储少量的接口中间数据;另一种是分布式文件系统,用于存储海量的非结构化数据。为了满足和适应数据量、数据特征和查询处理的不同需求,将采用一种混搭式的数据存储方案。对容量巨大、常规数据库难以处理的数据,如交管数据,将主要存储在基于HDFS的分布式文件系统中;这些数据将通过HDFS接口进行访问和计算处理。而对于部分数据量不大、且查询响应性能要求很高的数据,如用于报警比对的中间数据,将被存放在关系数据库中。关系数据库将采用SybaseASE版本。这些数据将通过结构化数据存储访问接口(如JDBC)进行访问。在存储构架上,若以存储3年的原始交管数据、报警信息数据和针对快速查询建立的索引数据,在10000条/s的交管数据流量下,将大约需要512TB的存储容量,按照每个存储节点16TB的存储容量,加上少量的冗余节点,将需要32个存储节点。(5)交管数据查询分析应用系统交管数据查询分析应用主要提供包括实时监控、报警监控、车辆轨迹与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析等功能。车辆轨迹查询处理时,由于交管数据量巨大,难以存储在常规的关系数据库中,而如果直接存储在HDFS或HBase中又难以保证查询效率。为此,需要考虑对交管数据进行索引处理,并将索引数据存储在HDFS或Hbase中。为了建立交管数据索引,需要在交管数据传送到云存储系统中时,进行实时的索引处理。但由于交管数据流量巨大,需要调度使用多台服务器节点进行并行处理。此外,用户从客户端发起以上各种数据查询分析任务时,也会产生大量并发的查询任务。以上各种查询分析计算任务的处理将需要考虑在计算集群上进行并行化任务调度和负载均衡处理。这些并行计算任务及负载均衡处理将使用Zookeeper基于计算集群完成统一的控制和实现。在系统构架上,以上查询分析计算任务将需要使用一个大规模数据并行计算集群。在编程实现上,存储在数据库中的数据将使用常规的数据库查询语言实现;对存储在分布式文件系统中的交管数据,针对不同的处理要求,在数据量极大而处理实时性要求不是特别高的情况下,为了方便对海量数据的并行处理,将采用MapReduce编程方式实现;而对于那些实时性要求很高的查询分析计算,由于MapReduce启动作业需要较长的时间开销,将不适合采用MapReduce编程实现,而需要用非MapReduce编程方式实现。(6)数据管理系统在实际使用中,可能用户会对某一时间段或者类型的数据特别关心,就可以通过数据管理系统查询并导出这部分数据以供使用。包括数据查询和数据导出两大部分。数据查询让用户以自定义的条件查询出数据,而数据导出就是将这些数据以合理的格式导出到数据中心以外。(7)系统管理系统管理主要包括智慧交通云平台的配置管理、系统安全管理、系统用户管理,以及数据备份、系统故障监测复等管理维护功能。配置管理是其中最主要的部分,是系统各个模块正常运行的基础。系统应能够对网络地址、设备地址等进行配置;能够对用户做权限管理,以防止数据外泄;并能及时有效的对数据进行备份和故障检测等工作,防止数据的意外丢失。系统应支持树图、数据表格、网络拓扑图形式展示配置数据。系统总体构架与功能模块基于以上基本的系统组成和功能构架,系统的详细总体构架和功能模块设计如图所示。图表SEQ图表\*ARABIC3智慧交通云平台总体构架与功能模块图上图中,自底向上分为五个层面。最下层是硬件平台层,将使用南京市公安局云计算中心所提供的计算、存储和网络资源。从系统处理系统的角度看,这一层主要包括云存储计算集群,此外还包括接口和管理服务器、包括用于实现客户端访问的Web服务器。第二层是系统软件层,包括移动的云存储系统软件,综合分析云计算软件平台,以及Web服务软件等。云存储系统将提供基于SybaseASE关系数据库的结构化数据存储访问能力,以及基于HDFS的分布式文件系统存储访问能力,分别提供基于JDBC/SQL的数据库访问接口以及HDFS访问接口。综合分析云计算软件平台可提供对HDFS、Hbase数据的访问,并提供MapReduce编程模型和接口、以及非MapReduce模型的编程接口,以及用于实现并行计算任务负载均衡和服务器单点失效恢复的Zookeeper。第三层是智慧交通云平台中的数据层,包括原始交管数据、索引数据、用于分析的中间数据、以及系统配置数据等。其中,原始交管数据、索引数据等海量数据将存储在南京公安局云存储系统的HDFS分布式文件系统中,用HDFS接口进行存储和访问处理;而其它用于分析的中间数据等数据量不大、但处理响应性能要求较高的数据,将存储在云存储系统的关系数据库系统中,用JDBC/SQL进行存储和访问处理。第四层是交管数据处理软件层,主要完成智慧交通云平台所需要提供的诸多功能,包括实时监控、报警监控、车辆轨迹查询与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析、系统管理等功能。最上层是客户端用户界面软件,主要供用户查询和监视相关的数据信息,除了事件检测报警不需要用户界面外,其它部分都需要实现对应的用户界面。系统基本功能与处理方案交管数据入库功能与处理方案交管数据入库系统总架构如图:图表SEQ图表\*ARABIC4智慧交通云平台架构 智慧交通云平台通过实时数据入库系统接入采集层的交管数据,数据分配进入负载均衡机,负载均衡机根据集群各节点负载情况,动态分配交管数据到各存储处理机,进行报警检测、建立索引等处理,同时将交管数据存入分步式存储系统。负载均衡机功能监控所集群机器负载情况,动态分配交管数据。监控所有集群机器,如果发现问题,那么就把分配给这台机器的交管数据重新分配到其他机器,去除单点故障,提高系统可靠性。负载均衡机采用Paxos算法解决一致性问题,集群在某一时刻只有一个Master负责均衡能力,当Master宕机后,其他节点重新选举Master。保证负载均衡机不会存在单点问题,集群机器一致性。实时业务对于实时性要求高的业务应用,如:实时监控、实时报警,走实时专道。数据存储功能与处理方案数据存储处理总架如图:图表SEQ图表\*ARABIC5数据存储处理架构数据存储系统提供如下功能:交管数据处理:接收来自数据汇总和数据入库系统的交管数据,索引模块实时生成索引,以提高查询速度。生成的索引存储到HDFS中,以供查询交管数据使用。专题业务分析,通过MapReduce并行计算,同期提取业务数据,将结果分存两路,一路存入Hbase或日志详单存储,一路存入关系型数据库。报警数据处理智慧交通云平台对接收到的实时交管数据进行计算,以判断这辆车有没有符合报警条件。如果符合,会对报警信息入库,并同时通过对外实时报警的接口,将报警信息迅速展示到用户界面上。查询分析功能与处理方案交管数据查询构架如图:图表SEQ图表\*ARABIC6交管数据接入当客户发起请求后,客户端把请求发向查询接口服务器,查询接口服务器解析查询请求,后向Master任务调度机发送查询任务执行命令;Master回应执行命令节点信息,查询服务器根据节点信息将查询命令发向查询计算模块,进行具体查询操作,将查询结果返回给客户端,呈现给用户。系统互联与管理组网方案组网方案如图:图表SEQ图表\*ARABIC7组网方案我司可向公安数据中心申请VPN或公网IP服务,如果系统出故障,可以保障第一时间远程排查。网络管理服务器间网络安全检查系统自管理通过启用网络安全检查进程(netinspect),定期检查整个系统的网络状况,并上报各服务模块网络流量信息,在终端形成网络拓扑图,实时在界面呈现各节点网络状态,管理员也能及时了解,各服务模块的网络流量机承载的负荷。若出现网络故障,netinspect进程实时上报故障情况,在网络拓扑图上以报警方式提示,或以短信的方式提示,便于管理员及时发现问题,并恢复网络故障,确保系统在安全的网络环境下运行。服务模块进程监控管理系统自管理通过启用服务模块运行状态检查进程(proinspect),定期检查整个系统的服务模块进程运行状况,并上报各服务模块进程的运行状态信息,在终端将运行的进程的状态以表格形式显示,定时更新进程的运行状态信息。通过它管理员也能及时了解,各服务模块的进程运行负荷。若在固定的时间内没有更新,视为进程运行故障,启动主机代理自动恢复故障进程,保障各服务模块进程持续稳定的运行的状态。系统性能监控管理系统自管理通过启用服务模块性能检查进程(serverinspect),定期检查整个系统的各服务器性能指标,包括CPU开销、内存占用、IO峰值、网络流量、连接数等。并上报各服务性能指标,在终端形成拓扑图,实时在界面呈现各节点服务器性能状态,管理员也能及时了解,各服务节点处理性能及资源开销。若性能持续高负荷,拓扑图上以报警方式提示,或以短信的方式提示,便于管理员及时发现问题,查找问题的来源或重新评估服务器配置情况,为系统稳定运行提供一个确实可靠的标准。系统日志分析处理系统各服务模块在运行期间写日志文件,将进程的模块编号、服务器的IP、出错页码等日志的状态(错误、告警、提示)等级别的信息保存磁盘文件,供工程师来分析系统运行状态。同时日志分析进程(loganalyse)分析日志文件,将重要的日志信息,进行对比、分析并汇总后,生产统一格式的日志信息,提取出来,写入的数据库表中,终端管理通过查询界面来来显示,能及时了解到系统的运行的状态。系统运行状态及报警处理系统运行报警分为以下几种:服务器运行状态报警服务器网络状态报警服务模块进程报警日志模块状态报警系统安全网络安全为保障整个系统稳定运行,首先要保障系统在网络方面是安全的。从硬件、软件方面做相应的安全措施。硬件:所有的网络设备都要1+1冗余配置,涉及以下网络硬件设备冗余配置以太网100M/1000M网卡以太网网络交换设备光纤网络接口FC/HBASAN光纤网络交换机软件:在整个系统上部署防火墙软件、及自产的安全管理管理软件模块来保障系统平稳运行。数据文件安全性见集群可靠性章节。系统可靠性与扩展性系统可靠性HDFS可靠性概述:HDFS包括元数据节点(Namenode)和数据节点(Datanode),Namenode是一个中心服务器,负责管理文件系统的Namespace和客户端对文件的访问。,Datanode在集群中一般是一个节点一个,Datanode是文件系统中真正存储数据的地方。DataNode所在机器挂了怎么办?HDFS(HadoopDistributedFileSystem)默认的最基本的存储单位是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上。系统扩展性已有的Hadoop集群规模Hadoop是一个相当有弹性和扩展性的平台,它既可以在成千上万的机器上跑,也可以在很小规模上运行。目前最大的Hadoop集群有四千台机器。Hadoop扩展优势:与其它分布式系统相比,使用Hadoop的好处在于它的水平的可扩展性,在少量结点上,用Hadoop处理有限的数据时,不能展示Hadoop的性能,因为开始Hadoop程序相关的代价比较高,其它并行/分布程序方式,比如MPI(MessagePassingInterface)可能在2台,4台或许10多台计算机上有更好的性能,尽管在少量机器上协同工作在这种系统上也许会取得更好的性能,但这种为性能所要付出的努力是非线性的增长。用其它分布式框架所写的程序在从十台机器的级别到成百上千台机器需要大量的重构工作,这也许要程序重写几次,并且其它框的基础元素会限制应用的规模大小。但是特别设计的Hadoop有着水平的可扩展性,一个Hadoop程序写完后,在10个结点上运行,如果迁徙到更大的集群上运行,几乎不需要做什么工作,Hadoop平台会管理数据和硬件资源并提供与可用资源成比例的可靠性能。Hadoop扩展方法:HBase集群具备线性扩展功能,只需要将配置好的regionserver节点加入到集群中。MapReduce集群具备线性扩展功能,只需要将配置好的TaskTracker节点加入到集群中,JobTracker节点就会将Map或Reduce任务分配给此节点处理。HDFS具备线性扩展功能,只需要将配置好的DataNode节点加入到集群中,并且在集群空闲时执行balancer工具以平衡集群中DataNode的数据块负载。系统设计性能交管数据流量处理能力交管数据集群完全采用分布式实现,支持线性扩展,每节点采用低端X86PCServer处理500条/s流量。对于全全市总量10000条/s的实时入库数据和大量的历史数据来说,需要34台处理机。以下是各部分处理能力统计:交管数据存储查询服务器配置:8核CPU×2,主频2.3GHz,内存32G,硬盘8×2TSATA处理能力:折合交管数据入库流量500条/s/台应用分析服务器配置:8核CPU×2,主频2.3GHz,内存16G,硬盘2×300GSAS处理能力:折合处理并发访问量500次/s/台数据存储能力原始交管数据存储采用云存储平台,分布式文件系统存储服务。性能指标:存储量指标单系统应支持PB级存储容量。吞吐量指标吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。吞吐量根据应用系统读写方式和应用系统读取存储内容大小分成四个指标。分布式文件存储系统按照32个节点并发500个用户计算,单节点8块2T大小的硬盘情况下,每个节点指标具体内容如下表所示:表8分布式文件存储系统吞吐量指标编号读写方式存储内容大小平均吞吐量指标(MBps)1100%读1GB602100%写1GB303100%读100KB304100%写100KB15图表SEQ图表\*ARABIC8分布式文件存储系统吞吐量指标系统响应时间指标千兆网络环境下,局域网客户端从分布式文件存储系统中读取4096字节存储内容的响应时间应不高于50ms。交管数据存储采用HDFS性能指标,如下:数据读取性能:40~80MB/s·节点;数据规模:10PB规模;数据负载均衡时间:可依据流量配置而确定;集群重新启动时间(10PB规模):分钟级别;查询分析计算性能对任何实时分析操作的反应时间小于10秒;查询、统计操作的首次响应时延小于1秒;并发操作终端数大于30个;基于交管数据的统计,记录5000万条以内,30秒可以统计完成。定制开发方案相对于已经完成的传统方案,云计算方案还需要在以下方面进行特定开发。(1)历史数据汇入处理平台定制开发历史数据入库系统需要使用与计算存储集群分立的专用机器(可安装在各县市现有的数据服务器上)。由于数据汇入处理不需要存储任何数据,仅仅需要读取、解析和入库数据。因此,数据汇入时对服务器的要求比较简单,不需要考虑和使用诸如Hadoop的大规模数据并行计算和存储系统,只需要一般的单一的服务器即可。(2)上报数据上报处理平台定制开发上报数据上报系统需要使用与计算存储集群分立的专用机器(可安装在市数据中心现有的数据服务器上)。由于数据上报处理不需要存储任何数据,仅仅需要读取、解析和上报数据。因此,数据上报时对服务器的使用比较简单,不需要考虑和使用诸如Hadoop的大规模数据并行计算和存储系统,只需要一般的单一的服务器即可。但是由于上报的数据量比较大,而上报时间又不会很长,所以对服务器的性能有一定要求。(3)交管数据实时入库并创建索引程序定制开发交管数据存储在Hadoop系统的HDFS中,但由于巨大的交管数据流量,每秒钟将有大量的交管数据产生,为了提供及时的数据查询,这些数据文件必须得到及时的索引创建处理,否则将造成大量的交管数据积压。因此,索引创建程序需要有较高的实时处理能力,以便能在毫秒级时间内保证处理完大量的一秒钟的交管数据。由于MapReduce计算任务需要较长的作业初始化时间,交管数据索引创建程序将难以用MapReduce程序实现,而需要基于HDFS、利用HDFS编程接口编写和定制较为复杂的非MapReduce程序,该程序不能依赖任何MapReduce的编程构架和接口,而需要自行编写程序完成全部的数据读出、解析处理、复杂的索引计算、以及索引数据的输出(输出到HDFS或者Hbase)处理过程。(4)查询分析接口开发智慧交通云平台会提供以下的应用接口:实时监控、报警监控、车辆轨迹查询与回放、电子地图、报警管理、布控管理、设备管理、事件检测报警、流量统计和分析、系统管理等。这些应用接口都需要根据实际的应用需求再进行合理的改进过程。(5)查询分析软件定制开发(可选)查询分析软件将设计为基于Web的应用程序,包括客户端查询用户界面以及服务器端查询服务程序。客户端查询用户界面可基于通用的浏览器实现,也可设计为独立(standalone)的客户端软件。具体的客户端界面将需要根据不同的查询功能需求设计实现不同的查询界面。查询服务软件将基于ApacheWeb服务器设计实现。需要特别考虑的是,大量并发的用户查询任务将需要设计实现查询任务分发时的负载均衡处理。(6)并行处理任务的负载均衡调度和单节点失效恢复机制的定制方案前述的交管数据入库、建立索引、数据汇总和数据上报、数据查询等处理中需要考虑的一个共性的重要问题是,为了对大量数据进行并行化的处理、或者大量用户同时发出了很多查询请求时,需要考虑并行计算任务的分发调度和负载均衡,尤其是负责分发调度的节点可能出现单节点失效而导致系统无法正常工作。为此,将基于Zookeeper设计实现一个可防止单节点失效的并行计算任务分发调度控制机制和程序框架。该框架中,Zookeeper将使用3台并行计算任务调度服务器,并有Zookeeper负责选择和确定一个主服务器进行工作,但当主服务器失效时,Zookeeper将能够自动感知并选择另一个服务器作为主服务器工作,以此完成单节点失效的恢复处理。进而,通过Zookeeper还可以控制和均衡调度使用大量的计算节点,从而完成并行计算任务分发调服时的负载均衡。(7)Hadoop计算与存储集群的可靠性设计和功能扩展Hadoop作为一个开源的面向大规模数据并行计算的编程框架和平台,其可靠性和性能方面还存在不少需要改进的地方。比如,Hadoop集群的Master服务器虽然开用了一个备份Master服务器,但当主Master服务器失效时,备份Master服务器并不能自动完成失效恢复和切换处理。这就无法满足智慧交通的实时性处理需求。为此,我们需要对Hadoop进行改进,设计实现一个能自动完成Master服务器失效处理和切换的定制Hadoop系统,以便为智慧交通云平台提供一个高可靠性的大规模数据并行计算和存储平台。系统设计实施与关键技术方法系统设计实施与关键技术方法系统软硬件平台系统软硬件结构如图:图表SEQ图表\*ARABIC9系统软硬件结构 系统的物理硬件采用低端的x86PC服务器,操作系统采用RedHatLinux。数据处理流程数据汇总上报处理流程如图:图表SEQ图表\*ARABIC10数据汇总上报处理流程实时数据入库流程如图:图表SEQ图表\*ARABIC11实时数据入库流程数据存储子系统海量数据分布式数据存储构架云计算是一种超级的计算模式,可以把网络中的计算机虚拟为一个资源池,将所有的计算资源集中起来,并用特定软件实现自动管理,使得各种计算资源可以协同工作,这就使得处理数量巨大的数据成为了可能。基于云计算的海量数据存储模型,是依据云计算的核心计算模式MapReduce,并依托实现了MapReduce计算模式的开源分布式并行编程框架Hadoop,将存储模型和云计算结合在一起,实现海量数据的分布式存储。MapReduce是云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式编程模式,用于解决问题的程序开发模型,也是开发人员拆解问题的方法。MapReduce模式的主要思想是将自动分割要执行的问题,拆解成Map(映射)和Reduce(化简)的方式。在数据被分割后通过Map函数的程序将数据映射成不同的区块,分配给计算机集群处理达到分布式运算的效果,在通过Reduce函数的程序将结果汇整,从而输出开发者需要的结果。MapReduce借鉴了函数式程序设计语言的设计思想,其软件实现是指定一个Map函数,把键值对(key/value)映射成新的键值对(key/value),形成一系列中间结果形式的key/value对,然后把它们传给Reduce(规约)函数,把具有相同中间形式key的value合并在一起。Map和Reduce函数具有一定的关联性。MapReduce流程如图所示:图表SEQ图表\*ARABIC12分布式计算流程Hadoop是一个实现了MapReduce计算模型的开源分布式并行编程框架,程序员可以借助Hadoop编写程序,将所编写的程序运行于计算机集群上,从而实现对海量数据的处理。此外,Hadoop还提供一个分布式文件系统(HDFS)及分布式数据库(HBase)用来将数据存储或部署到各个计算节点上。借助Hadoop框架及云计算核心技术MapReduce来实现数据的计算和存储,并且将HDFS分布式文件系统和HBase分布式数据库很好的融入到云计算框架中,从而实现云计算的分布式、并行计算和存储,并且得以实现很好的处理大规模数据的能力。综合MapReduce和HDFS来看Hadoop的结构:图表SEQ图表\*ARABIC13Hadoop结构在Hadoop的系统中,会有一台Master,主要负责Namenode的工作以及JobTracker的工作。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。还会有多台Slave,每一台Slave通常具有DataNode的功能并负责TaskTracker的工作。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务。主服务控制集群相当于控制器部分,主要负责接收应用请求并且根据请求类型进行应答。存储节点集群相当于存储器部分,是由庞大的磁盘阵列系统或是具有海量数据存储能力的集群系统,主要功能是处理数据资源的存取。HDFS和Hbase用来将数据存储或部署到各个计算节点上。Hadoop中有一个作为主控的Master,用于调度和管理其它的计算机(将其称之为TaskTracker),Master可以运行于集群中任一台计算机上。TaskTracker负责执行任务,必须运行于DataNode上,DataNode既是数据存储节点,也是计算节点。Master将Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况。如果其中任意一个TaskTracker出故障了,Master会将其负责的任务转交给另一个空闲的TaskTracker重新运行。用户不直接通过Hadoop架构读取及HDFS和Hbase存取数据,从而避免了大量读取操作可能造成的系统拥塞。用户从Hadoop架构传给主服务控制集群的信息后,直接和存储节点进行交互进行读取操作。适应应用需求的混合存储策略混合存储策略可以简述为HDFS分布式文件系统用来存储海量数据,可以根据存储的数据类型建立索引,HBase也可用来存储海量数据,其由查询条件建立索引表,Database对小型数据的存储处理。分布式文件系统HDFS是一个开源云计算平台Hadoop框架的底层实现部分,适合运行在通用硬件上的分布式文件系统,具有高容错性,能提高吞吐量的数据访问,非常适合于大规模数据集上的应用。MapReduce在HDFS的基础上实现的并行框架,为用户提供容易使用的并行编程模式,MapReduce计算包括两个阶段,Map(映射)阶段和Reduce(规范)阶段。首先,Map函数把一组(Key,Value)输入,映射为一组中间结果(Key,Value),然后通过Reduce函数把具有相同Key值的中间结果,进行合并化简。MapReduce将计算作业分成许多小的单元,同时数据也会被HDFS分为多个Block,并且每个数据块被复制多份,保证系统的可靠性,HDFS按照一定的规则将数据块放置在集群中的不同机器上,以便MapReduce在数据宿主机器上进行计算。HBase类似Bigtable的分布式数据库,是一个稀疏的,长期存储的,多维的,排序的映射表.这张表的索引是行关键字,列关键字和时间戳。所有数据库的更新都是一个时间戳标记,每个更新都是一个新的版本,而HBase会保留一定数量的版本,这个值是可以设定的。客户端可以获取距离某个时间最近的版本,或者一次获取所有版本。HDFS数据存储 分布式文件系统HDFS被设计为将海量文件存储在一个大集群的多台计算机上。HDFS将每一个文件以分块序列的形式进行存储,一个文件的所有分块除去最后一个分块外都是等大小的。为了实现容错将文件分块进行自动复制。文件分块的块大小和复制比例都是可以按照单个文件进行配置的。HDFS中的所有文件都是“只写一次”并且严格限定在任何时候只有一个写文件操作者。 HDFS是Hadoop框架的分布式并行文件系统,是分布式计算的存储基石。负责数据分布式存储及数据的管理,并能提供高吞吐量的数据访问。HDFS的基本特征如下:(l)对于整个集群有单一的命名空间。(2)文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且根据配置会有复制的文件块来保证数据安全性。(3)数据一致性。适合一次写入多次读取的模型,客户端在成功创建文件之后,才能看到文件的存在。(4)Hadoop,包括HDFS,非常适合在廉价机器上的分布式存储和分布式处理。它是容错的、可伸缩的、非常易于扩展。并且,以简单性和适用性著称的MapReduce是Hadoop不可缺少的重要组成部分。(5)HDFS的默认配置适合于大多数安装的应用。通常情况下,只有在一个非常大规模的集群上才需要修改默认配置。(6)支持shell命令行风格的HDFS目录交互。(7)HDFS是用java编写的,可广泛运行在多种软硬件平台上。(8)HDFS经常性地实现新的特性和改进。(9)Namenode和DataNode都内建了Web服务器,可以方便地查看集群的状态。HDFS的体系框架是Master/Slave结构,一个典型的HDFS通常由单个Namenode和多个DataNode组成。Namenode是一个中心服务器,负责文件系统的名字空间的操作,比如打开、关闭、重命名文件或目录,它负责维护文件路径到数据块的映射,数据块到DataNode的映射,以及监控DataNode的心跳和维护数据块副本的个数。集群中的DataNode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组DataNode上。DataNode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。所有对目录树的更新和文件名和数据块关系的修改,都必须能够持久化,文件在HDFS中存储图如图:图表SEQ图表\*ARABIC14Hdfs结构HDFS涉及到Namenode、DataNode和客户端们之间的交互。本质上,客户端与Namenode通讯是通过获取或者修改文件的元数据,与DataNode进行实际的I/O操作。如图13所示,在HDFS中有三个重要的角色:Namenode、DataNode和Client,其中Client就是需要获取分布式文件系统文件的应用程序。这里通过三个操作来说明他们之间的交互关系:(l)文件写入。首先Client向Namenode发起文件写入的请求,Namenode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。(2)文件读取。Client向Namenode发起文件读取的请求,Namenode返回文件存储的DataNode的信息。Client根据返回的信息读取DataNode上的文件信息。(3)文件Block复制。Namenode发现部分文件的Block不符合最小复制数或者部分DataNode失效,通知DataNode相互复制Block。DataNode收到通知后开始直接相互复制。
图表SEQ图表\*ARABIC15HDFSNamenode、DataNode和客户端们之间的交互HBase数据存储HBase–HadoopDatabase,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。其目的是处理庞大的表,可以用普通的计算机处理10亿行数据,并且有数百万列元素组成的数据表这张表的索引是行关键字。Hbase可以直接使用本地的文件系统和Hadoop作为数据存储方式,不过为了提高数据的可靠性和系统的健壮性,发挥Hbase处理大数据量等功能,需要使用Hadoop作为文件系统。1、数据模式HBase类似Bigtable的分布式数据库,是一个稀疏的,长期存储的,多维的,排序的映射表.这张表的索引是行关键字,列关键字和时间戳。每个值是一个不解释的字符数组,数据都是字符串,没类型。用户在表格中存储数据,每一行都是一个可排序的主键和任意多的列。由于是稀疏存储的,所以同一张表里面的每一行数据都可以有截然不同的列。列名字的格式是"<family>:<lable>",都是由字符串组成,每一张表有一个family集合,这个集合是固定不变的,相当于表的结构,只能通过改变表的结构来改变。但是lable值相对于每一行来说都是可以改变的。HBase把同一个family里面的数据存储在同一个目录底下,而HBase的写操作时锁行的,每一个都是一个原子元素都可以加锁。所有数据库的更新都是一个时间戳标记,每个更新都是一个新的版本,而HBase会保留一定数量的版本,这个值是可以设定的。客户端可以获取距离某个时间最近的版本,或者一次获取所有版本。2、概念视图一个表可以想象成一个大的映射关系,通过主键,或者主键+时间戳,可以定位一行数据,由于是稀疏数据,所以某些列可以是空白的,下面就是数据的概念视图:RowKeyTimeStampColumnColumn"anchor"Column"mime""n.www"t9"anchor:""CNN"t8"anchor:my.look.ca""CNN.com"t6"<html>..."t5"<html>...""text/html"t3"<html>..."3、物理视图从概念视图看每个表格是有很多行组成,但是在物理存储上,它是按照列来保存的。RowKeyTimeStampColumn"contents""n.www"t6"<html>..."t5"<html>..."t3"<html>..."RowKeyTimeStampColumn"anchor""n.www"t9"anchor:""CNN"t8"anchor:my.look.ca""CNN.com"RowKeyTimeStampColumn"mine""n.www"t6"text/html"在概念视图上面有些列是空白的,这样的列实际上并不会被存储,当请求这些空白的单元格的时候,会返回null值。如果在查询的时候不提供时间戳,那么会返回距离现在最近的那个版本数据。因为在存储的时候,数据会按照时间戳排序Database数据存储数据库(Database)是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。数据库中的数据有两种性质:1、数据整体性数据库是一个单位或是一个应用领域的通用数据处理系统。数据库中的数据是从全局观点出发建立的,他按一定的数据模型进行组织、描述和存储。其结构基于数据间的自然联系,从而可提供一切必要的存取路径,且数据不再针对某一应用,而是面向全组织,具有整体的结构化特征。2、数据共享性数据库中的数据是为众多用户所共享其信息而建立的,已经摆脱了具体程序的限制和制约。不同的用户可以按各自的用法使用数据库中的数据;多个用户可以同时共享数据库中的数据资源,即不同的用户可以同时存取数据库中的同一个数据。数据共享性不仅满足了各用户对信息内容的要求,同时也满足了各用户之间信息通信的要求。数据库的基本结构分为三层:1.物理数据层它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。2.概念数据层它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。3.逻辑数据层它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。数据库不同层次之间的联系是通过映射进行转换的。主要特点: (1)实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。(2)减少数据的冗余度。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。(3)数据的独立性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。(4)数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。(5)数据一致性和可维护性,以确保数据的安全性和可靠性。主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;④故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏(6)故障恢复。由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。数据存储的可靠性HBase采用的是Hadoop作为文件系统,hadoop以机柜为基础的数据存放策略,那么不仅充分利用了网络宽带,而且提高数据可靠性。HDFS的主要目标就是实现在失败情况下的数据存储可靠性。常见的三种失败:Namenodefailures,Datanodefailures和网络分割(networkpartitions)。(1)硬盘数据错误、心跳检测和重新复制每个Datanode节点都向Namenode周期性地发送心跳包。网络切割可能导致一部分Datanode跟Namenode失去联系。Namenode通过心跳包的缺失检测到这一情况,并将这些Datanode标记为dead,不会将新的IO请求发给它们。寄存在deadDatanode上的任何数据将不再有效。Datanode的死亡可能引起一些block的副本数目低于指定值,Namenode不断地跟踪需要复制的block,在任何需要的情况下启动复制。在下列情况可能需要重新复制:某个Datanode节点失效,某个副本遭到损坏,Datanode上的硬盘错误,或者文件的replication因子增大。(2)集群均衡HDFS支持数据的均衡计划,如果某个Datanode节点上的空闲空间低于特定的临界点,那么就会启动一个计划自动地将数据从一个Datanode搬移到空闲的Datanode。当对某个文件的请求突然增加,那么也可能启动一个计划创建该文件新的副本,并分布到集群中以满足应用的要求。这些均衡计划目前还没有实现。(3)数据完整性从某个Datanode获取的数据块有可能是损坏的,这个损坏可能是由于Datanode的存储设备错误、网络错误或者软件bug造成的。HDFS客户端软件实现了HDFS文件内容的校验和。当某个客户端创建一个新的HDFS文件,会计算这个文件每个block的校验和,并作为一个单独的隐藏文件保存这些校验和在同一个HDFSnamespace下。当客户端检索文件内容,它会确认从Datanode获取的数据跟相应的校验和文件中的校验和是否匹配,如果不匹配,客户端可以选择从其他Datanode获取该block的副本。(4)元数据磁盘错误FsImage和Editlog是HDFS的核心数据结构。这些文件如果损坏了,整个HDFS实例都将失效。因而,Namenode可以配置成支持维护多个FsImage和Editlog的拷贝。任何对FsImage或者Editlog的修改,都将同步到它们的副本上。这个同步操作可能会降低Namenode每秒能支持处理的namespace事务。这个代价是可以接受的,因为HDFS是数据密集的,而非元数据密集。当Namenode重启的时候,它总是选取最近的一致的FsImage和Editlog使用。Namenode在HDFS是单点存在,如果Namenode所在的机器错误,手工的干预是必须的。目前,在另一台机器上重启因故障而停止服务的Namenode这个功能还数据压缩(1)HDFS数据压缩与组织方法任何一种数据资源都具有生命周期,不同的时期有其存在的不同意义。在数据刚生成的数日内,访问频率最高,带来的使用价值也最高。随着时间推移,访问频率会逐渐降低,数据的价值也随之下降,低访问频率的数据量远远超过高访问频率的数据量。不同生命周期的数据是提供给不同使用对象的,这就为以最低的成本获得最高的使用价值提供了可能。通常情况下,某段时间内访问量比较大的数据只有不到20%,80%的数据是不经常被访问的,虽然这些数据访问量低,但这些数据仍然很重要,必须完好的保存。同时考虑到方便数据压缩,这里采用了分级存储策略,这样不仅可以方便为访问量大的数据项设置缓存,而且为数据压缩提供了方便,显著提高了效率。分级存储就是以信息生命周期管理理论为依据,根据数据所能提供的使用价值来决定存储成本、存储设备。文件依据用户需求有选择地对某些数据进行迁移,如进行远端备份等。数据分级存储之所以重要,是因为它既能最大限度地满足变化的需求,又能方便文件的组织和压缩。数据分级存储的优点有减少总体存储成本、性能优化、改善数据可用性、数据迁移对应用透明。借助云平台,分级存储满足以下要求:数据的安全性、数据的高可用性、容量可扩展性、设备的兼容性、管理的高效性、经济效益性。数据将被组织成两级,一级称为chuck,一级称为block。chuck被分为多个block,文件将以block的形式存储在数据服务器上。block的优点是方便文件压缩和文件的传输,适合多种备份方式,在很大程度上提高了存储效率和可扩展性。下图给出了基于分级存储的数据块级压缩方式。图表SEQ图表\*ARABIC16HDFS数据压缩与组织处理流程如下:1)将一个chunk划分成为多个block。2)读取一个block,对该block进行数据压缩并写入到临时缓存中。3)将临时缓存的压缩数据拷贝到缓冲池中。4)重复2-3步直到一个chunk中的block都被压缩拷贝完成。5)将缓冲池中的内容按顺序回写到存储区域。数据查询与统计分析子系统数据查询与统计分析系统基本构架图表SEQ图表\*ARABIC17数据查询子系统构架交管数据查询功能与用户界面对前台页面传来的json字符串信息进行解析并分析各个变量,得到需要查询的信息,然后把这些信息在封装成与数据库端相合的协议,调用数据库提供的接口对后台数据库进行查询。数据库端查询完毕后将byte形式的结果存放在指定文件中。接口服务器受到信号,读取文件,如果文件不存在,就直接显示1000条数据并再次调用json将结果封装成字符串发送到前台界面显示。用户界面:图表SEQ图表\*ARABIC18用户界面图实时报警功能与用户界面图表SEQ图表\*ARABIC19实时报警功能车辆轨迹回放功能与用户界面图表SEQ图表\*ARABIC20车辆轨迹回放基于云方案的交管数据查询索引与查询优化技术传统的基于关系数据库存储和查询交管数据的方案在存储和查询较小的交管数据量时可以适用并有很好的查询性能,但其处理巨量的交管数据时存在存储和处理能力不足的缺陷,将难以适用。为此,需要基于云存储方案考虑将海量的交管数据存储在分布式文件系统HDFS中。但由此又将带来一个新的问题,以文本或二进制数据文件保存的交管数据难以支持高效的数据查询。一个有效的解决方法是对交管数据建立查询索引。有种解决方案,介绍如下。基于分布式数据库的交管数据查询索引处理方案这种种方案是使用HBase存储交管数据查询索引,并使用HBQL完成交管数据查询。(1)数据提取阶段在本过程中,我们会将HDFS的交管数据导入到HBase之中。具体流程如下:1)每当要处理一些新的交管数据的时候,我们先将这些数据读入内存。2)对于读入内存的交管数据,逐行扫描其中的每条交管记录,并将该记录的key值记录下来,与记录中药建索引的字段组合成一个新的变量,该变量的即做为索引头,而该记录的key值作为索引指向交管数据的指针。3)由于每个交管记录中的几十个字段中,只有少数几个是我们常用的,因此将某条交管记录插入到HBase中时,我们只需要对这些常用的几个字段建立索引即。4)抽象出来的具体描述:Inster(Index,CarNumber,…)IntoCLXX.(2)索引建立阶段上一阶段的主要工作是通过解析保存在HDFS上的交管数据,抽出其中常用的几项字段,将这些交管信息映射到HBase中。本阶段的工作是对已保存在HBase中经过字段精简之后的交管记录建立索引表,以方便后面的查询。在HBase中每条数据记录现在有20多个字段中,而其中用于我们查询的字段只有几个,因此我们只需要根据这几个字段建立几张索引表这里我们通过HBql建立索引表。索引表的数目有几张,以按车牌号码建立的索引表Table_NumberIndex为例,其中的每个ID字段是“号码+key”,该字段是自动生成的且会自动排序。对应地我们还保存了“key”,这样方便直接查找和读取。根据相关调查,HBql建立的索引表会自动实现新增索引的有序插入工作(底层开销有多大有待调查)。交管数据处理集群的可靠性与负载均衡设计负载均衡处理机的单点失效容错处理负载均衡机分布如图:图表SEQ图表\*ARABIC21负载均衡机分布图全量原始数据接入交换机,将数据发向指IP的负载均衡机,负载均衡机向负载均衡Master节点请求任务处理机,Master返回存任务处理机IP端口信息,负载均衡机根据任务处理机的IP端口信息将数据发向任务处理机。单点容错如图:当某一台负载均衡机宕机后:图表SEQ图表\*ARABIC22负载均衡机宕机预案第一步Master节点能过链接心跳得知宕机负载均衡机。第二步Master节点从所有均衡机中选出负载小的负载均衡机,启动虚拟IP及相关进程第三步启动虚拟IP接收原始交管数据,进行负载均衡当Master节点宕机后:图表SEQ图表\*ARABIC23Master节点宕机预案第一步Master节点宕机,负载均衡节点及存储计算节点能过链接心跳得知Master宕机第二步所有负载均衡节点,重选举出Master节点,并通知存储计算节点新Master节点 所有存储计算节点,根据负载均衡IP列表,请求新Master节点,后向新Master节点上报负载状态。第三步新Master节点接管所有工作,对宕机的Master节点容错。查询处理机的单点失效容错处理图表SEQ图表\*ARABIC24查询处理单点失效容错处理第一步:任务处理机宕机,负载均衡机得知任务处理机宕机,缓存交管数据.同时Master得知任务处理宕机后,将任务处理机信息删除待分配列表。第二步:负载均衡机向Master请求任务处理机,Master重新分配任务处理机给负载均衡机。第三步:负载均衡机将原始数据发向新任务处理机,进行查询计算与存储集群的可靠性与负载均衡设计计算与存储集群Master单点失效容错处理图表SEQ图表\*ARABIC25Master单点失效容错处理AvatarNode0以Primary方式启动,AvatarNode0作为Namenode节点与用户交互。AvatarNode1以Standby方式启动,它是一个处于safemode的Namenode。它定期读取AvatarNode0的日志来更新自己内存和磁盘中的元数据,并定期做checkpoint,更新AvatarNode0上的fsimage以及editlog。DataNode节点向AvatarNode0和AvatarNode1同时发送心跳信息和BlockReport,其中包括Block的位置信息。NFS服务器存储AvatarNode0和AvatarNode1的fsimage和editlog。AvatarNode的primary节点写入editlog,standby节点读取editlog,更新内存中的元数据信息,并且定期做checkpoint,将fsimage及editlog回写到nfs服务器。具体使用时:AvatarNode0以Primary方式启动,AvatarNode1以Standby方式启动,然后启动各个DataNode。当AvatarNode0确认故障后,手动切换AvatarNode1到Primary,同时,选取一个备用节点,以standby启动,这样,当AvatarNode1发生故障时,即可将备用节点切换到Primary状态,始终保持Namenode可以对外提供服务。运行流程AvatarNode0以Pimary启动(1)等待DN的心跳信息(2)图5-2中的sharedir为NFS服务器上的共享目录/usr/local/sharedir,share0、share1分别为AvatarNode0、AvatarNode1镜像日志的存储目录(3)一个DN抽象代表了所有的DataNodeAvatarNode0:AvatarNode0:PrimaryNFS服务器ClientDN读写镜像日志用户请求只能操作元数据AvatarNode1:XXXXsharedirshare1share0图表SEQ图表\*ARABIC26AvatarNode0以Pimary启动过程 AvatarNode1以Standby启动(1)若启动参数中有-sync,则AvatarNode1备份本地和NFS的镜像日志目录,而后用NFS中的AvatarNode0对应镜像日志目录中覆盖AvatarNode1的本地和NFS的对应目录;(2)启动之后,处于保护模式;(3)等待DN的心跳信息;(4)ingest线程从NFS中的AvatarNode0对应日志的目录中读取AvatarNode0启动后的日志后线程关闭;(5)启动ingest线程定期从NFS中的AvatarNode0对应日志的目录中读取AvatarNode0的日志。AvatarNode0:AvatarNode0:PrimaryClientDNAvatarNode1:Standby读日志用户请求,读写文件操作数据与元数据用户请求只能读操作NFS服务器NFS服务器sharedirshare1share0写镜像写日志写镜像图表SEQ图表\*ARABIC27AvatarNode1以Standby启动过程DataNode启动(1)向Primary、Standby发送心跳信息。(2)AvatarNode0与AvatarNode1收集DN的心跳信息,构建Block元数据与Block备份位置的映射AvatarNode0:AvatarNode0:PrimaryClientAvatarNode1:Standby读日志用户请求,读写文件操作数据与元数据NFS服务器NFS服务器sharedirshare1share0写镜像写日志写镜像DN心跳信息心跳信息用户请求只能读操作图表SEQ图表\*ARABIC28DataNode启动过程AvatarNode0宕机AvatarNode0:AvatarNode0:XXXXClientAvatarNode1:Standby读日志NFS服务器NFS服务器sharedirshare1share0写镜像写镜像DN心跳信息用户请求只能读操作图表SEQ图表\*ARABIC29AvatarNode0宕机后的状态AvatarNode1切换为Primary(1)启动ingest线程最后一次从NFS中的AvatarNode0对应日志的目录中读取AvatarNode0的日志。结束ingest线程。(2)AvatarNode1将依据用户操作写入日志AvatarNode0:AvatarNode0:XXXXClientDNAvatarNode1:Primary写日志心跳信息用户请求,读写文件操作数据与元数据NFS服务器sharedirshare1share0图表SEQ图表\*ARABIC30AvatarNode1切换为Primary过程AvatarNode0以Standby重启或其它备用机器以Standby重启(1)AvatarNode0:Standby重新接收心跳信息,(2)定期从NFS中的AvatarNode1对应存储的目录中读取AvatarNode1的日志。(3)当日志文件达到上限,则将日志与镜像合并,写入本地与NFS中的AvatarNode0对应的存储目录AvatarNode0:AvatarNode0:StandbyClientAvatarNode1:Primary读日志用户请求,读写文件操作数据与元数据NFS服务器NFS服务器sharedirshare1share0写镜像写日志写镜像DN心跳信息心跳信息用户请求只能读操作图表SEQ图表\*ARABIC31AvatarNode0重启过程AvatarNode启动切换流程图AvatarNode0以Primary启动,AvatarNode1以Standby启动,AvatarNode0第一次宕机则改变配置文件的参数设置,当再有AvatarNode0、AvatarNode1或其替代节点宕机时不再改变配置文件,并均以Standby方式启动,另一个节点在此之前若为Primary状态应切换到Standby状态。AvatarNode0以Primary启动AvatarNode1以Standby启动AvatarNode0以Primary启动AvatarNode1以Standby启动AvatarNode0或其他机器重新设置配置文件正常运行: AvatarNode0:PrimaryAvatarNode1:StandbyAvatarNode1或其他机器以Standby启动DataNode启动宕机AvatarNode1宕机AvatarNode0或其他机器以Standby启动AvatarNode0宕机宕机AvatarNode1宕机正常运行: AvatarNode0:StandbyAvatarNode1:PrimaryAvatarNode0宕机AvatarNode0切换为PrimaryAvatarNode0或其他机器以Standby启动AvatarNode1切换为PrimaryAvatarNode1或其他机器以Standby启动正常运行: AvatarNode0:PrimaryAvatarNode1:Standby宕机AvatarNode0宕机宕机AvatarNode1宕机AvatarNode1切换为Primary图表SEQ图表\*ARABIC32AvatarNode启动切换流程图计算与存储集群的负载均衡处理 负载的均衡,就是要让大家各尽其力齐心干活,发挥各自独特的优势,不能忙得忙死闲得闲死,影响战斗力。而且,负载均衡也是一个复杂的问题,什么是均衡,是一个很模糊的概念。比如,在分布式文件系统中,总共三百个数据块,平均分配到十个数据服务器上,就算均衡了么?其实不一定,因为每一个数据块需要若干个备份,各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论