本文内容基于个人理解,表述通俗(不够严谨),欢迎前来批评指出
文章目录
- 1、概述
- 1.1、什么是分布式?
- 1.2、数据库、数仓、大数据3者区别
- 2、大数据平台架构
- 2.1、Hadoop
- 2.1.1、HDFS
- 2.1.2、MapReduce
- 2.1.3、YARN
- 2.2、ZooKeeper
- 2.3、HIVE
- 2.4、Flume
- 2.5、Sqoop
- 2.6、Spark
- 2.7、HBase
- 3、流程设计
- 4、为什么要用大数据技术?
- 5、人员需求
- 6、补充
1、概述
- 大数据:海量数据的存储和计算
- 适用场景:大数据分析,海量 日志数据
| 说明 |
数据量大 | TB级别(1T=1024G) |
数据多样 | 除 结构化数据 外还有:日志、音频、图片、视频、地理位置信息… |
数据低价值密度 | 海量低价值密度数据 >>>清洗、筛选、计算>>> 高价值密度数据 |
分布式 | 分布式存储、分布式计算 |
1.1、什么是分布式?
- 将 巨大计算和存储 分配给多台计算机
- 各台机器由网络来连接
- 各个节点只负责部分计算,再汇聚成整体结果
1.2、数据库、数仓、大数据3者区别
区别 | MySQL | Hadoop | |
性质 | 软件技术 | 数据集合 | 分布式系统基础架构 |
数据量级 | 小 | 大 | 大 |
数据特点 | 结构化、细致的 | 结构化、集成的 | 半结构化、多样的 |
存储方式 | 紧致 | 冗余 | 分布式、多副本 |
数据操作 | 增删查改 | 查询、分析 为主 | 数据修改不灵活 |
速度 | 延时低 | 有延时 | 有延时 |
用途 | OLTP | OLAP | 大数据平台基础 |
场景 | 注册、交易… | 多维(地区、时间、品类…)销量分析 | 为数仓建设提供平台基础 |
2、大数据平台架构
name | 说明 | 备注 |
HDFS | 分布式文件系统 | |
MapReduce | 分布式计算框架 | 偏向于 离线计算 |
YARN | 资源管理器 | 分配计算资源(内存、CPU…) |
分布式应用程序协调服务 | 高可用… | |
数据仓库工具 | ||
分布式的、面向列的开源数据库 | ||
Flume | 海量日志 采集、聚合、传输 的系统 | 把日志数据传输到HDFS |
Sqoop | 数据传递工具,主用于Hadoop和传统数据库之间 | MySQL和HDFS之间的数据传输 |
Kafka | 高吞吐量的分布式发布订阅消息系统 | |
Spark | 分布式计算框架计算 | |
Flink | 流处理框架 | 实时计算 |
ClickHouse | 列式存储数据库 | OLAP |
DolphinScheduler | 工作流调度 | 定时任务、工作流异常告警… |
2.1、Hadoop
- 开源的 分布式系统基础架构
-
存储
:HDFS -
计算
:MapReduce -
资源管理
:YARN
2.1.1、HDFS
- Hadoop Distributed File System
- 分布式文件系统
-
用途
:存储海量各式各样的数据
适用于海量数据
多副本存储,数据不易丢
高可扩展性,可构建在多个廉价机器
缺点
延时高(延时高≠慢,要分清【延时高】和【运算慢】)
支持数据
追加,不支持文件随机修改
不适用于 大量的小文件
主要组成 | 说明 |
NameNode | 管理HDFS的命名空间(好比 目录) |
DataNode | 存储实际的数据块 |
2.1.2、MapReduce
- 分布式计算框架
- Map(映射);Reduce(归约)
-
用途
:大规模数据集(>1TB)的并行运算
词频统计示例
2.1.3、YARN
- Apache Hadoop YARN
- Yet Another Resource Negotiator
- Hadoop资源管理器
-
用途
:分配CPU、内存… -
解耦思想
:将 资源管理 和 应用程序 拆分为 独立的守护进程
例如:MapReduce
、Spark
等可以在YARN
上运行
YARN架构 | 说明 |
Resource Manager | 监控 |
Node Manager | 单节点 资源管理 |
Container | 包含 内存、CPU、磁盘、网络 等元素 |
Application Master | 第一个 负责 提交作业 和 协调其它旗下的 |
2.2、ZooKeeper
- 开源的 分布式应用程序协调服务
-
用途
:配置维护、域名服务、分布式同步、组服务…
使用 分布式进程 来 统一 共享命名空间层次命名空间(Hierarchical Namespace)ZooKeeper服务组件
2.3、HIVE
- 基于Hadoop的数据仓库工具
- 将结构化的数据文件映射为数据库表,并提供SQL功能;
能将SQL语句转变成MapReduce任务来执行 -
用途
:非实时 大量不可变数据 的 批处理作业(离线数仓)
2.4、Flume
- 海量日志 采集、聚合、传输 的系统
- 基于流式架构
- 入门功能:实时监控【单个追加文件、目录下多个新文件、目录下的多个追加文件】
概念图Agent:是一个JVM进程,包括 Source、Channel、Sink
Source:收集数据
Channel:缓冲区
Sink:输出数据,写到HDFS
2.5、Sqoop
- 开源的数据传输工具
- 主用在Hadoop(HDFS)与传统的数据库(MySQL、Oracle…)之间
2.6、Spark
- Apache SparkTM
- 大数据实时计算引擎
- 在Scala语言中实现
库 | 说明 | 备注 |
Spark SQL | 结构化数据处理 | 无缝接合Spark和SQL的混合编程 |
Spark Streaming | 流式数据实时计算 | 微批处理,有d延迟 |
SparkML | 机器学习 | 分类、回归、聚类、协同过滤… |
GraphX | 图计算 |
2.7、HBase
- Hadoop Database
- 开源的、分布式的、面向列的、存储结构化数据的 数据库
- 数据存储在HDFS
- 物理存储结构Key-Value型,就像一个多维Map;Key-Value可以映射为大型二维单表
- 数据存储策略:冷热数据架构
- 有Phoenix的插件,可以满足二级索引和SQL的需求
应用场景
一些应用场景 | e.g. |
对象存储 | 网页、图片 |
稀疏矩阵 | 用户画像 |
时空数据 | 轨迹(xx打车)、气象网格 |
Feeds流 | 微博、朋友圈 |
时序数据 | 心电图 |
3、流程设计
电商项目示例 | e.g. |
数据来源 | 业务数据、日志数据 |
数据传输 | Flume、Sqoop |
数据存储 | HDFS、Kafka、MySQL、Redis、ClickHouse |
计算资源管理 | YARN |
数据计算 | HIVE、Spark、Flink |
任务调度 | Azkaban |
集群监控 | Zabbix |
元数据管理 | Atlas |
权限管理 | Ranger |
数仓分层 | full name | 译名 | 说明 |
1、ODS | Operation Data Store | 原始层 | 原始数据 |
1.5、DIM | Dimension | 维度层 | 维度数据 |
2、DWD | Data Warehouse Detail | 明细层 | 明细数据 |
3、DWS | Data Warehouse Service | 服务层 | 数据按日期汇总 |
4、DWT | Data Warehouse Topic | 主题层 | 数据按主题汇总 |
5、ADS | Application Data Store | 应用层 | 业务报表 |
4、为什么要用大数据技术?
如图业务需求,Python+MySQL就能快速实现【data=>value】,为什么还要用大数据技术?
用MySQL来实现数仓不香吗? | MySQL | HDFS |
热扩展 | 麻烦 | 简单 |
单个表过大 | 按时间分表 | 不用分表 |
算法方面对比 | Python | Spark ML |
内存不够时 | 换机器 | 加机器 |
开发效率 | 胜出 | |
复杂操作 | 胜出 | |
离线计算 | 胜出 | |
深度学习 | 胜出 | |
大数据实时计算 | 胜出 |
流数据实时计算对比 | Python | Spark Streaming |
内存不够时 | 换机器 | 加机器 |
开发效率 | 胜出 | |
复杂操作 | 胜出 | |
大数据场景 | 胜出 |
5、人员需求
IT部
平台组
数仓组
实时组
算法组
开发组
大数据工程师
HIVE工程师
Spark工程师 __ Flink工程师
Spark工程师 __ Python工程师
后端工程师 __ 前端工程师 __ 测试工程师
6、补充
en | 🔉 | cn |
distributed | dɪˈstrɪbjuːtɪd | 分布式的 |
negotiator | nɪˈɡoʊʃieɪtər | 谈判者 |
negotiate | nɪˈɡoʊʃieɪt | v 谈判 |
keeper | ˈkiːpər | 监护人;饲养员 |
flume | fluːm | n. 水道 |
agent | ˈeɪdʒənt | n. 代理人;adj. 代理的 |
sink | sɪŋk | v. 下沉;n. 水槽 |
resource | ˈriːsɔːrs | n. 资源,财力;vi. 向…提供资金 |
source | sɔːrs | n. 来源;水源 |
store | stɔːr | n. 士多;vn 贮藏 |
warehouse | ˈweəhaʊs | 仓库 |
container | kənˈteɪnər | 集装箱;容器 |
manager | ˈmænɪdʒər | n. 经理;管理人员 |
presto | ˈprestoʊ | adj. 急板的 |
kilobyte(KB) | ˈkɪləbaɪt | 千字节,1024字节 |
megabyte(MB) | ˈmeɡəbaɪt | 兆字节 |
gigabyte(GB) | ˈɡɪɡəbaɪt | 十亿字节 |
terabyte(TB) | ˈterəbaɪt | 万亿字节;兆兆字节;太字节 |
petabyte(PB) | 'petəbaɪt | 拍字节 或 千万亿字节 或 千T字节 |