常日大数据平台的架构如上,从外部采集数据到数据处理,数据显现,运用等模块。
数据采集用户访问我们的产品会产生大量的行为日志,因此我们须要特定的日志采集系统来采集并运送这些日志。Flume是目前常用的开源选择,Flume是Cloudera供应的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各种数据发送方,用于网络数据;同时,Flume供应对数据进行大略处理,并写到各种数据接管方的能力。
对付非实时利用的数据,可以通过Flume直接落文件到集群的HDFS上。而对付要实时利用的数据来说,则可以采取Flume+Kafka,数据直接进入行列步队,经由Kafka将数据通报给实时打算引擎进行处理。
业务数据库的数据量比较访问日志来说小很多。对付非实时的数据,一样平常定时导入到HDFS/Hive中。一个常用的工具是Sqoop,Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。而对付实时的数据库同步,可以采取Canal作为中间件,处理数据库日志(如binlog),将其打算后实时同步到大数据平台的数据存储中。
数据存储无论上层采取何种的大规模数据打算引擎,底层的数据存储系统基本还是以HDFS为主。HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式打算中数据存储管理的根本。具备高容错性、高可靠、高吞吐等特点。
HDFS存储的是一个个的文本,而我们在做剖析统计时,构造化会方便须要。因此,在HDFS的根本上,会利用Hive来将数据文件映射为构造化的表构造,以便后续对数据进行类SQL的查询和管理。
数据处理数据处理便是我们常说的ETL。在这部分,我们须要三样东西:打算引擎、调度系统、元数据管理。
对付大规模的非实时数据打算来讲,目前一样采取Hive和spark引擎。Hive是基于MapReduce的架构,稳定可靠,但是打算速率较慢;Spark则是基于内存型的打算,一样平常认为比MapReduce的速率快很多,但是其对内存性能的哀求较高,且存在内存溢出的风险。Spark同时兼容hive数据源。从稳定的角度考虑,一样平常建议以Hive作为日常ETL的紧张打算引擎,特殊是对付一些实时哀求不高的数据。Spark等其他引擎根据场景搭配利用。
实时打算引擎方面,目前大体经由了三代,依次是:storm、spark streaming、Flink。Flink已被阿里收购,大厂一贯在推,社区生动度很好,海内也有很多资源。
调度系统上,建议采取轻量级的Azkaban,Azkaban是由Linkedin开源的一个批量事情流任务调度器。
一样平常须要自己开拓一套元数据管理系统,用来方案数据仓库和ETL流程中的元数据。元数据分为业务元数据和技能元数据。
业务元数据,紧张用于支撑数据做事平台Web UI上面的各种业务条件选项,比如,常用的有如下一些:移动设备机型、品牌、运营商、网络、价格范围、设备物理特性、运用名称等。这些元数据,有些来自于根本数据部门供应的标准库,比如品牌、价格范围等,可以从对应的数据表中同步或直接读取;而有些具有韶光含义的元数据,须要每天通过ETL处理天生,比如运用信息。为支撑运用打算利用,被存储在MySQL数据库中;而对付添补页面上对应的条件选择的数据,则利用Redis存储,每天/月会根据MySQL中的数据进行加工处理,天生易于快速查询的键值对类数据,存储到Redis中。技能元数据,紧张包括数据仓库中的模型解释、血缘关系、变更记录、需求来源、模型字段信息等,详细的可以查看数据剖析师该当理解的数据仓库(3)数据流转通过上面一张图理解数据采集,数据处理,到数据展现的数据流转。常日我们在实际事情中,从数据源到剖析报告或系统运用的过程中,紧张包括数据采集同步、数据仓库存储、ETL、统计剖析、写入上层运用数据库进行指标展示。这是最根本的一条线,现在还有基于数据仓库进行的数据剖析挖掘事情,会基于机器学习和深度学习对已有模型数据进一步挖掘剖析,形成更深层的数据运用产品。
数据运用俗话说的好,“酒喷鼻香也怕巷子深”。数据运用前面我们做了那么多事情为了什么,对付企业来说,我们做的每一件事情都须要表示出代价,而此时的数据运用便是大数据的代价表示。数据运用包括赞助经营剖析的一些报表指标,商城上基于用户画像的个性化推送,还有各种数据剖析报告等等。
好的数据运用一定要借助可视化显现,比如很多传统企业买的帆软。开源界推举一款可视化工具Superset,可视化种类很多,支持数据源也不少,利用方便。最近数砖收购的redash,也为了自己能一统大数据处理平台。可以看出可视化对付企业数据代价表示是很主要的。
结尾通过本文,可以对大数据平台处理做初步理解,知道包含哪些技能栈,数据怎么流转,想要真正从0到1搭建起自己的大数据平台,还是不足的。理解了流程,你还须要真正的上手搭建Hadoop集群,Spark集群,数据仓库培植,数据剖析流程规范化等等都须要很多事情。
作者:数据社 大数据实践的那些事,专注MPP数据库研究、流处理打算、数据仓库架构和数据剖析