当前位置:文档之家› 智慧城市大数据平台建设方案

智慧城市大数据平台建设方案

智慧城市大数据平台建设方案

目录

1.大数据平台项目建设方案 (4)

1.1大数据平台建设目标与内容 (4)

1.2大数据平台设计 (4)

1.3大数据平台架构 (6)

1.3.1体系架构 (6)

1.3.2 体系特点 (10)

1.3.3大数据处理技术 (11)

1.4 大数据平台功能 (12)

1.4.1系统功能 (12)

1.4.2管理功能 (14)

1.4.3工程性功能 (15)

2.关键挑战和应对举措 (16)

2.1关键技术挑战和应对举措 (16)

2.1.1高效分布式数据管理机制 (16)

2.1.2高性能多表实时复杂关联查询 (18)

2.1.3基于云计算平台的分布式SQL解析 (19)

2.2关键工程化挑战和应对举措 (20)

2.2.1系统可维护性 (20)

2.2.2系统可靠性 (21)

2.2.3系统可移植性 (23)

3.构建大数据平台的应用 (25)

3.1保障体系与基础设施 (25)

3.1.1整合基础信息资源 (26)

3.1.2搭建城市公共信息平台 (26)

3.2智慧建设与宜居 (26)

3.2.1城市建设管理 (26)

3.2.2城市功能提升 (28)

3.3智慧管理与服务 (28)

3.3.1政务服务 (28)

3.3.2基本公共服务 (29)

3.3.3专项应用 (32)

3.4智慧产业与经济 (38)

3.4.1产业规划 (38)

3.4.2产业升级 (40)

1.大数据平台项目建设方案

1.1大数据平台建设目标与内容

建设目标

国家工信部软件服务业司司长陈伟为大数据概括出四方面特征,“首先在于体量大,是一个数据全集的概念,第二是类型多,包括结构化数据、半结构化数据、非结构化数据等多种类型,其中视频数据在目前占到了90%以上的总额;第三要求速度快,需要以秒级为目标进行实时动态处理。最后在于价值密度,由于大量有用和可能没用的数据并存,遍地是金子,又遍地是沙子”,所以大数据的目的就在于从庞大的数据集合中找寻有价值的数据和知识,通过分析挖掘为各行业提供真正的智慧,“可以说21世纪是‘数据钻出石油’的时代。”

我们要将各种系统的各种有用数据汇集起来,通过一个统一的平台管理与分析,这就是大数据平台的最大优势。

本期建设内容

大数据平台的发展是基于云计算平台不断升级并向数据库大数据应用靠拢的一个过程,可更好的适应关系型计算模式,拥有不同结构数据的综合管理、提供同时支持在线分析处理(OLAP)和在线事务处理 (OLTP) 能力以及多存储模式等,会在未来发挥不可估量的作用。

1.2大数据平台设计

大数据平台的设计原则

大数据平台是一种面向大数据应用的云计算数据存储与管理平台,该平台基于关系数据模型,访问方式也是简化版本的SQL语言规范,对SQL语言规范支持度达到80%以上,可管理的数据规模达到万亿条记录级,容量可达到PB

级,同时该平台支持大数据的OLTP(联机事务处理)和OLAP(联机分析处理),,数据入库速度到达每秒千兆字节级,数据关联查询响应时间达到秒级,支持自动容错和动态扩展,在平安城市、智能交通、智能电网、互联网数据处理、移动信令处理等领域构建典型应用并进行大规模产业推广。

数据中心建设遵循以下原则:

1)体系架构

?分布式并行计算、多副本机制、没有单点的高可靠体系架构

?面向行业应用的软硬件一体化整合

2)系统功能

?结构化、半结构化、非结构化数据的管理和搜索

?主流格式机器数据的实时采集、解析、管理和搜索

?多存储模式

?高效的分布式SQL解析器

?支持事务机制

?实时及用户行为数据的高效管理和分析

?创新的多检索引擎机制,提供开放的二次开发接口

3)性能指标

?PB级的海量数据管理

?海量用户的高并发实时访问(千万级用户、万级并发)

?相对较低的资源消耗

?充分释放硬件的潜力(多核、大内存等)

4)管理功能

?大规模部署的自动化和运行状态监控

?对核心数据管理服务的高可用技术研究与实施

5)工程性功能

?高性能分布式环境的构建与部署

?负载均衡分布式环境的构建与部署

1.3大数据平台架构

1.3.1体系架构

如上图所示,大数据平台有多个层次,其中最主要的是数据处理层和数据存储层,数据存储层使用云存储技术,数据处理层包括多个模块,如下图所示:

图4 大数据平台架构

大数据平台的结构可以分为以下几部分:

用户接口:包括DDL JDBC,DML API,DDL Shell,DML Shell,数据导入API

数据接收模块:单条多条记录入库。

索引模块:索引生成。

SQL解析器:对SQL语句解析为一个大数据平台的一个作业。

任务执行器:处理一个大数据平台作业的子任务。

元数据管理器:大数据平台的元数据是在mysql中进行管理的。

(1)用户接口

用户接口主要有四个:JDBC,数据查询API,Shell,数据导入 API。JDBC 主要执行数据的定义操作,即建立数据库、建表、建分区,对数据库、表和分区的删改等;数据查询API主要执行数据查询的SQL语句,暂不支持增删改;数据立方提供友好的shell交互界面,shell支持数据库、表的增删改以及数

据查询的SQL语句;数据导入 API的作用是表记录的单条多条插入,数据库中数据的导入使用sqoop工具。

(2)数据接收模块

该模块支持表的单条和多条记录的插入,通过使用数据导入 API来实现数据的插入,当需要与数据库进行数据交互时,可以使用sqoop工具来进行相关操作,同时也可以使用HDFS的API来直接进行数据文件的导入导出。

(3)索引模块

数据在插入的同时与数据对应的索引也在同时建立,索引是一颗B树,数据插入到内存的同时,索引B树也在生成,当达到设置上限时,数据和索引会刷新到HDFS上成为文件。

(4)SQL解析器

SQL解析器、执行器完成大数据平台查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。

SQL解析器接收从数据查询 API和SHELL传来的SQL语句,同时对SQL进行词法分析、语法分析、编译、优化以及生成查询作业,接着分析所要处理数据的所在位置,根据数据位置切分查询作业形成子任务,然后将子任务发送给数据所在节点的执行器。

(5)任务执行器

每个子节点的任务执行器接收到SQL解析器发来的子任务,随后执行这些子任务,执行完毕将结果传回SQL解析器。

(6)元数据管理

大数据平台将元数据存储在mysql数据库中。大数据平台中的元数据包括,数据库的名字和属性,数据库中的表,表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等等。

3.2.2 数据立方与Hadoop的关系

(1)数据立方与HDFS的关系

大数据平台是建立在 Hadoop上的分布式数据库。大数据平台是一种可以存储、查询和分析在 Hadoop中海量数据的机制。大数据平台的底层存储是架设在HDFS之上,表的数据和索引均是以文件形式存储在HDFS上,所以当前大数据平台中表的数据还不支持删改。

与HDFS集群相对应,大数据平台主节点与NameNode部署在同一个物理节点上,子节点与DataNode部署在同一个物理节点上,在执行SQL查询语句时主节点的SQL解析器会向NameNode发送请求获取相关表的数据文件的元数据信息,SQL解析器生成子任务发给子节点的任务执行器,任务执行器通过数据文件的数据块ID从DataNode获取该数据块在本地磁盘的绝对路径,然后直接读取本地文件。

(2)大数据平台与MapReduce的关系

同时,因为大数据平台的数据存储在HDFS上,因此也允许MapReduce 开发者的开发自定义的MapReduce程序来处理大数据平台中的数据。

1.3.2 体系特点

1)高可靠分布式存储体系架构的构建

数据存储支持分布式架构,满足海量数据存储的高可靠、高可用、大吞吐率等要求,支持POSIX、SHELL流式数据访问、WEB等多种接口,支持简单一致性模型、多副本机制、回收站机制和主节点热备机制。在硬件上支持符合工业标准的服务器,支持IBM、HP、DELL品牌的国际主流服务器整机产品;支持联想、浪潮、曙光、宝德、长城等品牌的国内主流服务器整机产品;在操作系统层面支持主流LINUX系统,例如:CentOS、RedHat、Fedora 、Debian 、Ubuntu、SuSE等。

2)面向行业应用的资源整合

形成将面向金融、电信行业、公共事业等服务器端应用从传统数据库迁移到大数据平台的迁移移植能力,将原系统的数据库、中间件、应用平台以及业务逻辑单元整体迁移到大数据平台上,并针对其应用场景进行优化增强。

3)支持与传统数据库和NoSQL数据库等多种数据库的整合

大数据平台支持跨平台的应用,在自身基于云平台的同时又可以支持传统数据库和NoSQL数据库等多种数据库的嵌入,提供一系列的中间件和软件总线保证云平台与其他数据库的兼容性并提供数据流与指令流的交互接口,同时提供统一的用户界面和编程接口。

这种多系统的整合能够在一个统一平台上处理不同结构数据、支持不同类型应用、支持不同存储模式并提供丰富的对外接口,这种整合可以使存储在不同数据库系统中的不同类型数据的混合关联处理得以实现,可以让各种数据管

理系统扬长避短,最大限度地发挥优势以取得最大效率。

1.3.3大数据处理技术

MapReduce计算架构把运行在大规模集群上的并行计算过程简单抽象为两个函数:Map和Reduce,也就是分解与规约。简单说,MapReduce就是“任务的分解与结果的汇总”。程序将大数据分解为多个数据块由Map函数处理,Reduce把分解后多任务处理产生的中间结果汇总起来,得到最终结果。适合MapReduce处理的任务特征为:待处理的大规模数据集可以切分为多个小的数据集,并且每一个小数据集都可以完全并行地进行处理。

图1介绍了用MapReduce处理大数据集的过程。一个MapReduce操作分为两个阶段:Map阶段和Reduce阶段。

图1 MapReduce处理大数据集的过程

在映射阶段,MapReduce并行计算架构将用户的输入数据切分为M个数据段,每个数据段对应1个Map任务。每一个Map函数的输入是数据段中的键值对集合, Map函数是用户继承MapReduce并行计算架构而编写的,Map 操作调用此函数,输出一组中间结果,即键值对 集合。接下来,按照中间结果集合的K2将中间结果集进行排序,生成一个新的 集合,使得对应同一个K2的所有值的数据都聚集在一起。然后,按照K2的范围将这些元组分割为R个片断,对应Reduce任务的数目。在规约阶段,每一个

Reduce操作的输入是一个片断,Reduce操作调用用户定义的Reduce函数,生成用户需要的键值对进行输出。

这种简洁的并行计算模型在系统层面解决了可用性、扩展性、容错性等问题,是非关系数据管理和分析技术的典型代表。MapReduce是面向廉价计算机组成的大规模集群设计的,其非共享结构、松耦合性和较强的容错能力带来了较强的扩展能力,同时,MapReduce在工业界被广泛应用,Google、twitter、Facebook、Yahoo等厂商对其进行了深度的改进和扩展。此外,MapReduce的存储模型能够存储任意格式的数据,Map和Reduce函数可以进行各种复杂的数据处理,这也使得程序员的负担加重,在对上层业务的开发效率上不如SQL简单。在相同的硬件条件下,对于有具体条件的查询来说,并行数据库[2]的性能是远远超过MapReduce的,但是对于在大数据上的复杂统计业务来说,MapReduce在速度上会占有一定优势,MapReduce是为非结构化大数据的复杂处理而设计的,这些业务具有一次性处理的特点,此外由于采取了全数据扫描的模式以及对中间结果逐步汇总的策略,使其在拥有良好扩展能力和容错能力的同时也导致了较高的磁盘和网络I/O的负载以及较高的数据解析代价1.4 大数据平台功能

1.4.1系统功能

1)支持不同种类数据的存储

大数据平台支持非结构化、半结构化和结构化数据,即支持图形、图像、声音等多媒体信息的大文件和海量小数据文件存储,支持XML、结构化记录和Key/Value键值对的存储,同时支持复杂的结构化多维数据。

2)多索引引擎机制

大数据平台支持传统关系数据库的字段索引,同时也支持半结构化数据和

非结构化数据的子字段索引、全文索引(英文单词索引和中文单汉字索引)、人工标记索引和中、英文混合索引等方式。此外,配合数据库的格式化语言,可以对同一字段进行若干种不同的索引,以满足特殊检索的需求。支持基于哈希的索引技术,研发适用于海量数据内容管理的存储与索引技术,实现大数据并行访问与查询。

3)支持在线分析处理(OLAP)和在线事务处理 (OLTP)

在处理大数据时,大数据平台满足一个单表查询或多表关联操作的秒级响应。支持一次返回上百万条以上结果集的海量数据分析查询,支持快速、一致和交互的数据存取,支持基于关系型数据库与多维数据库的混合方式数据分析,支持大量并发用户定期对数据的操作,支持每秒万次的事务操作,支持事务机制的原子性、一致性、孤立性和持续性。

4)支持多存储模式

大数据平台同时拥有列式存储和行式存储执行引擎,同时存储半结构化和结构化数据,综合两者的优势以达到更高的效率。传统数据库使用的是行式存储,其读写方式是以一行记录为单位,从第一列开始,到最后一列结束。行存储的写入是一次完成,对于结构化数据这种写入模式非常适合,但对于大数据,这种写入的效率比较低下,并会产生很多冗余数据,导致带宽占用严重。列存储是一种区别于传统行存储的新型数据库读写模式,列存储完全改变了这种模式,列存储数据在写入之前会把一行记录拆分为单列保存,这种打散数据的保存模式能满足大数据的存储需求。

5)支持事务机制

单个逻辑工作单元执行的一系列操作,同步发生数据更新时,系统确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。系统能够防止数据的不一致的同时,满足原子性、一致性、隔离性和持久性。

6)支持大数据挖掘

支持海量数据分析与挖掘云服务应用,以解决分布式分析与挖掘算法、多任务调度、结果展现、服务描述标准等技术问题。提供高效率的、鲁棒的和负载平衡的并行数据预处理、统计分析以支持深度挖掘服务;支持实用、高效的并行数据挖掘算法的并行化策略和算法的扩展;支持数据处理任务调度优化,提出以节点状态、存储能力、活动周期、最近活动时间等为评估要素的负载评估模型和基于进化计算的任务调度算法。

1.3.3性能指标

1)相对较低的资源消耗

包括了在线分析处理业务时较低的CPU、内存、网络资源的消耗、以及在做大并发在线事务处理业务时较低的磁盘IO占用。

2)实时查询秒级响应

系统通过提供支持不同结构数据的索引使得查询能够达到秒级,同时又提供一个支持高并发、高缓存吞吐、高性能分布式的内存缓存系统,该系统将数据源中的数据临时存储于内存中,然后从内存中读取,从而大大提高读取速度。

1.4.2管理功能

1)大规模部署的自动化和运行状态监控

支持面向高性能分布式环境的云数据库系统自动化批量安装部署、自动化

批量配置、集中监控管理。自动化安装部署工具支持升级软件包、管理配置文件、系统服务、cron任务以及添加新的配置、修复错误。

系统运行状态监控采集服务器的各种性能指标数据,并发送到Server端,使网络管理员能实时查看服务器的状态;采集服务器的相关信息,并保存在服务器的日志文件中,供网络管理员进行定期的数据分析。系统运行状态监控支持服务器进程信息的监测、日志文件监控和Web服务器监控。

2)对核心数据管理服务的高可用技术研究与实施

支持对核心数据管理服务的高可用保护,采用对核心服务网络心跳、串口心跳和磁盘心跳三层心跳管理机制,实现核心数据管理系统可靠、计算可靠、应用可靠三个层面的可靠性保护;使用分布式内存缓存系统来执行心跳信号交换,多个节点将各自的心跳信息写入分布式内存缓存,同时读取其他节点写入的信息,共享心跳数据。心跳机制最大的好处就是可以防止集群发生脑裂时,集群中的节点会对共享存储中数据造成破坏。

1.4.3工程性功能

1)高性能分布式环境的构建与部署

面向集分布式结构提供优化支持,支持保证集群内部的全局一致的分布式文件系统视图,支持集群系统内部节点之间的高速通信机制,提供对集群内全部软硬件资源的管理,对外为用户提供统一的数据库管理视图,同时针对高性能计算应用场景,提供多种运行时优化方案。

2)负载均衡分布式环境的构建与部署

支持面向负载均衡分布式环境的数据库系统自动化批量安装部署、自动化批量配置、集中监控管理。提供基于IP的负载均衡、基于虚拟机的负载均衡,

以及基于传输会话的负载均衡三级层次化的自适应动态负载均衡机制。

3)对关键业务数据的实时备份与异地容灾

通过分布式内存缓存系统进行信息交互的技术,将节点的状态信息写入分布式内存缓存,并对所有节点在分布式内存缓存保存的信息进行检测,在节点故障和网络故障时,从正常工作节点中智能选举主控节点,避免高可用系统脑裂发生,保证高可用系统不间断正常运行的功能。实现的服务器之间镜像块设备内容的存储复制解决技术。数据备份实时、透明、同步、异步,备份技术的核心功能通过Linux的内核实现。集群备份技术还可以实现增量备份,计划备份,远程容灾备份等。

2.关键挑战和应对举措

2.1关键技术挑战和应对举措

2.1.1高效分布式数据管理机制

随着移动互联网、物联网、云计算技术的蓬勃发展,非结构化、半结构化、结构化数据均成倍增长,非结构化数据的超大规模和增长,总数据量已经达到80~90%,比结构化数据增长快10倍到50倍。因此,如何高效的进行分布式数据管理就成为了一个重中之重。

下表列出了分布式数据存储系统的技术挑战和应对措施。

2.1.2高性能多表实时复杂关联查询

高性能的关联查询需要根据不同的模式采用不同关联算法,在基于代价的优化方式下,一般采用hash join算法,它是一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术。

Hash join的主要资源消耗在于CPU(在内存中创建临时的hash表,并进行hash计算)。在绝大多数情况下,hash join效率比其他join方式效率更高:在Sort-Merge Join(SMJ),两张表的数据都需要先做排序,然后做merge。因此效率相对最差;Nested-Loop Join(NL)效率比SMJ更高。特别是当驱动表的数据量很大(集的势高)时。这样可以并行扫描内表。Hash join效率最高,因为只要对两张表扫描一次。

Hash join一般用于一张小表和一张大表进行join时。Hash join的过程大致如下(在并行情况下):

(1)一张小表被hash在内存中。因为数据量小,所以这张小表的大多数数据已经驻入在内存中,剩下的少量数据被放置在临时表空间中;

(2)每读取一条大表的记录,和内存中小表的数据比较,如果符合先做join,而不直接输出,直到整张大表数据读取完毕。如果内存足够,Join好的数据就保存在内存中。否则,就保存在临时表空间中。

(3)当大表的所有数据都读取完毕,将临时表空间中的数据以其输出。如果小表的数据量足够小,那所有数据就都在内存中了,可以避免对临时表空间的读写。

基于规则的优化方式下,经常采用Sort-Merge Join(SMJ)连接和Nested-Loop Join(NL)连接。

Nested Loop Join(嵌套循环联结) 对于主表的每条记录将其与从表的每条记录在JOIN条件的字段上直接比较并筛选出符合条件的元组。被联结的表所处内层或外层的顺序对磁盘I/O开销有着非常重要的影响,而CPU开销相对来说影响较小。

Nested Loop一般在两个集合都很大的情况下效率就相当差了,而Sort-Merge在这种情况下就比它要高效不少,尤其是当两个集合的JOIN字段上都有聚集索引(clustered index)存在时,Sort-Merge性能将达到最好。

基本算法主要有两个步骤:

(1)按JOIN字段进行排序

(2)对两组已排序集合进行合并排序,从来源端各自取得数据列后加以比较(需要根据是否在JOIN字段有重复值做特殊的“分区”处理) 有两个因素左右Sort-Merge的开销:JOIN字段是否已排序以及 JOIN字段上的重复值有多少。

?最好情况下(两列都已排序且至少有一列没有重复值):O (n + m) 只需要对两个集合各扫描一遍。

?最差情况下(两列都未排序且两列上的所有值都相同):O (n * log n + m * log m + n * m) 两次排序以及一次全部元组间的笛卡尔乘积

2.1.3基于云计算平台的分布式SQL解析

SQL解析器、执行器完成数据查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。

SQL解析器接收从数据查询 API和SHELL传来的SQL语句,同时对SQL进行词法分析、语法分析、编译、优化以及生成查询作业,接着分析所要处理数

据的所在位置,根据数据位置切分查询作业形成子任务,然后将子任务发送给数据所在节点的执行器。

2.2关键工程化挑战和应对举措

2.2.1系统可维护性

维护管理是指为了保证维护质量、提高维护效率、控制维护成本而进行的维护过程管理,它要求对软件的每次“修改”均需经过申请、评估、批准、实施、验证等步骤。事实上在全部维护活动中一半以上是完善性维护。国外的统计数字表明,完善性维护占全部维护活动的50%~66%,改正性维护占17%~21%,适应性维护占18%~25%,其他维护活动只占4%左右。应该注意,维护软件文档和维护软件的可执行代码是同样重要的。

相关主题
文本预览
相关文档 最新文档