2.4.2 软件环境
1.技术选型
在数据采集运输方面,本数据仓库项目主要完成3个方面的需求:将服务器中的日志数据实时采集到数据存储系统中,防止数据丢失及数据堵塞;将业务数据库中的数据采集到数据仓库中;将需求计算结果导出到关系数据库中,以方便展示。为此我们选用了Flume、Kafka、DataX、Maxwell。
Flume是一个高可用、高可靠、分布式的海量数据收集系统,可以从多种源数据系统采集、聚集和移动大量的数据并集中存储。Flume提供了丰富多样的组件供用户使用,不同的组件可以自由组合,组合方式基于用户设置的配置文件,非常灵活,可以满足各种数据采集传输需求。
Kafka是一个提供容错存储、高实时性的分布式消息队列平台。我们可以将它用在应用和处理系统间高实时性和高可靠性的流式数据存储中。Kafka也可以实时地为流式应用传送和反馈流式数据。
DataX是一个基于select查询的离线、批量同步工具,通过配置可以实现多种数据源与多种目的存储介质之间的数据传输。使用离线、批量的数据同步工具可以获取到业务数据库中的数据,但是无法获取到所有的变动数据。
变动数据的同步和抓取工具选用的是Maxwell。Maxwell通过监控MySQL的binlog日志文件,可以实时抓取到所有数据变动操作。Maxwell在采集到变动数据后可以直接将其发送至对应的Kafka主题中,再通过Flume将数据落盘至HDFS文件系统中。
在数据存储方面,本数据仓库项目主要完成对海量原始数据及转化后各层数据仓库中数据的存储,以及对最终结果数据的存储。对海量原始数据的存储,我们选用了HDFS。HDFS是Hadoop的分布式文件系统,适用于大规模的数据集,将大规模的数据集以分布式的方式存储于集群中的各台节点服务器上,提高文件存储的可靠性。由于数据体量比较小,且为了方便访问,对最终结果数据的存储,我们选用了MySQL。
在数据计算方面,我们选用了Hive on Spark作为计算组件。Hive on Spark是由Cloudera发起的,由Intel、MapR等公司共同参与的开源项目,其目的是把Spark作为Hive的一个计算引擎,将Hive的查询作为Spark的任务提交到Spark的集群上进行计算。通过该项目可以提高Hive查询的性能,同时为计算机上已经部署了Hive或Spark的用户提供更加灵活的选择,从而进一步提高Hive和Spark的使用效率。
在数据可视化方面,我们提供了两种解决方案:一种是方便快捷的可视化工具Superset;另一种是ECharts可视化,它的配置更加灵活但是需要用户掌握一定的Spring Boot知识。数据仓库结果数据的可视化工具有很多,方式也多种多样,用户可以根据自己的需要进行选择。
我们选用DolphinScheduler作为任务流的定时调度系统。DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台,致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
在即席查询方面,我们对当前比较流行的两种即席查询系统都进行了探索,分别是Presto和Kylin。这两种即席查询系统各有千秋,Presto基于内存计算,Kylin基于预Cube创建计算。
面对海量数据的处理需求,对元数据的管理随着数据体量的增大显得尤为重要。为寻求数据治理的开源解决方案,Hortonworks公司联合其他厂商与用户于2015年发起数据治理倡议,包括数据分类、集中策略引擎、数据血缘、安全、生命周期管理等方面。Apache Atlas 项目就是这个倡议的结果,社区伙伴持续为该项目提供新的功能和特性。该项目用于管理共享元数据、数据分级、审计、安全性、数据保护等方面。
在集群监控方面,我们选用了灵活的集群监控框架Zabbix,支持用户灵活配置监控项,并为监控项设置电子邮件报警,方便运维人员快速定位问题并进行处理。我们还为Zabbix配置了Grafana作为监控项的可视化平台,用户可以更加直观地看到各个监控项的实时变化情况。
随着数据资产的规模逐渐壮大,大数据平台的用户安全认证也变得越来越重要。企业的数据平台需要一套完善的用户安全认证体系来确保不被攻击。在本数据仓库项目中,我们选用Kerberos来进行用户安全认证。Kerberos是一种计算机网络认证协议,用来在非安全网络中对个人通信以安全的手段进行身份认证。Kerberos又是麻省理工学院为计算机网络协议开发的一款计算机软件。在软件设计上,Kerberos采用客户/服务器结构,并且能够进行相互认证,即客户端和服务端均可对对方进行身份认证。
对于大数据而言,权限管理十分重要,本数据仓库项目选用Ranger作为权限管理服务,Ranger可以提供细粒度的权限访问控制,并提供Web UI方便用户进行可视化管理。
总结如下。
• 数据采集传输:Flume、Kafka、DataX、Maxwell。
• 数据存储:MySQL、HDFS。
• 数据计算:Hive on Spark。
• 任务调度:DolphinScheduler。
• 可视化:Superset、ECharts。
• 即席查询:Presto、Kylin。
• 元数据管理:Atlas。
• 集群监控:Zabbix、Grafana。
• 用户认证:Kerberos。
• 权限管理:Ranger。
2.框架选型
框架选型要求满足数据仓库平台的几大核心需求:子功能不设局限,国内外资料及社区尽量丰富,组件服务的成熟度和流行度较高。待选择版本如下。
• Apache:运维过程烦琐,组件间的兼容性需要自己调研(本次选用)。
• CDH:国内使用较多,不开源,不用担心组件兼容问题。
• HDP:开源,但没有CDH稳定,使用较少。
笔者经过考量决定选择Apache原生版本大数据框架,原因有两个方面:一方面我们可以自由定制所需要的功能组件;另一方面CDH和HDP版本框架体量较大,对服务器配置要求相对较高。本数据仓库项目用到的组件较少,Apache原生版本即可满足需求。
笔者经过对框架版本兼容性的调研,确定的版本选型如表2-2所示。本数据仓库项目采用目前大数据生态体系中最新且最稳定的框架版本,并且笔者对框架版本的兼容性进行充分调研,对安装部署过程中可能产生的问题尽可能进行明确的说明,读者可以放心使用。
表2-2 版本选型