3.2.1系统设计原则
系统设计方案总体遵循技术规格书的总体目标和指导思想,以优化整合基础数据为前提,以构建贯通主体业务为目标建立基于信息共享数据湖的BI应用系统架构;应用系统架构的规划要将先进性和实用性有机结合,结合的关键点在于从的实际需求出发,在明确的有限目标前提下,以实用性为优先。系统设计体现统一性、先进性、实用性、可靠性、安全性、可扩展性。
l 统一性
信息资源统一规划、统一管理,包含是统一的建设标准。包括统一的数据标准、统一的规划标准、统一的接口标准、统一的管理标准。
l 先进性
技术设计及业务应用方面体现行业应用的领先性和前瞻性。
l 实用性
管理模式和系统功能要针对的实际情况设定,体现基础扎实、效率优先、平稳过渡、降低风险、投资见效快的要求,并结合使用人员特点、业务实际操作特点和管理基础使系统易学易用、方便推广。
l 可靠性
系统采用大型关系型数据库,有严格的安全控制和数据备份机制,确保数据安全可靠。
l 安全性
在网络配置上,外部只可访问经过许可的Web服务器,保证内部业务分析应用模型的数据不被非法用户所获取。在应用软件的设计上,强化权限管理功能,具有多级安全机制。通过对各级工作人员的权限设置,做到所有人员只能查看与其权限相应的数据,并建立完善的日志管理,做到所有操作都有据可查。
l 可扩展性
可扩展性从以下两个方面提出要求:一是业务应用功能的可扩展性,通过建立集中与分层管理的统一模式,使同类业务能在和二级部门层面推广使用,并以精细化数据管理为基础,为未来系统功能向更高层次的提升奠定应用基础框架;二是系统环境的可扩展性,网络和系统数据湖可根据统一规划的要求,在保证体系完整的前提下,通过逐步扩充来满足应用需求并实现合理投资。
l 易用性
提供了完整的交互性的UI操作界面和管理控制数据湖。其中BI更有别于其他传统BI产品,在分析图表创建、调整等方面更为简便、易用,以一个产品组件即实现了数据结构、数据图表、OLAP、Dashboard等以往需要多个产品实现的开发和应用发布功能,极大地减轻了对系统维护团队的工作压力。 数据存储开发方案
Kafka的Topic中的数据通过定制开发的SparkStreaming程序进行清洗、去重等操作并存入数据湖。数据采用Kudu+HBase的方式存储,HBase存全量数据,Kudu存计算点数据、测点数据。数据仓库的存储,根据业务需求,采用hive+kudu的方式进行开发。报表的数据存储,根据实时性和变化量,采用hive+mysql的方式进行存储,开发相应的关系映射和连接组件。 3.1.3.3 Hbase+ES近实时(NRT)查询开发方案
Hbase适用于大表的存储,通过单一的RowKey查询虽然能快速查询,但是对于复杂查询,尤其分页、查询总数等,实现方案浪费计算资源,所以可以针对hbase数据创建二级索引(Hbase Secondary Indexing),供复杂查询使用。而ES作为一个高性能,采用Java5开发,基于Lucene(同时对其进行了扩展)的全文搜索服务器,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Key-Value Store Indexer是Hbase到ES生成索引的中间工具。在CDH5中的Key-Value Store Indexer使用的是Lily HBase NRT Indexer服务。
Lily HBase Indexer是一款灵活的、可扩展的、高容错的、事务性的,并且近实时的处理HBase列索引数据的分布式服务软件。Lily HBase Indexer使用ESCloud来存储HBase的索引数据,当HBase执行写入、更新或删除操作时,Indexer通过HBase的replication功能来把这些操作抽象成一系列的Event事件,并用来保证写入ES中的HBase索引数据的一致性。并且Indexer支持用户自定义的抽取,转换规则来索引HBase列数据。ES搜索结果会包含用户自定义的columnfamily:qualifier字段结果,这样应用程序就可以直接访问HBase的列数据。而且Indexer索引和搜索不会影响HBase运行的稳定性和HBase数据写入的吞吐量,因为索引和搜索过程是完全分开并且异步的。
hbase负责海量数据存储;ES负责构建索引和提供对外查询;Indexer负责提供hbase到ES的索引构建。
数据使用流程图 3.1.3.4数据接口的开发
数据湖通过标准接口的方式为外部系统提供数据服务,根据不同业务系统的需要进行定制化的接口开发。根据业务的不同数据封装分成两种方式,一种是对批量的数据进行封装,将封装后的数据发布到共享区上,供数据应用和外围系统获取,这种方式主要针对访问方需要海量数据的情况;另一种方式是将数据封装成Web Service或者其他专用Socket协议的格式供访问方获取单条数据,这种方式主要针对对客户视图等的访问情况。
1) API
应保持与开源Hadoop及相当架构系统各服务组件的API不变,具体包括并不限于接口功能、接口类型(Java、Python、Rest等)、接口名称、输入参数、返回结构。所支持的接口包括并不限于:
a. 支持访问分布式文件系统的文件操作接口;
b. 支持与外部数据源关系数据库的交互;
c. 通过提交MR任务分析和查询数据;
d. 支持Thrift、Rest接口;
e. 以直接提交查询语句方式访问数据;
f. 提供用户访问Hive的方法,支持用户使用Java和Thrift方式访问Hive。