1
概述
随着大数据时代的到来,大家可以更容易、更多的去获取丰富的数据。数据正在、或者已经源源不断的发挥其巨大的价值。大数据架构无外乎三大项工作:数据采集、数据处理和数据分析。
让数据发挥价值、以数据来驱动业务,你面临第一个问题就是大数据从那里来,巧妇难为无米之粥,你应该要知道企业的大数据在那里,应该用什么方式及时获取到。
2
面临的挑战
企业的业务增长越来越快后,如果缺乏统一而长期的规划和战略后,会搭建起各种各样的软件系统、平台,各类异构的系统平台,各类系统和数据库中积累了大量的业务和客户数据。
首先数据采集有较多挑战:
3
数据源
3.1 业务系统
金融公司的业务数据包括了交易平台、产品平台、帐户平台、用户管理、信贷平台、风控平台、反欺诈平台、运营、线下管理等场景数据,每个场景的数据都存在着众多复杂的业务逻辑。
公司的业务数据都分散在多个系统里,绝大部分多为结构化的业务数据,同时也包括报文、电子合同、身份证影像、银行卡影像、视频和语音等非结构化数据。
一般来说业务数据我们使用实时和离线数据处理平台来将数据抽取到数据仓库中。然后再进行后续数据处理和分析。
3.2 移动端
前端平台包括PC网页、H5页面、APP、公众号、生活号和小程序等平台。
现在移动化时代主要是APP和H5浏览器,基于这两个使用场景主要是日志采集方案。
3.3 业务日志
业务系统由数以百、千甚至更多的微服务构成,每个前端请求路由过来后,会经过后端多个业务系统留下足迹,业务处理流程中会访问redis、工作流、规律引擎、DB等请求,后台会根据日志级别打印大量的业务和系统日志。
实时的业务数据也可以打印到日志平台,然后采集后台日志来获取实时业务数据。
3.4 互联网
大家都可能听过一句话,整个互联网上大概有50%以上的流量都是爬虫产生的。现在用户相当长的时间或者绝大部分碎片时间都贡献给互联网上了。
你首先需要知道你的用户都是什么样子,什么年龄段、什么职位、收入大概多少、大概出现在什么地点?
这样你就可以知道你应该去什么地方寻找或者爬取你的数据。
4
采集方案
4.1 T+1数据抽取
1、使用Sqoop从业务数据直接导入HIVE,导入频率也可以设为2小时一次,但对生产库有影响,可以考虑从mysql备库导入。
2、自己写工具导入HIVE。
4.2 实时数据抽取
基于开放互联网的业务系统基本都使用的是Mysql,可以通过Canal分析mysql的bilog日志实现数据实时接入。
原理为数据库的主从复制模式,通过伪装从库的方式,把关系型数据库的Binlog日志实时抓取并解析发送到大数据平台里。
4.3 H5埋点
1、日志采集
浏览器的日志采集方式,首先需要在统计页面日志的页面中预先植入一段JavaScript脚本,当页面被浏览器加载时,会执行该脚本。脚本中预设了一些采集需求,包括收集页面信息、访问信息(访次、上下文)、业务信息、运行环境信息(浏览器信息、访问时间、访问地址)等信息。日志采集脚本在被执行后,会向服务器端发送一条HTTPS的请求,请求内容包含了收集到的日志信息。
2、服务器日志接收
日志服务器在成功接收到浏览器发送的日志请求后,立刻向浏览器发送一个请求成功的响应,日志请求的响应不影响页面的加载。日志服务器在接收到日志请求后,会对日志请求进行分析处理,包括判断其是否为爬虫、是否为刷流量行为、是否为恶意流量、是否为正常的日志请求等,对日志请求进行屏蔽和过滤,以免对下游解析和应用造成影响。
3、日志存储
服务器接收到日志请求后,会依据请求的内容及约定的格式对其进行格式化落地。例如,当前页面、上一页面、业务信息、浏览器等信息以特定的字段标识,字段之间使用特定的分隔符,整条日志以特定的格式记录下来。结合业务的时效性需求,将日志分发到实时平台或者落地成离线文件。
经过数据的收集(采集—上报—接收—存储),我们将用户在浏览器端的行为日志实时记录下来。除植入代码人工干预外,可以保证数据的准确性,数据的过滤和筛选保证了异常流量的干扰,格式化数据方便了后续的数据解析处理。
4.4 APP埋点
埋点可以根据埋点工具的方式划分,可以分为三种类型:代码埋点,可视化埋点和全埋点,现在三种实现方式的工具都有,这三种方式都各有优缺点。
4.4.1 代码埋点
可以使用第三方工具的SDK来进行埋点,也可以自己开发采集工具。在需要采集数据的地方添加跟踪代码,当用户点击或触发数据采集位置的时候就会调用对应的数据接口把数据发送出去。可以单次或批量数据压缩后发送。
准确度和精准度都比较度,如果公司开发能力比较强,建议采用这种方案,掌握力度和扩展性都比较强。
4.4.2 可视化埋点
开发者无需再对追踪点进行埋码,甚至产品经理就可以进行配置,使用第三方工具,只需面对应用界面圈圈点点即可追加随时生效的事件数据点。将核心代码与资源配置分开,当APP启动的时候从服务端更新配置和资源,APP根据新的配置和资源上报数据。
部署和应用简单,不需要开发。问题就是不够灵活,而且部分数据和覆盖面不够全面。
4.4.3 全埋点
不需要埋点,已经尽可能的收集所有控件的数据。在APP中嵌入第三方SDK,这个SDK就会将APP中尽可能多的操作都采集下来,可以通过可视化操作界面对采集的数据做分类,基本上是先收集,后面再对数据进行二次加工。
收集数据较多,而且对前端APP、后端传输都带来压力,一般不建议使用此方案。
4.5 服务端日志埋点
通过日志Flume+kafka然后实时分析或者直接存入hdfs。使用Kafka源将Kafka主题中的数据流式传输到Hadoop。Kafka源可以与任何Flume接收器结合使用,可以方便地将Kafka数据写入数据仓库或大数据实时处理平台。
Kafka将消息以topic为单位进行归集,producer向kafka发布消息,consumer消费消息。客户端和服务端通过TCP协议通信。
Flume和Kafka都是成熟的日志系统,其都能实现数据采集、数据传输、负载均衡、容错等一系列的功能。
4.6 爬虫
合规的使用爬虫去抓取很多有用的数据,比如百度贴吧、金融门户网站等数据,来扩充公司强大的数据体系和数据宽度。
金融业务爬虫平台的几种典型应用:
5
小结
数据采集是实现大数据平台架构的第一步,最为重要和关键。我们首先要分析数据分布的地点,然后尽有可能、全面、高效、高质量的把数据采集下来,前端采集的数据越全面、质量越高,后面的工作才会越有成效和高效。
高速发展的业务目标需要精准的数据分析来驱动,精准的数据分析需要高质量的大数据。
END
领取专属 10元无门槛券
私享最新 技术干货