近年来,互联网企业大数据平台的建设与安全一直是热门话题。作者打算发两篇文章参与讨论,一篇架构+一篇安全。本文不依赖任何大公司的平台架构,用通俗易懂的语言介绍大数据平台的整体架构。我们先从两个问题开始:什么是大数据平台?整合互联网产品和后台大数据系统,将应用系统产生的数据导入大数据平台,计算后导出到应用系统。为什么大数据平台在互联网行业很重要?大数据平台融合互联网应用和大数据产品,打通实时数据和离线数据,使数据实现更大规模的关联计算,挖掘数据的更大价值。从而实现数据驱动业务。大数据平台赋能大数据技术产品应用,实现自身价值。总的来说:大数据平台可以分为四个部分:数据采集、数据处理、数据输出和任务调度管理。一、数据采集按数据来源可分为以下4点:1、数据库数据目前常用的数据库导入工具有Sqoop和Canal。Sqoop是一款数据库批量导入导出工具,可以将关系型数据库数据批量导入到Hadoop中,也可以将Hadoop数据导出到关系型数据库中。Sqoop适用于关系型数据库数据的批量导入。如果要实时导入关系型数据库数据,可以选择Canal。Canal是阿里巴巴开源的一款MySQLbinlog获取工具。binlog是MySQL事务日志,可用于MySQL数据库的主从复制。Canal伪装成MySQL从库,从MySQL获取binlog。2.日志数据日志是大数据平台重要的数据来源之一。应用日志一方面记录各种程序的执行情况,另一方面记录用户的操作轨迹。Flume是大数据日志采集常用的工具。Flume最初由Cloudera开发,后来捐赠给Apache基金会作为开源项目运行。3、前端程序埋点所谓前端埋点,就是应用前端收集数据,进行数据统计和分析。用户某些前端行为不会产生后端请求,如用户页面停留时间、用户浏览速度、用户点击取消等。这些信息对于分析用户行为等是有价值的,但是这些数据必须通过前端埋点获取。一些互联网公司会把前端埋点数据作为最重要的大数据来源。数据仓库,然后是数据分析和挖掘。对于互联网应用,当我们提到前端时,可能指的是以下几类:App程序,例如安装在用户手机或平板电脑上的iOS应用或Android应用;PCWeb前端,用PC浏览器打开;H5前端,移动设备浏览器打开;微信小程序,在微信中打开。这些不同的前端使用不同的开发语言开发,运行在不同的设备上。每种前端都需要解决自己埋下的问题。埋点的方法主要有人工埋点、自动埋点和目测埋点。手动埋点是指前端开发人员手动编程将前端需要采集的数据发送到后端数据采集系统。通常公司会开发一些前端数据上报的SDK。前端工程师在需要嵌入的地方调用SDK,根据接口规范传入相关参数,如ID、名称、页面、控件等通用参数,以及业务逻辑数据等。SDK发送这些数据通过HTTP发送到后端服务器。自动埋点是通过前端程序SDK自动采集所有用户操作事件,然后完整上传到后端服务器。自动点跟踪有时也称为无跟踪点,意思是不需要跟踪点。其实就是全追踪点,即所有的用户操作都被追踪收集。自动埋点的优点是开发工作量小,数据规范统一。缺点是采集的数据量大,采集了很多数据不知道有什么用,白白浪费了计算资源,尤其是对流量敏感的移动端用户,因为自动埋点采集和上传会消耗大量流量。因此,成为卸载应用程序的理由,得不偿失。在实践中,有时只是针对部分用户自动埋点,抽取一部分数据进行统计分析。在人工埋点和自动埋点之间,还有一种解决方案就是目视埋点。可视化配置需要埋点哪些前端操作,根据配置采集数据。可视化埋点实际上是可以人工干预的自动化埋点。4、爬虫系统通过网络爬虫获取外部数据,用于行业数据支撑、管理决策等,由于涉及敏感内容,不再做进一步开发。2.数据处理大数据平台的核心分为离线计算和实时计算两种。1、离线计算MapReduce、Hive、Spark等计算处理。2、实时计算通过Storm、SparkSteaming等流式大数据引擎进行,可在秒级甚至毫秒级完成计算。3、数据输出大数据处理和计算产生的数据写入HDFS,但应用程序不会从HDFS读取数据,所以HDFS中的数据必须导出到数据库。大数据平台除了向用户提供数据外,还需要向一些后端系统中的运营层和决策层提供各种统计数据。这些数据也被写入数据库并被相应的后端系统访问。4.任务调度管理将以上三部分进行有效整合和运行的任务调度管理系统。其主要功能有:合理调度各种MapReduce和Spark任务,使资源利用最合理尽快执行临时重要任务提交作业大数据平台任务调度管理系统,具有进度跟踪、数据查看等简单功能其实是一个类似于Crontab的定时任务系统,在预设的时间启动不同的大数据作业脚本。复杂大数据平台的任务调度还需要考虑不同作业之间的依赖关系。开源的大数据调度系统有Oozie,也可以在此基础上进行扩展。以上就是大数据平台整体架构的介绍。下一篇文章将重点介绍大数据平台的安全问题,敬请期待~
