目录
1. 关于数据的拉取
数据是从哪里来,怎么来的,去往哪里
用户请求的数据(手机端APP,web端,微信小程序),通过总的nginx反向代理(负载均衡)发送到本地的nginx,flume把日志服务器数据拉取到HDFS上。交由hive进行管理,因为原始数据是普通文本文件,而文本文件内容是json格式的一条一条记录,在创建hive表结构进行映射时,将数据按照json格式进行映射。(需要外部工具包JsonSerDe的支持)
而我们知道数据是如何进行,同时需要写个脚本每天定时去跑(#! /bin/bash 里面有hive环境配置,前一天时间的设置$(date -d'-1 day' +'%Y-%m-%d') ,加载数据,执行它,然后判断任务执行是否成功,通过发送邮件)
数据类型:
业务数据:一般存放在MySQL,oracle中,结构化的数据
埋点行为数据:一般存放在日志服务器中,以日志文件的形式存储
比如用户触发了一个行为,行为就会通过这个埋点(埋点其实就是一段代码,他有可能在前端,也有可能在后端),监听/检测有没有触发行为,如果触发这个行为,就会通过终端代码生成一条日志,记录你这次的行为信息,写在日志文件中。
流程:
存储流程:
通过nginx不同的放在业务数据库MySQL集群和日志服务器上。业务数据通过DataX,日志数据通过flume,采集到数据存放在HDFS。由hive继续管理,将数据放在ods层。
查询流程:
查询数据时,通过MySQL集群或者即席查询,不通过HDFS,因为HDFS有延迟性,其它的查询快,而且用户可以根据自己的定制化去查询自己需要的内容。查完之后进行BI展示。
数据采集传输:
Flume:收集日志数据,行为数据的采集。他只能采集本身,本地的数据,也就是日志在哪,flume就在哪。
Kafka:消息中间件
DataX:各种异构数据源之间稳定高效的数据同步功能 可以对关系型和非关系型数据进行采集
Sqoop:用于在 Hadoop 和关系数据库、数据仓库、No SQL 系统间传递数据。
Logstash:就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
数据存储:
MySQL:去存一些要展示的数据 因为它本身查询比较快
HDFS:可以去存整个数仓的数据或者需要计算的数据,本身他查询就具有延迟性。
HBase:可以替代MySQL,查询速率很快
数据计算:
Hive:整个数仓的一个管理工具,对数仓内任何数据的管理与处理都是经过hive来做的
可以使用其他计算引擎来替换hive中的计算引擎,但都是由hive来管理