业务流程图
首先业务流程图镇楼,常见的大数据系统结构如上图所示,主要由这么几个部分构成
- 数据采集 - flume收集业务方上报的数据;
- 数据存储层 - 依赖HDFS提供的强大的分布式数据存储方案,主要是使用Hbase进行数据存储;
- 协调&调度层面 - 常见的就是zookeeper,主要是用于分布式系统中的资源协调;
- 实时处理框架(计算框架) - 用于海量数据的计算,常见的分析框架由spark、storm或者samza;
- 数据分析层 - 企业大数据系统必然是基于业务并且反哺业务的,提供简单易用的数据分析功能给到业务方也是必然要求。
一、数据采集
数据分析的基础是数据采集,flume提供了从分散的或者集中的数据源采集、聚合和传输海量日志的能力。这里通过一个实际的案例介绍数据采集的重要性以及flume具备的一些能力。
例:播放器内常见的数字专辑业务,业务方需要通过数据优化购买转化率,就可以通过以下方案进行处理
定义数据:总转化率 = 购买用户/进入业务中的用户;单步转化率 = 下一步用户/进入业务中的用户
埋点收集数据:通过flume收集web或者客户端通过SDK上报的数据,并经过简单整理后将数据传输至存储层;
二、数据存储
依据对一致性(consistency)要求的强弱不同,分布式数据存储策略可分为ACID和BASE两大阵营。其中ACID类型的数据对一致性的要求比较强,数据库的事务处理结果必须使得数据库从一个一致性状态变更为另一个一致性状态;BASE类型则以牺牲强一致性,获得基本可用性和柔性可靠性,并要求达到最终一致性。
这里提一下BASE类型里的HBase,HBase设计理念来源于谷歌的BigTable,是目前商用场景下使用最多的数据存储方案,提供了毫秒级别的查询,百亿级别的数据也能提供较高效率的处理;
三、协调&调度层
- 调度器 - 主要用于分布式系统中的一些资源的调度,例如计算能力、延迟等,例如YARM;
- 协调器 - 在分布式系统中主要用于协调服务和进行状态管理。
提一下结构图中的zookeeper,zookeeper是apache hadoop框架中的分布式应用的协调程序,主要为分布式应用提供一致性服务,主要包括以下功能:配置维护、域名服务、分布式同步、组服务等。简单来说,就是将复杂的、易出错的关键服务封装好,提供简单易用的接口、功能的稳定给用户。
四、计算框架
常见的数据处理方案有以下两种
- 流处理 - 一般用于处理连续不断的数据流,注重数据处理的时效性;
- 批处理 - 实时性较差,一般用于处理大规模数据集,例如业务方累计的历史数据。
典型的批处理系统就是Hadoop 提供的MapReduce。而常见的流处理系统有Apache Storm,Apache Samza。还有一种系统,同时具备批处理与流处理的能力,这种称为混合处理系统,比如Apache Spark,Apache Flink。
商用场景下,最常使用的计算框架是Spark,它是一个基于内存计算的开源的集群计算系统;主要优势是数据分析速度更快,内存计算框架适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,国内的阿里巴巴、网易均是其用户。
五、数据分析层
数据分析层中的工具,涵盖范围很广,从诸如SQL的声明式编程语言,到诸如Pig的过程化编程语言,均有涉及,同时数据分析层支持常见的数据挖掘和机器学习算法,这些类库可拿来即用,可以极大的提高使用效率;
这里提一下Phoenix,它是 HBase 的 SQL 驱动,可以将普通的SQL查询转成 HBase 的扫描及相应的动作。作为产品或者数据分析师,建议熟练掌握SQL
Hive:Hive是一个建立于 Hadoop 上的数据仓库基础构架。它用来进行数据的提取、转化和加载(即Extract-Transform-Load ,ETL),它是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。