常用数据采集手段

常用数据采集手段

  • 埋点——用户行为数据采集
    • 埋点方式
    • 埋点采集数据的过程
    • 常规埋点示例
    • 埋点方案应具备四个要素
    • 常用埋点APP数据分析工具
  • ETL——系统业务数据整合
    • 常用的ETL工具
  • 网络爬虫——互联网数据采集
    • 网络爬虫工作流程
    • 网络爬虫抓取策略
    • 网络爬虫系统架构
    • 网络爬虫定期更新策略
  • Apache Flume——日志数据采集
  • Apache Kafka——数据分发中间件
  • 其他

埋点——用户行为数据采集

  1. 埋点技术:收集用户在产品上面的点击和浏览情况,用于运营分析。隐性的信息收集。
  2. 埋点:在正常的业务逻辑中,嵌入数据采集的代码。
  3. 弊端:可能会被用户认为侵犯隐私。
  4. 埋点优势:数据是手动编码产生的,易于收集,灵活性大,扩展性强。
  5. 埋点劣势:必须十分清楚目标,需要什么样的数据必须提前确定;容易发生漏埋现象;产品迭代过程中 ,忽略了埋点逻辑的更改。

埋点方式

  1. 全埋点/无埋点:“全部采集,按需选取”;在产品中嵌入SDK,做统一埋点,一般用于采集APP的用户行为。(百度统计——基于无埋点技术的第三方统计工具)
  2. 可视化埋点:在全埋点部署成功、可以获得全量数据的基础上,以可视化的方式,在对应页面上定义想要的页面数据,或者控制数据。
  3. 代码埋点:前端代码埋点和后端代码埋点。更适合精细化分析的场景,采集各种细粒度数据。(适合技术人员,前两种适合市场和运营人员)

埋点采集数据的过程

评估解决方案的
效果
需求收集和分析
确定场景和目标
针对需求制定数
据采集规划方案
埋点采集数据的
具体措施
数据质量的评估
及数据分析
设计优化方案
实施优化方案

常规埋点示例

常用数据采集手段_第1张图片

埋点方案应具备四个要素

  • 确认事件与变量:事件指产品中的操作,变量指描述事件的属性。按照产品流程来设计关键事件。
  • 明确事件的触发时机:不同触发时机代表不同的数据统计口径,要尽量选择最贴近业务的统计口径,然后再与开发沟通。
  • 规范命名:对事件进行规范统一的命名,有助于提高数据的实用性及数据管理效率。
  • 明确优先级:在设计埋点方案时,一定要对埋点事件有明确的优先级排布。

常用埋点APP数据分析工具

  • Growinglo
  • 百度移动统计
  • 神策分析
  • 腾讯移动分析
  • 谷歌GA

ETL——系统业务数据整合

  1. ETL的概念:用来描述将数据从来源端经过抽取(extract)、(清洗)转换(transform——按照数据规则进行清洗转换,花费时间最长一般是整个ETL的2/3)、加载(load——加载至数据仓库或进行可视化展示)至目的端的过程。
  2. 常用的三种实现方式----借助ETL工具、SQL方式实现、ETL工具和SQL相结合。
  3. ETL工具解决的问题:数据来自不同的物理主机、数据来自不同的数据库或者文件、异构数据处理等。

常用的ETL工具

  1. Kettle:一款国外开源的ETL工具,纯java编写,数据抽取高效稳定(数据迁移工具)。
  2. Apatar:开源ETL项目,模块化架构,支持所有主流数据源,提供灵活的基于GUI、服务器和嵌入式的部署选项。
  3. Scriptella:一个开源的ETL工具和一个脚本执行工具,支持跨数据库的ETL脚本。
  4. ETLAutomation:提供了一套ETL框架,重点是提供对ETL流程的支持。

网络爬虫——互联网数据采集

网络爬虫:是一种按照一定的规则,自动抓取万维网信息(网页)的程序或者脚本。为搜索引擎从万维网上抓取网页,是搜索引擎的重要组成部分。
常用数据采集手段_第2张图片

网络爬虫工作流程

网络爬虫可分为通用网络爬虫和聚焦网络爬虫

  1. 通用网络爬虫基本工作流程

常用数据采集手段_第3张图片

  1. 聚焦网络爬虫基本工作流程(通过增加新模块实现有目的的爬取)
    相比通用网络爬虫新增目标定义、无关链接过滤、下一步要爬取的连接三个模块。
    常用数据采集手段_第4张图片

网络爬虫抓取策略

  1. 深度优先遍历策略:从起始页开始,一个个链接跟踪下去。
  2. 宽度优先遍历策略:抓取当前网页中链接的所有网页,再从待抓取队列中选取下一个URL。
  3. 反向连接数策略:反向链接数是指一个网页被其他网页链接指向的数量。使用这个指标评价网页的重要程度,从而决定抓取先后顺序。
  4. ** 基于优先级计算的策略**:针对待抓取网页计算优先级值,通过排序来确定抓取顺序。
  5. 大站优先策略:对于待抓取队列中的所有网页,根据所属的网站进行分类,对于待下载页面数多的网站优先下载。

网络爬虫系统架构

往往是一个分布式系统

  • 主从式系统架构(若master不工作可能会造成 整个系统瘫痪)
  • 对等式系统架构(扩展性不好)改进:基于一致性哈希运算(1997年由麻省理工学院提出,一般用来解决分布式系统中负载均衡问题),将URL的主域名映射为一个指定范围内的某个数,根据 事先的分配策略,判断由哪台服务器来进行抓取该URL。
    常用数据采集手段_第5张图片

网络爬虫定期更新策略

  1. 历时参考策略:在网页的的历时更新数据基础上,利用建模等手段,预测网页下一次更新的时间,确定爬取周期。
  2. 用户体验策略:依据网页多个历史版本的内容更新,搜索质量影响、用户体验等信息,来确定爬取周期。
  3. 聚类分析策略:首先对海量的网页进行聚类分析,每个类中的网页一般有类似的更新频率。通过抽样计算,确定针对每个聚类的爬取频率。
    简单代码示例:
# 第一个爬虫示例,爬取百度页面
import requests  #导入爬虫库
response = requests.get("https://www.baidu.com")    #生成一个response对象
response.encoding = response.apparent_encoding  #设置编码格式
print("状态码:"+ str(response.status_code))    #打印状态码
print(response.text)    #输出爬取信息

#抓取图片保存到本地
import requests #导入爬虫库
response = requests.get(https://www.baidu.com/ing/baidu_jgylogo3.gif)   #用get得到图片
file = open("baidu_logo.gif","wb")  #打开一个文件,wb表示以二进制格式打开一个文件只用于写入
file.write(response.content)    #写入文件
file.close()    #关闭操作

Apache Flume——日志数据采集

分布式、可靠、和高可用的海量日志采集、聚合和传输的日志收集系统。
初始版本Flume—OG基本结构
常用数据采集手段_第6张图片第二代Flume—NG基本架构
常用数据采集手段_第7张图片 - Event:Flume数传输的基本单元,由可选的header和载有数据的byte array勾陈,byte array可以携带日志数据。

  • Client:将原始日志文件包装成Events并发送它们到一个或多个Agent实体,由独立的线程运行。
  • Agent:Flume的运行实体,包含Source,Channel,Sink等组件。利用这些组件将Events从一个节点传输到另一个节点或最终目的地。每台机器运行一个Agent。
    - Source:负责接收Event或通过特殊机制产生Event,并将Events批量的放到一个或多个Channel。
    - Channel:连接Source和Sink,类似event的缓存队列。
    - Sink:接收Event,进行下一步转发。

Apache Kafka——数据分发中间件

  • 前端数据采集后,需要送到后端进行分析处理。前端采集与后端处理往往是多对多的关系。之间需要分发中间件负责消息转发、保障消息可靠性、匹配前后端速度差。
  • 消息队列是在消息传输过程中保存消息的容器或中间件,主要目的是提供消息路由并保障消息可靠传递。目前常见的消息队列中间件产品包括:ActiveMQ、ZeroMQ、RabbitMQ和Kafka。一般消息中间件支持两种模式:消息队列模式及Pub-Sub(发布订阅)模式。
  • Kafka:分布式发布-订阅消息系统,最初由Linkedln公司开发,之后成五日Apache项目的一部分。具有极高的消息吞吐量,较强的可扩展性和高可用性,消息传递低延迟,能够对消息队列进行持久化保存,且支持消息传递的“至少送达一次”语义。
    常用数据采集手段_第8张图片
  • Topics是消息的分类名(或Feed的名称),一个Topic可以认为是一类消息,每个Topic将被分成多个Partition(区)。Partition是以log文件的形式存储在文件系统中,任何发布到Partition的消息都会被直接追加到log文件的尾部。Logs文件根据配置要求保留一定时间后删除来释放磁盘空间。
  • Partition:Topic物理上的分分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。
    常用数据采集手段_第9张图片
  • Producer将消息发布到制定的Topic中,同时Producer也能决定将此消息归属于哪个Partition。消息和数据生产者,向Kafka的一个topic发布信息的过程称为producer。
  • consumer:消息和数据的消费者,订阅相关topics,并处理Producer发布的消息。运行consumer group(包含多个consumer)对一个topic进行消费,不同的consumer group 之间独立订阅。每个consumer属于一个consumer group,发布的消息,只会被订阅此topic的每个group中的一个consumer消费。同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。
  • Broker:缓存代理,Kafka集群中的一台或多台服务器统称为broker。
  • Message消息:是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。
  • 常用数据采集手段_第10张图片常用数据采集手段_第11张图片

其他

探针——网络流量数据捕获、传感器——环境数据捕获、RFID Reader——标签数据捕获……

你可能感兴趣的:(大数据分析技术学习笔记,大数据,数据分析)