下面是大数据体系架构图
大数据分2个部分,一部分是走实时的,另外一部分是走离线的,不管那块都需要数据来分析
从上图来看,数据分为结构化数据(MYSQL,ORACLE等),半结构数据(文件日志),非结构化数据(视频,PPT等)
我们一般需要分析的数据 就是结构化的数据和非结构化的数据,非结构化数据可以存HDFS系统。
很多专业的东西后面在开博客另讲,先大概了解数据流走向。
1,数据收集系统。
首先我们要坐的就是收集数据,像数据库中的数据我们可以通过Sqoop(通过SHELL命令连接数据库实现 MYSQL,HIVE(可以通过HQL将HDFS中的数据通过表形式呈现出来)和HDFS(分布式文件系统)间的通信)来收集,这种我们可以通过用azkaban(分布式工作流调度)来定时调度每天讲MYSQL数据导入到HDFS和HIVE中,这部分数据方便我们坐离线计算。
像一些商品查询,用户登陆等查询操作,又或者是要计算实时交易等(直接操作数据库会影响数据库性能),这些东西就可以走日志收集这块,可以在前端埋点和后端埋点,记录日志,然后在通过flume收集,发送到KAFKa和HDFS(HIVE)中.这部分的数据可以走实时(flink消费kafka中的数据进行流式计算),可以走离线计算(一般第二天凌晨和mysql数据结合统计一些报表)
2,数据离线分离。
数据离线分析,离线分析大概分4层,
去除空值,脏数据,超过极限范围的明细解析等)
DWS:数据仓库服务层:宽表-用户行为,轻度聚合,对dwd层的数据在进行处理轻度汇总
ADS: 做分析处理最后将同步到mysql数据库里边,给其他应用展示
大概流程和使用的技术。像每天,每周等报表,azkaban定时调度,通过HIVE脚本对每天的ODS数据进行离线分析处理
慢慢到DWD,DWS,ADS,最后同步到数据库。
3,数据实时计算。
有些公司需要看一些实时数据,比如商品的访问量,用户登陆情况,实时交易额等。这些数据有些从数据库中查询不到(商品访问,用户登陆),有些数据库有但是统计复制,慢(实时交易量,订单数等),这些数据就可以走实时统计。
像1说的,可以通过数据埋点,在这些需要计算的地方埋点(就是记录日志,将需要的数据写到日志),最后通过FLUME手机汇总,最后到kafka,flink通过消费KAFKA的数据来消费这些日志,通过FLINK的流式计算,中间也像离线一样分ODS,DWD,ADS,最后讲结果写到数据库,整个流程虽然不是毫秒级,但也是亚秒级别的。
上面就是整个大数据的流程和需要用的技术。
flume 日志收集传输框架 专门也来对接HDFS,也可以对接KAFKA等。
hadoop体系: HDFS 分布式文件存储系统 , YARN:基于hadoop的分布式资源调度, MAPREDUCE:基于hadoop的分布式计算应用 (像HIVE就是基于YARM向执行一个一个的MAPREDUCE)
kafka 消息队列,高吞吐,稳定,缓存数据的
zookeeper 保证大数据中的一些框架的高可用
sqoop:主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递
azkaban:工作流调度系统,可以按定义的逻辑一步一步先后执行脚本和JAVA程序(包括sh,java)
hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能,其实就是通过mapreduce来操作数据。
flink:是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算,通过流式计算。(暂时没跑通)