



在实际生产环境中,我们需要进行服务器的选型,确定是选择物理机还是云主机。
物理机以128GB内存、20核物理CPU、40线程、8TB HDD和2TB SSD的戴尔品牌机为例,单台报价约4万元,并且还需要考虑托管服务器的费用,一般物理机寿命为5年左右。
云主机以阿里云为例,与上述物理机的配置相似,每年的费用约为5万元。
物理机需要由专业运维人员维护,而云主机的运维工作由服务提供方完成,运维工作相对轻松。
实际上,服务器的选型除了参考上述条件,还应根据数据量来确定集群规模。
在本数据仓库项目中,读者可以在个人计算机上搭建测试集群,建议将计算机配置为16GB内存、8核物理CPU、i7处理器、1TB SSD。测试服务器规划如表2-1所示。
表2-1 测试服务器规划
续表
在数据采集运输方面,本数据仓库项目主要完成两方面的需求:将业务数据库中的数据采集到数据仓库中;将需求计算结果导出到关系数据库中,以便于展示。为此我们选用了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的使用效率。
在数据可视化方面,我们提供了两种解决方案:一种是方便快捷的可视化工具FineBI;另一种是ECharts可视化,它的配置更加灵活,但是需要用户掌握一定的Spring Boot知识。实现数据仓库的结果数据可视化的工具有很多,方式也多种多样,用户可以根据自己的需要进行选择。
我们选用DolphinScheduler作为任务流的定时调度系统。DolphinScheduler是一个分布式、易扩展的可视化 DAG 工作流任务调度平台,致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
总结如下。
● 数据采集传输:Flume、Kafka、DataX、Maxwell。
● 数据存储:MySQL、HDFS。
● 数据计算:Hive on Spark。
● 任务调度:DolphinScheduler。
● 可视化:FineBI、ECharts。
框架选型要求满足数据仓库平台的几大核心需求:子功能不设限、国内外资料及社区尽量丰富、组件服务的成熟度和流行度较高,待选择版本如下。
● Apache:运维过程烦琐,组件间的兼容性需要自己调研(本次选用)。
● CDH:国内使用较多,不开源,不用担心组件兼容性问题。
● HDP:开源,但没有CDH稳定,使用较少。
笔者经过考量,决定选择 Apache 原生版本大数据框架,原因有两个:一是我们可以自由定制所需要的功能组件;二是CDH和HDP版本框架体量较大,对服务器配置要求相对较高。本数据仓库项目用到的组件较少,Apache原生版本即可满足需求。
笔者对框架版本兼容性进行了调研,确定了版本选型,如表2-2所示。本数据仓库项目采用了目前大数据生态体系中最新且最稳定的框架版本,并对框架版本的兼容性进行了充分调研,对安装部署过程中可能产生的问题进行了尽可能明确的说明,读者可以放心使用。
表2-2 版本选型