三、大数据平台
M 公司对大数据的管理、开发与应用有着自身独特的需求,必须建设适合自身业务需求
的大数据平台来满足业务需求,并能支撑业务的稳定、快速发展的需要。
(一)技术架构
M 公司从自身的业务需求出发,充分借鉴了其他企业在大数据发展和应用方面的经验,形成了如附图 14 所示的技术架构。
附图 14 M 公司的大数据技术架构
从图中可以看出,M 公司的大数据架构主要包括数据采集、数据存储、数据管理、数据分析、算法以及数据可视化等组件,大部分组件均采用了开源技术,并对一些核心组件进行了深加工、优化和自定义。数据采集采用的是 JavaScribe 技术,每台机器都有一个代理软件把数据收集起来。存储部分以 HBase 技术为主,取得了较好的效果。数据管理采用 Kerberos进行认证,准确性和效率都得到了保证。数据分析采用了 MapReduce、Spark、Storm、Hive、Impala、Druid 和 ES 等较为成熟的技术。算法包括机器学习和深度学习等,选用 Tensorflow深度学习平台和 Kubernetes 软件进行一些资源调度和管理,以支持 M 公司的广告、金融、相册和搜索场景等业务。数据可视化包括两条线:一条是通过 Kafka→Druid→数据可视化显示,另一条是完整数据落盘到 HDFS。可视化的方式主要以各种报表为主。
(二)M 数据工场
承担 M 公司大数据业务发展的一个重要部门是 M 数据工场,这是一个为全公司业务各
团队及 M 生态链企业提供数据采集、计算、存储等基础能力以及机器学习、挖掘工具和方法任务的专门部门,是 M 公司大数据技术开发和资源利用的主力军。数据工场提供支撑 M 公司大数据业务运营的基础性平台,M公司希望通过这一平台能将数据开放给企业的各个部门,促进不同部门之间数据的相互利用,并且希望能加强对数据的权限管理,杜绝数据的不当利用。M 数据工场的总体架构如附图 15 所示。
附图 15 M 数据工场的总体架构
从图中可以看出,数据工场平台的底层基础平台建立在以 HDFS 和元数据为支撑的Hadoop 体系之上,由于 M 公司及其生态链企业业务场景丰富,因此在技术选型方面,包括Hive、Spark、MIapReduce、YARN 以及 IMIpala 等在内的大数据技术都在不同的场景下使用。中间层为 M 公司自行研发的数据工厂,主要提供数据可视化、计算任务管理、数据管理、权限管理、任务调度和数据共享等服务。架构的最上层为 M 公司及其生态链企业的关联业务,业务的规模处于动态扩展之中。
(三)数据处理方式
除提供底层的能力外,M 数据工场也为 M 公司及其生态链企业提供全方位的数据保障能力,这方面的能力主要用于 M 信用卡的风险控制和额度评估、广告精准投放、限时抢购时用数据打击“黄牛”超量订购等,既帮助各业务部门对数据进行系统分析,同时也有利于将数据应用到核心业务场景中去。
1. M 数据存储格式
M 数据存储统一采用 Parquet 格式。这种格式的优点在于其使用的是列式存储,能支持MIapReduce、Hive、IMIpala 和 Spark 等大数据处理技术,并且读取速度快、占用空间少、处理效率高。
2. 客户端数据接入
客户端数据接入是指通过手机的 WAP、App 等数据采集端,数据的存在方式有 SDK 和服务端 Log 两种模式。这两种模式各有优点和缺点:SDK 模式的优势是采集便捷、数据稳定完整、格式化较为容易并能消除爬虫的影响,劣势是需要前端介入;而服务端 Log 模式的优势是无须前端介入、部署容易,劣势是接口变化较多、采集数据不够完整、格式化复杂以及受爬虫的干扰等。尽管这两种模式各有优势和劣势,但在不同的场合需要两种模式灵活使用。
3. 服务器端数据源
除前端数据源外,整个处理数据时还会有大量的服务器端数据源需要处理。来自业务数据库类的数据,用 ETL 工具进行批量导入;对服务器端日志等数据,用 Scribe 工具将数据写入 HDFS 之中。
4. 元数据管理
当企业的业务快速增加之后,每种数据的处理方式都有可能不一样。如视频播放日志、分析师希望用 Hive 进行处理,然后用 Impala 直接写入 SQL 去进行计算,但数据挖掘工程师就要因此用 MapReduce、Spark 等方式去读取和解析。元数据管理就是要做到数据处理方式的统一性,既能够满足 Hive、Spark、Impala,还能满足 MapReduce,同时能有效地节省各类用户对数据理解和执行的时间。M 数据工场每份数据的描述都需要在数据工场上提交,之后数据工场会在 MetaStore 中建表的同时附上元数据的行为,供 Hive、Spark 和 Impala 使用。数据管理还会生成 Java Class 给 MapReduce 使用。附图 16 为 M 元数据管理体系。
附图 16 M 元数据管理体系
5. 计算管理
相较于数据管理,计算管理的难度要高得多,尤其是每天面对海量的计算量时,情况变得尤为复杂。为此,M 公司做了以下各方面的优化。
(1)定时执行:按照指定的时间执行确定的任务。
(2)手工执行:将不定期使用的作业注册到平台上,在需要的时候,手动触发执行任务。
(3)任务参数:将任务参数化,提升任务的可执行度。
(4)数据依赖:依靠数据进行任务的安排和执行。
(5)指定队列:指定任务运行时所使用的队列。
(6)指定账户:为任务的执行选择 Kerberos 账户运行。
(7)结果通知:任务执行的结果,通过电子邮件发送给指定的人。
(8)数据对接:通过 HTTP 网络 POST 请求回调,直接导入数据库中。
6. Docker
为了管理好纷繁复杂的计算框架和模型,在计算执行方面,M 公司使用 Docker 来解决对环境的不同需求和异构问题,并且与 Hive、Impala、Spark 等不同的计算模型进行对接,以适配不同应用场景计算不同数据的模型。在不同的业务场景下,同一个计算逻辑也可以选用不同的计算模型,Docker 的使用有效地避免了资源的浪费。另外,Docker 在用户数据隐私保护方面也很有优势。M 公司采用了 Docker 与自身安全策略有机融合的方案,使用户的隐私保护和数据安全达到了业界领先的水平。