本文内容基于个人理解,表述通俗(不够严谨),欢迎前来批评指出


文章目录

  • 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…)

ZooKeeper

分布式应用程序协调服务

高可用…

HIVE

数据仓库工具

HBase

分布式的、面向列的开源数据库

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
  • 分布式文件系统
  • 用途:存储海量各式各样的数据

适用于海量数据

多副本存储,数据不易丢


高可扩展性,可构建在多个廉价机器

缺点 延时高(延时高≠慢,要分清【延时高】和【运算慢】)

支持数据

追加,不支持文件随机修改


不适用于 大量的小文件


大数据总体架构图模板 大数据管理总体架构_架构_02

主要组成

说明

NameNode

管理HDFS的命名空间(好比 目录)

DataNode

存储实际的数据块

2.1.2、MapReduce

  • 分布式计算框架
  • Map(映射);Reduce(归约)
  • 用途:大规模数据集(>1TB)的并行运算
词频统计示例

大数据总体架构图模板 大数据管理总体架构_hadoop_03

2.1.3、YARN

  • Apache Hadoop YARN
  • Yet Another Resource Negotiator
  • Hadoop资源管理器
  • 用途:分配CPU、内存…
  • 解耦思想:将 资源管理 和 应用程序 拆分为 独立的守护进程
    例如:MapReduceSpark等可以在YARN上运行

大数据总体架构图模板 大数据管理总体架构_大数据总体架构图模板_04

YARN架构

说明

Resource Manager

监控NodeManager

Node Manager

单节点 资源管理

Container

包含 内存、CPU、磁盘、网络 等元素

Application Master

第一个Container

负责 提交作业 和 协调其它旗下的Container

2.2、ZooKeeper

  • 开源的 分布式应用程序协调服务
  • 用途:配置维护、域名服务、分布式同步、组服务…
使用 分布式进程 来 统一 共享命名空间

大数据总体架构图模板 大数据管理总体架构_big data_05

层次命名空间(Hierarchical Namespace)

大数据总体架构图模板 大数据管理总体架构_大数据总体架构图模板_06

ZooKeeper服务组件

大数据总体架构图模板 大数据管理总体架构_数据_07

2.3、HIVE

  • 基于Hadoop的数据仓库工具
  • 将结构化的数据文件映射为数据库表,并提供SQL功能;
    能将SQL语句转变成MapReduce任务来执行
  • 用途:非实时 大量不可变数据 的 批处理作业(离线数仓)

2.4、Flume

  • 海量日志 采集、聚合、传输 的系统
  • 基于流式架构
  • 入门功能:实时监控【单个追加文件、目录下多个新文件、目录下的多个追加文件】
概念图

大数据总体架构图模板 大数据管理总体架构_大数据总体架构图模板_08


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的需求
应用场景

大数据总体架构图模板 大数据管理总体架构_big data_09

一些应用场景

e.g.

对象存储

网页、图片

稀疏矩阵

用户画像

时空数据

轨迹(xx打车)、气象网格

Feeds流

微博、朋友圈

时序数据

心电图

3、流程设计

大数据总体架构图模板 大数据管理总体架构_大数据总体架构图模板_10

电商项目示例

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】,为什么还要用大数据技术?

大数据总体架构图模板 大数据管理总体架构_架构_11

用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字节