从0到1搭建大数据平台之开篇

大家好,我是脚丫先生 (o^^o)

最近比较肝,与小伙伴负责一个小型大数据平台项目。

之前自己一直是做离线开发。

突然有一个实时流的托拉拽模块,又爽又刺激。

爽点是终于可以玩实时流,刺点是如何玩转实时流Flink。

言归正传,我们接着分享上期的从0到1搭建大数据平台。

让小伙伴们又爽又刺激。

把快乐给大家,痛苦留给自己
在这里插入图片描述


一、架构总览

在之前的一期「一文看懂大数据的技术生态」中,我们对大数据的技术栈组件。

充分了解之余,更多的是对如此庞大的生态圈叹为观止。

不过,我想你一定不满足于此。

在之前,我们已经把大数据生态圈这栋楼房已经完美竣工。

我在给它买了家具和装饰之后,就完美变形成一个通用大数据平台。
在这里插入图片描述
看,这大数据平台框架,真高啊,总共有8楼(真是要费不少钱)。

一层一层,往上拔高,逐渐精彩。

每一层都功能各异,但是又互相依赖,兄弟姐妹关系,你中有我,我中有你。

接下来,我们通过通用大数据平台框架进行数据流程设计。

来吧,我带着你,一步一个脚印,向前迈进。(不懂你捶我)

1.1 数据来源层

数据来源:这是最原始的一步,巧妇难为无米之炊,没有数据,又谈何处理。

我们已经知道了大数据的特点之一是数据种类多样性。具体而言,可以分为以下几种类型。

结构化数据:可以用二维数据库表来抽象,抽取数据规律。以数据库数据和文本数据为结构化数据。
在这里插入图片描述
半结构化数据:介于结构化和非结构化之间,主要指XML、HTML、JSON文档、Email等等,也可称非结构化。
在这里插入图片描述
非结构化数据:指信息没有一个预先定义好的数据模型或者没有以一个预先定义的方式来组织,不可用二维表抽象,比如图片,图像,音频,视频等 。
在这里插入图片描述
那么这种类型的数据又是从何处获取呢,我想这是大家心里想的第一个问题吧。

一般来说,数据来源主要是两类。

1、各个业务系统的关系数据库,可以称之为业务的交互数据。主要是在业务交互过程中产生的数据。比如,你去大保健要用支付宝付费,淘宝剁手购物等这些过程产生的相关数据。一般存储在DB中,包括Mysql,Oracle。

2、各种埋点日志,可以称之为埋点用户行为数据。主要是用户在使用产品过程中,与客户端进行交互过程产生的数据。比如,页面浏览、点击、停留、评论、点赞、收藏等。简而言之,夜深人静的时候,你躲在被子里,用快播神器看不知名的大片这些行为,都会产生数据被捕获。
在这里插入图片描述
既然小伙伴们,知道了数据来源,那么我们的数据流程设计第一步:
在这里插入图片描述

1.2 数据传输层

当我们知道了数据的种类,以及数据是如何而来的。

那么,紧接着就是用大数据技术组件去获取数据,搞到数据。

数据传输:数据传输层也可称之为,数据采集。

目前业界较为主流的数据采集工具有Flume、Datax、Sqoop、Kafka、Camel等。

又是一堆眼花缭乱的大数据采集组件,那么如何进行选型呢?

带着疑问,我们接着往下走。

一般来说,采集数据是根据数据来源,来确定决定我们要使用的大数据采集组件。

1、针对各个业务系统的关系数据库(业务的交互数据)的采集,这类数据通常的存放在关系型数据库里,可以通过Sqoop或者Datax等大数据技术组件进行定时抽取。

2、针对各种埋点日志(埋点用户行为数据)的采集,这类数据通常是存放在日志服务器里,源源不断的增加,通过Flume进行实时收集到Kafka消息队列。

此时,我们的数据流程设计第二步。
在这里插入图片描述
第一条线:从Web浏览器/App业务交互产生的数据,通过java微服务对数据的规则化,解析,存入Db数据库,之后通过异构数据采集大数据组件Datax\Sqoop进行采集。

第二条线:从Web浏览器/App埋点数据,通过java微服务把数据收集到日志服务器里,之后通过Flume分布式日志收集组件进行初步采集,最后放置kafka消息队列。

1.3 数据存储层

在数据采集这里,我们知道了两条数据线的大致流程。

那么通过大数据技术组件采集到的数据又是如何存储呢。

别着急,待我细细道来。

当我们收集到数据后,便是将这些数据进行存储。

第一条线,针对的是业务的交互数据,一般通过采集存储于分布式文件系统HDFS。

属于离线数据。

第二条线,针对埋点用户行为数据,采集之后的存储分为两种情况。

1、离线:该日志数据通过Flume进行收集,先是放置在kafka消息队列,之后再次利用Flume存储于分布式文件系统HDFS。

2、实时 :该日志数据通过Flume进行收集,先是放置在kafka消息队列,之后直接提供给流式计算引擎Spark/Flink进行处理,最后存储于Hbase。

此时,我们的数据流程设计如下所示:
在这里插入图片描述

1.4 资源管理层

资源管理:通过字面进行理解,就可以知道,该层是进行服务器资源管理的。

所谓的资源,即是服务器的CPU、内存等。

我们在「一文看懂大数据的技术生态」中,知道大数据技术主要是解决。

海量数据的存储和计算。

在数据存储层已经解决了海量数据的存储,那么接着就要进行数据的处理计算。

处理计算能力,是需要调用服务器的资源的。

资源管理层中的yarn,就是管理和调度资源的大数据技术组件。

简言之,相当于一个分布式的操作系统平台,而Mapreduce等运算程序则相当于运行于操作系统之上的应用程序,yarn为这些程序提供运算所需的资源(内存、cpu)。
在这里插入图片描述
yarn好比大功率电池,给机器提供能量。

1.5 数据计算层

数据处理:这一步是数据处理最核心的环节。

包括离线处理和流处理两种方式。

对应的计算引擎包括MapReduce、Spark、Flink等。

处理完的结果会保存到已经提前设计好的数据仓库中,或者HBase、Redis、RDBMS等各种存储系统上。

在这层中,我们终于解决了海量数据的存储计算。

撒花。
在这里插入图片描述
此时,我们的数据流程设计为

在这里插入图片描述
离线处理:当数据存储到HDFS后,利用Mapreduce/Hive/SparkSQL大数据技术组件,根据业务需求,对数据进行处理计算。

实时处理:当数据放置于Kafka消息队列时,利用Spark/Flink,根据业务指标需求,对数据进行实时计算。

1.6 任务调度层

任务调度:在离线处理阶段,我们会对数据进行定时处理。

因此,任务调度的大数据组件Oozie / Azkaban/airflow 会服务于离线处理任务。

满足我们定时调度的需求,通常离线处理任务的定时调度时间,大多数是设置到晚上凌晨进行执行。

我们小组一直在用的是airflow大数据定时调度组件,它的依赖能力是非常强的,社区人群也比较活跃,对python开发人员非常友好。

在这里插入图片描述
小伙伴们,这里我总结了三种调度神器的介绍,给大家一个简单的介绍。
在这里插入图片描述

1.7 多维分析层

多维数据分析是一种非常先进的数据分析理念。

在这层,大数据计算组件kylin/presto/impala组件,提供即席查询功能。

所谓即席查询是指用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。

我们可以这么理解:即席查询就是一种快速的执行自定义SQL。

此时,我们的数据流程设计继续升级。

在这里插入图片描述

1.8 应用层

应用:应用应用,有数据就应用。

可以这么理解,该层是把经过离线和实时处理并且存入数据库里的数据进行使用。

包括数据的可视化展现、业务决策、或者AI等各种数据应用场景。

此时,我们的数据流程已经粗略的设计完成。

在这里插入图片描述
撒花。

在这里插入图片描述
好了,今天就聊这么多,祝各位终有所成,收获满满

期待老铁的关注!!!

更多精彩内容请关注 微信公众号 👇「脚丫先生」🔥:


一枚热衷于分享大数据基础原理,技术实战,架构设计与原型实现之外,还喜欢输出一些有趣实用的编程干货内容,与程序人生。


更多精彩福利干货,期待您的关注 ~

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 从0开始构建BI商业大数据分析平台,以实际的电商分析业务,贯穿数据生成,数据仓库、ETL、数据分析以及可视化分析和商业BI报表,让你三天零基础快速搭建商业化BI分析平台 课程亮点 1,零基础讲解,从数据存储到商业可视化分析,一步步逐渐深入 2,理论+实践,让你既能学懂也能学会 3,图文并茂,化繁为简,让知识通俗易懂,不再抽象 4,以实际企业业务需求讲解,让学生学有所用,学完即可上手BI 适用人群 1、对大数据感兴趣的在校生及应届毕业生。 2、对目前职业有进一步提升要求,希望从事大数据行业高薪工作的在职人员。 3、对大数据行业感兴趣的相关人员。 课程内容 第一章:MySQL数据库入门 1.1 大数据应用及数据存储 1.2 MySQL的介绍 1.3 MySQL数据库部署 1.4 DataGrip可视化工具部署 1.5 DataGrip与MySQL连接配置 第二章:SQL分析之DDL 2.1 SQL的分类与规则 2.2 DDL之数据库管理 2.3 DDL之数据表创建与查询 2.4 DDL之数据表删除与描述 第三章:SQL分析之DML 3.1 DML之数据的插入 3.2 DML之数据的修改 3.3 DML之数据的删除 第四章:SQL分析之DQL 4.1 DQL基本查询规则 4.2 DQL之入门查询 4.3 DQL之条件查询where 4.4 DQL之聚合查询聚合函数 4.5 DQL之分组查询group by 4.6 DQL之排序查询order by 4.7 DQL之分页查询limit 4.8 DQL之结果保存 第五章:多表复杂分析查询 5.1 多表查询:表与表之间的关系 5.2 多表查询:Join关联 5.3 多表查询:子查询 第六章:数据仓库与ETL 6.1 数据仓库入门 6.2 ETL与Kettle的介绍 6.3 JDK及Kettle的部署 第七章:Kettle的ETL开发实战 7.1 Kettle中概念详解 7.2 Kettle实现文本输入与Excel输出 7.3 Kettle实现Excel输入与表输出 7.4 表输入组件开发 7.5 插入更新组件开发 7.6 Kettle作业开发 第八章:BI可视化与实战需求 8.1 数据可视化背景 8.2 FIneBI的功能与部署 8.3 电商业务介绍 8.4 技术架构及数据准备 第九章:ETL与数据分析实战 9.1 基于MySQL实现数据内容拆解 9.2 基于Kettle实现数据的ETL 9.3 指标分析:每日订单总额及订单个数 9.4 指标分析:独立用户数以及热门商品Top10 9.5 指标分析:每天每个小时上架商品及订单个数 9.6 指标分析:每日不同支付方式的订单总金额及订单个数 9.7 指标分析:每日每个省份的订单总金额及订单个数 9.8 指标分析:每日不同商品分类的订单个数统计 第十章:BI可视化分析实战 10.1 FIneBI的基本使用 10.2 仪表盘显示每日订单信息 10.3 柱状图及曲线图的构建 10.4 饼图及雷达图的构建 10.5 混合图及词云图构建
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据指北Ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值