大数据平台解决方案.docx
《大数据平台解决方案.docx》由会员分享,可在线阅读,更多相关《大数据平台解决方案.docx(19页珍藏版)》请在冰豆网上搜索。
![大数据平台解决方案.docx](https://file1.bdocx.com/fileroot1/2023-4/1/1c262aab-f724-42f9-a682-e1f4a0133daa/1c262aab-f724-42f9-a682-e1f4a0133daa1.gif)
大数据平台解决方案
大数据平台技术方案
1.大数据平台技术方案
1.1概述
大数据平台必须具有高度可扩展性、实时性、高性能、低延迟分析、高度容错性、可用性、支持异构环境、开放性、易用性,同时也希望具有较低成本;其核心技术包括大规模数据流处理技术以与大规模数据管理、分析技术。
系统技术架构采用面向服务的体系结构(Service-OrientedArchitecture,SOA),遵循分层原则,每一层为上层提供服务。
将大数据平台进行逐层解析,从下至上分别是数据接口层、文件存储层、数据存储层、数据分析层、数据层、业务控制层、表现层、系统监控层。
(1)数据接口层:
为保证数据接入层的接口灵活性,采用Restful风格接口实现方式,Restful有轻量级以与通过直接传输数据的特性,Web服务的RESTful方法已经成为最常见的方法。
同时数据的接入与交换采用Kafka集群和WebService方式,Kafka是一种高吞吐量的分布式发布订阅消息系统,可以满足系统与大数据平台的高并发量数据交换。
WebService是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XM标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
(2)文件存储层:
为满足大数据的存储要求,文件存储采用HDFS文件系统,Hadoop分布式文件系统(HDFS)是一个高度容错性的系统,适合部署在廉价的机器上。
HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
(3)数据存储层:
根据本工程数据资源设计的需要,数据存储分别采用关系数据库、存数据库Redis、分布式大数据存储。
(4)数据分析层:
采用Storm技术完成实时流分析的需求,Storm是一个分布式的、容错的实时计算系统。
可以方便地在一个计算机集群中编写与扩展复杂的实时计。
采用MapReduce和Spark实现离线分析。
Spark是类HadoopMapReduce的通用并行框架,能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
(5)数据接入层:
应用与数据库的交互采用JDBC级Hibernate技术实现。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
(6)业务控制层:
采用当今最流行的轻量级Java开发框架Spring,同时与SpringMVC整合。
Spring具有轻量、低侵入式设计、方便解耦,简化开发、AOP编程的支持、方便集成各种优秀框架等优点。
(7)表现层:
采用EasyUI,Ajax,FreeMarker,JavaScript技术,这些技术能极大提高开发效率,同时能满足工程中各种复杂的前端展现要求。
(8)监控层:
采用Zookeeper分布式服务框架。
主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:
统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
它的作用主要是用来维护和监控你存储的数据的状态变化。
通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
1.2动静态信息交换
1.2.1系统概述
动静态信息交换建立目的是通过标准的规性数据接口定义,实现采集各类动态和静态数据,实现与接入平台的数据通信与交换共享。
数据采集交换系统根据数据交换的对象和容的不同,服务对象包括省市级管理机构等。
数据交换平台包含一系列的服务,如:
数据采集服务、平台认证服务、发布订阅服务等。
1.2.2数据采集服务
数据采集服务采集各级行业管理部门、各行业业务系统的数据信息,对这些静动态数据进行收集,用以进行后续操作。
数据采集模块按照定义的接口规进行连接、响应、接收、发送处理。
接收各级行业管理部门报送的数据。
1.2.3数据采集服务配置
针对上报大数据管理平台的信息,灵活配置其可采集的服务种类,来源,IP地址,采集的数据类型以与服务方式,使数据的采集更加灵活可控。
数据采集服务配置模块的主要功能有:
(1)动态配置服务。
根据IP、数据类型和服务方式对服务进行动态配置。
(2)对接入数据进行验证。
不允许非配置的服务接入数据,允许配置的服务接入数据。
1.2.4平台认证服务
为了保障数据服务的安全性,在传输数据之前,需要先通过接口进行登录认证,从而确定数据交换平台与权限,以与平台接入的有效期。
平台认证模块主要功能有:
根据平台信息进行登录认证。
根据申请接入的其他平台或者系统的相关信息,对该平台或者系统进行身份验证。
根据认证结果获取登录权限和有效期等信息。
如果验证通过,则允许接入系统,如果验证不通过,则不允许接入。
1.2.5动静态数据发布订阅服务
发布订阅服务根据分发调度策略,判断采集动静态数据属于某个地市,发布到该地市的主题,存储到消息队列,记录日志。
动静态数据发布订阅模块的主要功能有:
(1)获取信息,将数据存储到消息队列。
根据接入数据的相关信息,获取对应的信息。
(2)记录日志信息。
将信息下发到相应的消息队列,并记录日志信息。
1.2.6负载均衡服务
根据数据采集服务和分发服务进行负载分析与数据的多路径流向调整,用以减小平台压力,提高平台的运行效率。
负载均衡模块的主要功能是根据采集服务和分发服务进行负载均衡处理。
1.2.7协议分析转换功能
按协议规对上报数据进行解析,对分发的数据进行封装,实现与其他平台的数据准确对接。
协议分析转换模块的主要功能有:
(1)按协议规对上报数据进行解析。
对接入的数据,按照预先指定的协议进行解析,方便在系统中的处理和流通。
(2)对分发的数据进行封装。
对于系统处理过的数据,要根据预先指定的协议,将数据进行打包封装,然后下发到其他平台或者系统。
1.2.8动静态数据分发服务
根据各级数据请求,按照定义的接口规进行连接、响应、按主题分发处理。
分发各类动静态信息。
(1)按照定义的接口规进行连接响应。
(2)对数据按照主题进行分发。
根据接入数据的相关信息,从而获取相关的数据需求方信息,并且获取相应的主题信息,并将数据按照主题下发到相应的平台。
1.2.9数据分发服务配置
针对分发平台的信息,灵活配置分发的服务种类,分发的数据类型以与服务方式,实现分发的灵活可控性。
数据分发服务配置模块的主要功能有:
(1)获取将要分发的平台的信息。
根据系统中提供的其他平台的相关数据,获取将要分发的平台的相关信息,方便后续数据的分发。
(2)根据平台的信息配置要进行分发的服务。
根据已经获取的相关的平台的数据,对平台的服务信息进行配置。
1.2.10数据缓存服务
数据缓存服务主要提供本项目动态信息存缓存、持久化存储当前点以与缓存预处理的数据,向数据应用提供快速访问中间数据源。
数据缓存模块的主要功能是进行数据缓存,如存缓存、持久化存储当前点以与缓存预处理网格信息等数据。
1.2.11数据交换信息日志
记录数据采集以与分发的数据量,为验证数据交换的完整性、可追溯性以与可视性打下基础。
数据交换信息日志模块的主要功能有:
(1)记录数据采集获取的数据量。
在进行数据交互时,记录接入的数据的数据量信息。
(2)记录数据分发的数据量。
在进行数据的交互时,记录分发的数据的数据量信息。
1.3大数据存储
根据业务类型,数据划分为基础信息数据库、主题数据库、业务数据库三大数据库。
其中基础数据库存储行业的静态数据以实现与实时数据的快速拟合;主题数据库各类主题数据;业务库存储实时的业务数据。
根据数据的使用时效分为在线存储、离线存储。
1.3.1数据仓库工具
随着大数据平台不断的接入海量数据,大数据平台引入数据仓库技术来解决各类业务问题。
数据仓库是一个抽象的概念所以可以简单的理解为不同粒度的数据层,比如:
数据缓冲层(存放当日增量数据)、数据明细层(存放最全的明细数据)、数据模型层(轻粒度的数据汇总以与模型设计,这个时候需要设计相应的主题)、数据集市层(一般就是一些宽表,包含多维度和指标,方便用来做多维分析)、数据应用层(主要是开放给业务侧使用,多存放粗粒度的数据报表)。
通过数据仓库模型为各类应用提供数据支撑。
1.3.2大数据在线存储
大数据在线存储存储临时性的数据,提供高效数据索引,面向列的高可靠性、高性能、可伸缩的分布式存储,以与面向RMDB的数据导入与导出功能。
大数据在线存储子系统提供简化编程模型支持、容错、横向线性扩展等特性。
在线存储主要利用Hbase列式数据库做为主在线存储。
在线存储的技术架构如上图所示,其中:
HBaseClient使用HBase的RPC机制与HMaster和HRegionServer进行通信。
对于管理类操作(如建表,删表等),Client和HMaster进行RPC;对于数据读写类操作,Client和HRegionServer进行RPC。
每台HRegionServer都会与HMaster进行通信,HMaster的主要任务就是要告诉每台HRegionServer它要维护哪些HRegion。
当一台新的HRegionServer登录到HMaster时,HMaster会告诉它等待分配数据。
而当一台HRegion死机时,HMaster会把它负责的HRegion标记为未分配,然后再把它们分配到其他的HRegionServer中。
HBase通过多个HMaster实例和Zookeeper的协调功能解决了HMaster单点故障问。
HMaster在功能上主要负责Table和Region的管理工作。
HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
HBase能提供实时计算服务是由其架构和底层的数据结构决定的,即由LSM-Tree(Log-StructuredMerge-Tree)+HTable(region分区)+Cache决定——客户端可以直接定位到要查数据所在的HRegionserver服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的。
包括以下功能:
(1)高效数据索引
HBase读取首先会在缓存中查找,它采用了LRU(最近最少使用算法),如果缓存中没找到,会从存中的MemStore中查找,只有这两个地方都找不到时,才会加载HFile中的容,而使用了LSM树型结构的HFile节省了寻道开销,读取速度也会很快。
(2)分布式存储
HBase存储的文件系统使用HDFS分布式存储系统,每表都通过行键按照一定的围被分割成多个子表(HRegion),默认一个HRegion超过预设大小(默认256M)就要被分割成两个。
HRegionServer存取一个子表时,会创建一个HRegion对象,然后对表的每个列族(ColumnFamily)创建一个Store实例,每个Store都会有0个或多个StoreFile与之对应,每个StoreFile都会对应一个HFile,HFile就是实际的存储文件。
1.3.3大数据离线存储
大数据离线存储通过HDFS分布式文件系统技术为平台提供稳定可靠的存储支持。
离线存储保存了所有历史数据。
大数据离线存储提供的功能包括:
容错机制、集群资源管理、存储资源的访问隔离和横向扩展、数据的镜像和冗余等功能。
(1)容错机制
HDFS通过多方面保证数据的可靠性,实现了高容错功能:
多份复制并且分布到物理位置的不同服务器上、数据校验功能、后台的连续自检数据一致性功能。
(2)集群资源管理
1元数据节点用来管理文件系统的命名空间;数据节点是文件系统中真正存储数据的地方,其周期性的向元数据节点回报其存储的数据块信息。
2HDFS文件系统检查工具FSCK可以检查HDFS系统的健康状况。
3一旦数据发生异常,NameNode可进入安全模式,便于数据的恢复。
4每一个DataNode都会周期性运行一个数据扫描线程,它可以检测并通过修复命令来修复坏块或丢失的数据块。
(3)存储资源的访问隔离
1用户提交作业时,JobTracker端要进行身份核实,先是验证到底是不是这个人,即通过检查执行当前代码的人与JobConf中的user.name中的用户是否一致。
2然后会检查ACL(AccessControlList)配置文件(由管理员配置)看你是否有提交作业的权限。
一旦你通过验证,会获取HDFS或者mapreduce授予的delegationtoken(访问不同模块有不同的delegationtoken)。
3之后的任何操作,比如访问文件,均要检查该token是否存在,且使用者跟之前注册使用该token的人是否一致。
另外HDFSFederation方案允许HDFS创建多个namespace以提高集群的隔离性。
(4)存储资源的横向扩展
1可扩展性是HDFS的一个重要特性,向HDFS集群中添加或删除节点,可以通过简单操作即可完成。
新增或删除DataNode节点时,会导致数据块分布的不均匀,用户可以使用balance命令重新平衡DataNode上的数据块的分布。
2HDFSFederation方案使用了多个独立的Namenode/namespace来使得HDFS的命名服务能够水平扩展成联合集群
(5)数据的镜像和冗余
1冗余备份:
HDFS将每个文件存储成一系列的数据块(Block),默认块大小为64MB(可以自定义配置)。
为了容错,文件的所有数据块都可以有副本(默认为3个,可以自定义配置)。
当DataNode启动的时候,它会遍历本地文件系统,产生一份HDFS数据块和本地文件对应关系的列表,并把这个报告发送给NameNode,这就是报告块(BlockReport),报告块上包含了DataNode上所有块的列表。
2副本存放:
HDFS集群一般运行在多个机架上,不同机架上机器的通信需要通过交换机。
通常情况下,副本的存放策略很关键,机架节点之间的带宽比跨机架节点之间的带宽要大,它能影响HDFS的可靠性和性能。
HDFS采用一种称为机架感知(Rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。
在大多数情况下,HDFS副本系数是默认为3,HDFS的存放策略是将一个副本存放在本地机架节点上,一个副本存放在同一个机架的另一个节点上,最后一个副本放在不同机架的节点上。
这种策略减少了机架间的数据传输,提高了写操作的效率。
机架整体出现错误的几率远远比节点的少,所以这种策略不会影响到数据的可靠性和可用性。
1.4数据清洗转换
大数据平台提供数据清洗转换工具,提供了一个强健、高效的数据处理引擎,支撑各种复杂的数据转换流程、任务调度流程的高效运行。
引擎采取异步并行处理的技术,实现流程中的每个组件多线程并行高效处理;支持集群部署方式,允许将转换或转换中的比较耗时的数据处理组件部署在多台服务器上并发执行,从而将转换的工作分摊到多台服务器上,从而提高数据处理效率。
1.4.1流数据处理框架
流数据处理框架是针对流式数据提供的可在分布式环境下运行的组件和程序框架,将针对实时数据的清洗、转换、计算程序在此框架下编写,运行在流数据处理组件中,从分布式消息队列中获取相应的实时数据,经过程序的处理后,推送到相应的位置中。
例如实时流数据、路况数据等,经过清洗转换后,根据业务的需要推送到分布式文件系统、数据库或者其他的存储中。
1.4.2分布式ETL工具
将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,支持分布式的部署方式,支持关系数据库、文件,支持SQL语句,操作简单容易上手,对抽取、转换、加载过程可监控。
公路路网道路地理数据等可开放直连数据库接口,此时可以使用分布式ETL工具从开放的数据库接口中将路网道路地理数据抽取出来,经过工具转换后,存入到分布式文件系统中。
1.4.3ETL功能介绍
1.4.3.1ETL引擎
提供任务引擎和转换引擎,支撑各种复杂的数据转换流程、任务调度流程的高效运行,为大块、大批量、异构的数据的整合提供坚实保障。
1.4.3.2数据处理组件
大量的任务组件和转换组件,用户可以通过拖拽的方式快速完成各种复杂数据集成需求和集成的调度控制。
提供的转换组件覆盖数据映射、数据丰富、数据计算、数据验证、数据排序、数据合并、数据拆分、数据生成、数据去重、数据分组、行列转换等复杂处理,提供的任务组件涵盖定时调度、周期循环调度等调度模式组件、以与数据处理的一些前置、后置检查操作等。
1.4.3.3数据抽取模式
支持各种数据抽取模式,如全量同步、增量同步CDC(基于触发器、基于时间戳、全表比对、基于数据库日志分析)、单向同步、双向同步、文件目录同步等。
基于数据库日志分析的增量抽取支持数据库:
Oracle,SqlServer2008,Mysql5。
1.4.3.4图形化操作
通过大量组件和可视化图形界面,使用人员无需编码,既可以灵活、方便地定制出各种数据集成流程,又能够减少手工代码的错误,还可以利用调试预览与时发现潜在错误,提升集成质量,并能对ETL服务器和资源库进行管理,全面提高集成速度。
1.4.3.5高效数据处理
采用异步并行处理的方式实现数据的高效处理,每经过一个组件就被加工成一个既定格式的中间状态。
数据经过一个组件的处理后被迅速交给下一个组件处理,同时当前的组件已经开始处理新的数据。
提供集群部署方式,允许将转换或转换中的比较耗时的数据处理组件部署在多台服务器上并发执行,从而将转换的工作分摊到多台服务器上,提高数据处理效率。
1.4.3.6异常恢复和数据一致性
任务流程提供多个调度机制和异常恢复机制,在异常后,支持自动和手动恢复。
异常恢复可以保证恢复的流程从异常点开始重新同步,保证数据的最终完整性和一致性。
1.4.3.7监控管理
提供基于JS+REST技术规的前端界面和后台数据提供相分离的统一管理平台,界面风格符合扁平化设计潮流。
提供对分布式网络环境中部署的服务器运行实例集中统一管理,包括对服务器、流程的运行状态、运行日志、执行性能的查看,以与远程的启动、停止、暂停、恢复等管理操作,支持统一的权限管理配置、错误告警等功能。
提供插件管理机制,方便用户安装、卸载已有的功能插件,允许用户自定义自己的功能插件,并集成到统一管理平台中。
提供自定义面板功能,方便用户在一个视图中集中展示自己关注的容。
提供Java、、REST等多种封装形式的监控管理接口,方便用户快速将监控管理功能集成到自己的平台中。
1.4.3.8插件式组件管理和可扩展性
提供插件式的组件管理机制,对于特殊的场景,可以方便的进行扩展开发,如客户自定义结构的文本进行转换组件的定制开发、专有的应用系统进行适配器的定制开发等,并以插件的方式集成使用。
1.5大数据处理
1.5.1实时数据流处理
实时性是数据处理的关键也是其价值得以实现的基础。
如流的实时监控、拥堵状况的实时信息、诱导等应用均要求系统能够返回当前的状态;在另一些场景则需要进行连续监控,在技术上涉与连续查询。
这方面的功能需求已在第二节讲述。
在构建大数据处理平台中,实时数据流处理子系统是关键系统之一。
该系统中涉与的关键技术包括:
高速数据转换,将获取的事件数据流由随机访问格式转换为分布式并行分析格式,将几分钟前获取的数据即时处理呈现最新分析结果;灵活的资源分配方案,不同类型的数据处理组件(即事件处理服务)与可伸缩分布式键值存储灵活连接,可以便捷地构造新的服务而不影响现有系统的运行;基于滑动窗口的连续计算技术;自适应负载平衡与资源分配优化。
实时流数据处理基于流计算框架为平台提供一个分布式的、容错的实时计算系统,用于对接收的数据进行实时计算,例如支持车辆实时位置计算、车辆按行政区划分级聚合(到地区级)、实时车辆查找、区域车辆异常聚集、相关运营指标实时计算等业务。
实时流数据处理提供简化编程模型支持、容错、水平扩展、可靠消息处理等功能。
1.5.2数据挖掘分析引擎
数据挖掘分析是对清洗后的数据,运用数学算法,对其进行数据运行,并把运算后的结果模型保存起来,供业务程序的调用。
支持多种数据挖掘算法分析,可以生成分类、聚集、回归模型,适应在多种行业的机器学习场景提供挖掘分析功能。
Ø多种分布式机器学习、智能挖掘、统计分析计算框架
Ø丰富的、功能齐全的行业分析数据模型,譬如分类、聚集、回归等应用分析模型。
1.6大数据服务引擎
1.6.1大数据配置服务管理
根据各类业务系统的需求,进行大数据配置服务,支持方便灵活的数据应用。
1.6.2大数据在线分析
大数据在线分析分析耗时较短的业务功能提供支撑。
该模块集成大数据分析算法组件,面向用户提供对业务的远程分析能力。
用户通过界面提交分析的需求、参数或者是符合规约的算法,在大数据在线分析上完成大数据的搜索、分析、挖掘和运算,最终展示给用户。
具体功能包括:
面向海量数据的全局扫描抽取、多维视图展示、信息挖掘与关联分析、实时数据融合。
在技术上使用Spark快速数据处理框架实现。
在线分析系统主要是面向海量数据的全局扫描抽取、多维视图展示、信息挖掘与关联分析、实时数据融合等分析工作。
SparkSQL可以实现多维度统计分析。
SparkMlib可以实现信息发掘和关联分析。
SparkonYarn启动后,由SparkAppMaster把Receiver作为一个Task提交给某一个SparkExecutor;Receive启动后输入数据,生成数据块,然后通知SparkAppMaster;SparkAppMaster会根据数据块生成相应的Job,并把Job的Task提交给空闲SparkExecutor执行。
图中蓝色的粗箭头显示被处理的数据流,输入数据流可以是磁盘、网络和HDFS等,输出可以是HDFS,数据库等。
SparkStreaming的基本原理是将输入数据流以时间片(秒级)为单位进行拆分,然后以类似批处理的方式处理每个时间片数据。
SparkStreaming将流式计算分解成多个SparkJob,对于每一段数据的处理都会经过SparkDAG图分解,以与Spark的任务集的调度过程。
对于目前版本的SparkStreaming而言,其最小的BatchSize的选取在0.5~2秒钟之间(Storm目前最小的延迟是100ms左右),所以SparkStreaming能够满足除对实时性要求非常高(如高频实时交易)之外的所有流式准实时计算场景。
1.6.3大数据离线分析
本子系统基于HDFS的分布式存储技术、HadoopMapReduce并行计算技术,是支持大数据分析系统高效检索和快速处理的基础,例如可以对车辆订单和轨迹序列进行多要素、多层次、多时次、多围检索分析和计算;针对跨年度、跨区域的大规模车辆轨迹等历史数据进行离线分析,并能够对统计结果进行在线展示和下载。
大数据离线分析提供数据查询系统、行业管理相关功能提供底层数据和计算的支持。
大数据离线分析的技术架构图如下:
MapReduce设计上具有以下主要的技术特征
(1)向“外”横向扩展,而非向“上”纵向扩展
即MapReduce集群的构建完全选用价格便宜、易于扩展的低端商用服务器。
(2)失效被认为是常态
MapReduce并行计算软件框架使用了多种有效的错误检测和恢复机制,如节点自动重启技术,使集群和计算框架具有对付节点失效的健壮性,能有效处理失效节点的检测和恢复。
(3)把处理向数据迁移
为了减少大规模数据并行计算系统中的数据通信开销,代之以把数据传送到处理节点(数据向处理器或代码迁移),应当考虑将处理向数据靠拢和迁移。
MapRed