现代商业市场是一个数据驱动的环境,能够说不论技术怎么更新换代,数据都有着不可替代的地位,并且抛开数据谈大数据就是瞎扯,没有数据做支撑的大数据平台就是一个空壳。不管是公司内部的数据仍是外部的数据均可以构成咱们大数据平台的来源数据,大数据平台的数据来源主要有数据库、日志、前端埋点、爬虫。前端
1 从数据库导入数据库
在大数据技术风靡起来前,关系型数据库(RDMS)是主要的数据分析与处理的途径。发展至今数据库技术已经至关完善,当大数据出现的时候,行业就在考虑可否把数据库数据处理的方法应用到大数据中,因而 Hive、Spark SQL 等大数据 SQL 产品就这样诞生。服务器
虽然出现 Hive 大数据产品,可是在生产过程当中业务数据依旧使用 RDMS 进行存储,这是由于产品须要实时响应用户的操做,在毫秒级完成读写操做,而大数据产品不是应对这种状况出现的。到这里你可能就有一个疑问,如何把业务的数据库同步到大数据平台中?通常来讲业务数据咱们使用实时和离线采集数据来将数据抽取到数据仓库中。而后再进行后续数据处理和分析,一些常见的数据库导入工具备 Sqoop、Datax 和 Canal 等。函数
Sqoop 是 Apache 旗下一款 Hadoop 和关系型数据库之间传送离线数据的工具。实现关系型数据库(MySQL 、Postgres 等)同 Hadoop 集群的 Hdfs、Hbase、Hive 进行数据同步, 是链接传统关系型数据库和 Hadoop 的桥梁。datax 与 sqoop 相似也是进行离线数据传输,支持阿里数据库系列数据同步。工具
Canal 则是经过读取 MySql的 BinLog 日志 实时传输数据到大数据平台,实现数据的实时介入。oop
2 日志导入大数据
日志系统将咱们系统运行的每个情况信息都使用文字或者日志的方式记录下来,这些信息咱们能够理解为业务或是设备在虚拟世界的行为的痕迹,经过日志对业务关键指标以及设备运行状态等信息进行分析。日志
Apache Flume 是大数据日志收集经常使用的工具。从图中能够看出 Flume 运行的核心是 Agent,以 Agent 为最小的独立运行单位。Agent 主要由三个组件:Source,Channel、Sink。blog
Source: 收集数据,封装数据为事件(Event)后发送到 Channel,数据来源能够是企业服务器、文件系统、云、数据存储库等。排序
Channel: 一般,读取速度比写入速度快。所以,咱们须要一些缓冲区来匹配读写速度差别。基本上,Channel 提供一个消息队列的功能,用于存储 Source 发送的事件,对事件进行消息排序,发送到 Sink。
Sink: 从 Channel 收集数据,将数据输送大数据存储设备,好比 HDFS、Hive、Hbase 等,Sink 也能够做为新的 Source 输入源,两个Agent 进行级联,根据需求开发各类处理结构。
3 前端埋点
为何须要埋点?如今的互联网公司愈来愈关注转化、新增、留存,而不是简单的统计 PV、UV。这些分析数据来源经过埋点获取,前端埋点分为三种:手工埋点、可视化埋点、自动化埋点。
手工埋点:
前端须要返回数据的位置调用写好的埋点 SDK 的函数,按照规范传入参数经过 Http 方式传入后代服务器中。这种方式能够下钻并精准采集数据,但工程量巨大。
自动化埋点:
也叫无埋点,便是无需埋点,在所有位置都设置埋点,对用户全部操做进行采集,这种方式经过统一的 SDK 返回数据,再选择须要的数据进行分析,这种方式加大服务器的压力,采集许多不须要的数据,浪费资源。在实践中,能够采用对部分用户或者部分简单操做页面进行全埋点采集。
可视化埋点:
是介于手工埋点和自动化埋点之间方式,经过可视化交互设置埋点,能够理解为人为干预的自动化埋点形式。
那如何选择埋点方式?对于一个按钮,若是采用可视化埋点或者自动化埋点时,能够轻易采集用户什么时候点击按钮,对于须要运行获取得到的数据是没法采集,好比订单的商品详细信息等,对这种状况应该采用手动埋点处理采集。对此,埋点问题不该该经过单一的技术方案来解决,在不一样场景下咱们须要选择不一样的埋点方案。
4 爬虫
时至至今, 爬虫的数据成为公司重要战略资源,经过获取同行的数据跟本身的数据进行支撑对比,管理者能够更好的作出决策。并且越难爬虫获取竞争对手的数据,对于公司来讲是越有价值。
小结
数据采集自己不是目的,只有采集到的数据是可用、能用,且能服务于最终应用分析的数据采集才是根本。数据采集的科学性决定了这个数据分析报告是否是有使用价值。只有当数据采集具备科学性、客观、严密的逻辑性时,创建在这样的数据分析基础之上的的出来的结论才具备现实的价值和意义。