一:离线数据的采集流程

1、我们的数据从哪里来?

互联网行业:网站、app、微信小程序、系统(交易系统。。)
传统行业:电信,人们的上网、打电话、发短信等等数据
数据源:网站、app、微信小程序
都要往我们的后台去发送请求,获取数据,执行业务逻辑;app获取要展现的商品数据;发送请求到后台进行交易和结账

网站/app会发送请求到后台服务器,通常会由Nginx接收请求,并进行转发

2、后台服务器

比如Tomcat、Jetty;但是,其实在面向大量用户,高并发(每秒访问量过万)的情况下,通常都不会直接是用Tomcat来接收请求。这种时候,通常,都是用Nginx来接收请求,并且后端接入Tomcat集群/Jetty集群,来进行高并发访问下的负载均衡。
比如说,Nginx,或者是Tomcat,你进行适当配置之后,所有请求的数据都会作为log存储起来;接收请求的后台系统(J2EE、PHP、Ruby On Rails),也可以按照你的规范,每接收一个请求,或者每执行一个业务逻辑,就往日志文件里面打一条log。

到这里为止,我们的后台每天就至少可以产生一份日志文件,这个是没有疑问了

3、日志文件

(通常由我们预先设定的特殊的格式)通常每天一份。此时呢,由于可能有多份日志文件,因为有多个web服务器。
再者,不同的业务数据放在不同的日志文件中,所以会存在很多种日志文件

一个日志转移的工具,比如自己用linux的crontab定时调度一个shell脚本/python脚本;或者自己用java开发一个后台服务,用quartz这样的框架进行定时调度。这个工具,负责将当天的所有日志的数据,都给采集起来,进行合并和处理等操作;然后作为一份日志文件,给转移到flume agent正在监控的目录中。

4、Flume

flume,按照我们上节课所讲的;flume agent启动起来以后,可以实时的监控linux系统上面的某一个目录,看其中是否有新的文件进来。只要发现有新的日志文件进来,那么flume就会走后续的channel和sink。通常来说,sink都会配置为HDFS。

flume负责将每天的一份log文件,传输到HDFS上

5、HDFS

Hadoop Distributed File System。Hadoop分布式文件系统。用来存储每天的log数据。为什么用hadoop进行存储呢。因为Hadoop可以存储大数据,大量数据。比如说,每天的日志,数据文件是一个T,那么,也许一天的日志文件,是可以存储在某个Linux系统上面,但是问题是,1个月的呢,1年的呢。当积累了大量数据以后,就不可能存储在单机上,只能存储在Hadoop大数据分布式存储系统中。

使用Hadoop MapReduce,自己开发MR作业,可以用crontab定时调度工具来定时每天执行一次;也可以用Oozie来进行定时调度;也可以(百度、阿里、腾讯、京东、美团)自己组建团队来研发复杂、大型、分布式的调度系统,来承担全公司所有MapReduce / Hive作业的调度(对于大型公司来说,可能每天除了负责数据清洗的MR作业以外,后续的建立数据仓库、进行数据分析和统计的Hive ETL作业可能高达上万个,上十万、百万个),针对HDFS里的原始日志进行数据清洗,写入HDFS中另外一个文件

6、数据清洗

Hadoop HDFS中的原始的日志数据,会经过数据清洗。为什么要进行数据清洗?因为我们的数据中可能有很多是不符合预期的脏数据。
HDFS:存储一份经过数据清洗的日志文件。

把HDFS中的清洗后的数据,给导入到Hive的某个表中。这里可以使用动态分区,Hive使用分区表,每个分区放一天的数据。

7、Hive

Hive,底层也是基于HDFS,作为一个大数据的数据仓库。数据仓库内部,再往后,其实就是一些数据仓库建模的ETL。ETL会将原始日志所在的一个表,给转换成几十张,甚至上百张表。这几十,甚至上百张表,就是我们的数据仓库。然后呢,公司的统计分析人员,就会针对数据仓库中的表,执行临时的,或者每天定时调度的Hive SQL ETL作业。来进行大数据的统计和分析。

Spark/Hdoop/Storm,大数据平台/系统,可能都会使用Hive中的数据仓库内部的表

总结:

其实,通常来说,都会针对Hive中的数据来进行开发。也就是说,我们的大数据系统,数据来源都是Hive中的某些表。这些表,可能都是经过大量的Hive ETL以后建立起来的数据仓库中的某些表。然后来开发特殊的,符合业务需求的大数据平台。通过大数据平台来给公司里的用户进行使用,来提供大数据的支持,推动公司的发展

二:实时数据的采集流程

1、数据来源:

比如,网站或者app。非常重要的一点,就是埋点。也就是说,埋点,在网站/app的哪个页面的哪些操作发生时,前端的代码(网站,JavaScript;app,android/IOS),就通过网络请求,(Ajax;socket),向后端的服务器发送指定格式的日志数据。

2、后台服务器Nginx

后台Web服务器(Tomcat、Jetty),后台系统(J2EE、PHP)。到这一步为止,其实还是可以跟我们之前的离线日志收集流程一样。走后面的通过一个日志传输工具,给放入指定的文件夹。

3-1、HDFS

flume,监控指定的文件

Kafka,我们的日志数据,怎么处理,都是由你自己决定。可以每天收集一份,放到flume,转移到HDFS里面,清洗后放入Hive,建立离线的数据仓库。
也可以每收集1分钟的数据,或者每收集一点数据,就放入文件,然后转移到flume中去,或者直接通过API定制,直接把一条一条的log打入flume。可以配置flume,将数据写入Kafka

3-2(1)、实时  Nginx—>Flume—>Kafka

3-2(2)、实时  Nginx—>Kafka (现阶段下采用的新架构体系)

实时数据,通常都是从分布式消息队列集群中读取的,比如Kafka;实时数据,实时的log,实时的写入到消息队列中,比如Kafka;然后呢,再由我们后端的实时数据处理程序(Storm、Spark Streaming),实时从Kafka中读取数据,log日志。然后进行实时的计算和处理。Kafka

实时的,主动从Kafka中拉取数据

5、大数据实时计算系统

比如说用Storm、Spark Streaming开发的,可以实时的从Kafka中拉取数据,然后对实时的数据进行处理和计算,这里可以封装大量复杂的业务逻辑,甚至调用复杂的机器学习、数据挖掘、智能推荐的算法,然后实现实时的车辆调度、实时推荐。

广告流量的实时统计

数据采集的大致流程(离线和实时)相关推荐

  1. 数仓建设(离线和实时)

    文档大纲: 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先来谈数仓架构,"架构"是什么?这个问题从来就没有一个准确的答案.这里我们引用一段话:在 ...

  2. 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下

    文档大纲: 本文上半部分之前已经发过了,传送门:50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上 此篇文章是整个文档的下半部分,将接着上半部分从第五章开始. 五.实时数仓建设核心 ...

  3. 今天说说OPPO——OPPO 实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移

    摘要:单日总数据处理量超 10 万亿,峰值大概超过每秒 3 亿,OPPO 大数据平台研发负责人张俊揭秘 OPPO 基于 Apache Flink 构建实时数仓的实践,内容分为以下四个方面: 建设背景 ...

  4. OPPO实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移

    一.建设背景 关于 OPPO 移动互联网业务 大家都认为 OPPO 是一家手机公司,但大家可能并不清楚,其实 OPPO 也会做与移动互联网相关的业务.在 2019 年 12 月,OPPO 发布了自己定 ...

  5. hive 行转列和列转行的方法_读离线和实时大数据开发实战,为你揭开 Hive 优化实践的神秘面纱...

    前言 「1024,1GB,一级棒!程序仔们节日快乐!」 ❝ 指尖流动的 1024 行代码,到底是什么? ❞ ❝ 是10行的迷茫?是101行的叛逆?是202行的理性思考?是307行对渴望的冲动?还是40 ...

  6. 第十八章_后端架构选型、离线及实时计算

    文章目录 第十八章_后端架构选型.离线及实时计算 18.1 为什么需要分布式计算? 18.2 目前有哪些深度学习分布式计算框架? 18.2.1 PaddlePaddle 18.2.2 Deeplear ...

  7. UniAPP离线车牌实时扫描识别

    插件说明 Android离线车牌实时扫描识别 标签:车牌实时识别 车牌离线识别 车牌实时扫描 车牌离线扫描 车牌实时离线识别 车牌实时离线扫描 特点: 1.使用方便,引入即可: 2.响应快速,原生体验 ...

  8. Renderbus瑞云渲染正式支持UE云渲染!离线渲染+实时渲染=渲染起飞!

    2022年已经到了尾声,回顾今年CG圈里最具讨论性的话题,除了AI绘图,就是虚幻引擎了,这两者如同一股风潮,从概念创意到后期制作,一路以"席卷"之势影响到了视觉领域的各个行业. R ...

  9. 《离线和实时大数据开发实战》(二)大数据平台架构 技术概览

    前言 接着上一章 构建大数据开发知识体系图谱,本次继续分享邦中老师的<离线和实时大数据开发实战>读书笔记 .到底什么样的平台才能算是大数据平台呢?带着这个问题,我们开始今天的内容 ( •̀ ...

  10. Postmaster主循环的大致流程

    postmaster.c 中,主循环的大致流程如下: /* * Main idle loop of postmaster */ static int ServerLoop(void) { ...... ...

最新文章

  1. 进口网友讨论:是什么让你继续支持并持有BCH?
  2. 使用SQL Server存储ASP.NET Session变量
  3. 收藏 | 综述:目标检测二十年
  4. 怎么把arraylist集合的值放在实体类的属性了_原创 | 使用JPA实现DDD持久化-O/R映射元数据:类级映射-实体和值对象...
  5. linux(Ubuntu)常用命令整理 -- 基础篇 -- 持续更新
  6. Visual Studio 常用宏
  7. tomcat下载安装及配置教程
  8. 推荐几个很好的资源下载网站
  9. 手把手教你用Python操纵Word自动编写离职报告!
  10. 非主流字体输入法_魏大勋更博晒非主流自拍,粉丝的关注点却在他的字体上,太复杂了...
  11. (已解决)Latex如何插入超链接
  12. 微信设置字体后微信浏览器页面字体也会跟着改变的解决办法
  13. 历届奥斯卡最佳影片及下载地址
  14. python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法
  15. java中宏定义,宏定义的使用
  16. 经典笔试面试题总结(一)
  17. 坚守还是追新,开发者如何应对新技术暗潮
  18. 离开学校怎样自学修炼成为一名网页设计师(四)
  19. 新型4-(3H)-喹唑啉酮类作为VEGFR-2抑制剂对肝癌细胞具有潜在活性
  20. 小程序页面卡顿解决问题

热门文章

  1. 最流行的 .NET 反编译工具合集
  2. python游戏小抄
  3. 小程序Table样式
  4. win7,win8系统为什么灵格斯老与office,adobe等软件冲突,怎么解决
  5. cad迷你画图 mac
  6. ad域控服务器教程,VMware搭建配置AD域服务器的方法步骤(图文教程)
  7. 手工笔筒制作教程(附彩色贴图分享)
  8. Numpy安装、升级与卸载
  9. 芯片(架构)顶会截稿时间和开会时间记录(ISSCC、VLSI、ISCA、HPCA、MICRO、DAC等)
  10. 使用SVN将项目从服务器下载到本地