大数据技术总体概括

1、知识点

1.1 RDBMS

Relational DataBase Magement System
关系型数据库管理系统
相关技术栈:SQL、SQL databases(MySQL、Postgres、Oracle等),Data Modeling(FB DE)

1.2 SQL

结构化查询语言

1.3 Batch ETL

Extract,Transform,Load
从数据仓库中提取数据,使用slicing和dicing规则去传输和加载数据到marts中。

1.4 data warehouse

数据仓库
与数据库DB的区别:

  • 数据仓库用于从数据库中收集数据并进行优化和分析
  • 数据库适用于OLTP(Online Transactional Process),数据仓库用于OLAP(Online Analytical Processing).

1.5 data marts

在这里插入图片描述
比如当一个公司有很多部门,每个部门信息存到一个数据库中,当要查询一个公司的某个信息的结果时,需要query所有的数据库。我们需要将数据库的数据放到数据仓库中,然后根据相关属性的限制条件进一步拆分为一个个小的DataMart。
DataMart是一个数据仓库的拆分,易于管理和更快的查询。

1.6 slicing和dicing

对数据库进行切分

1.7 dimension和metrics

每个分析查询是由dimension和metrics组成的。
dimension是数据的属性
Metrics是可以量化的结果。
例子:
每次超市购物产生一条含有 (超市名、各个商品名称、价格、时间)的记录,这是一条交易数据。以超市名为dimension,价格为metric,可以知道每家超市的销售额。以时间为dimension,商品名字为metric,就可以知道每天销售出的商品数量。

1.8 OLTP

Online Transactional Processing

  • 可以在数据库中对数据进行增删改查
  • 每个用户的操作只涉及极少量的数据操作,通常只涉及到一条记录。

1.9 OLAP

Online Analytical Processing
从多个维度分析数据
在讨论大数据时,主要讨论OLAP的情况。
OLAP大数据系统在推荐、预测、分类、分析、广告、流行话题等商业领域有广泛的应用。高盈利的服务产品大多来源于OLAP。

1.10 传统数据框架的不足

(1)大数据时代3V挑战

  • Vaiety 多样化,除了传统的交易数据,用户数据外,用户行为、网页widgets上的操作、地图位置、声音图像等都会产生数据。传统的database无法解决。
  • Velocity,数据会以极快的速度产生,例如用户的没一点浏览操作,划屏幕,点击等等,因此大数据需要具备收集和处理实时数据的能力。
  • Volume,数据量变得空前的大,因此要有高效稳健的存储方式以及足够的空间,同时也能满足查询的需求。需要达到TB-PB级别。
    (2)对实时数据进行OLAP处理(主要是creating和querying)的需求。
  • 以天、小时为粒度的数据不能满足即时查询的需求
  • 例如:当前微博话题热度排行,过去半小时爆款文章的阅读量
  • 要有low latency,以分甚至秒的粒度来进行数据处理和查询。
  • 实时(非实时)
    stream data(batch)
    online data(offline)
    low latency data(hourly/daily)
    (3)数据分析产品和业务服务于全球用户
  • 多元化
  • 数据量多
  • 稳定性高、用户规模大

2、大数据知识架构

在这里插入图片描述

2.1 数据采集和传输层

  • Kafka
    分布式消息系统,生产者(producer)——消费者(consumer)模型。提供了类似于JMS的特性,但设计上完全不同,不遵循JMS规范。比如Kafka允许多个消费者主动拉取数据,然而JMS中只有点对点模式消费者才会主动拉数据。主要应用在数据缓冲、异步通信、汇集数据、系统接偶等方面。
  • Pulsar
    pub-sub模式的分布式消息平台,拥有灵活的消息模型和直观的客户端API。类似Kafka,但是Pulsar支持多租户,有着资产和命名空间的概念,资产代系统里的租户。
  • Sqoop
    Sqoop主要通过一组命令进行数据导入导出的工具,底层引擎依赖MapReduce,主要用于Hadoop(如HDFS、Hive、HBase)和RDBMS(mysql、orcle)之间的数据导入和导出。

2.2 数据存储层

  • Hbase
    基于Google Bigtable的开源实现,是一个具有高可靠性、高性能、面向列、可伸缩性、典型的key/value分布式存储的nosql数据库系统,主要用于海量结构化和半结构化数据存储。它介于nosql和RDBMS之间,仅能通过行键(row key)和行键的range来检索数据,行数据存储是原子性的,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。HBase查询数据功能简单,不支持join等复杂操作,不支持跨行和跨表事务。
  • HDFS
    分布式文件存储系统,具有高容错(high fault-tolerant)、高吞吐(high throughput)、高可用(high avaliable)的特性。非常适合在大规模数据集上的应用,提供高吞吐量的数据访问。 可部署在廉价的机器上。它放宽了POSIX的要求,这样可以实现流的形式访问(文件系统中的数据),主要为各类分布式计算框架如Spark、MapReduce等提供海量数据存储服务。
  • Kudu
    介于HDFS和HBase之间的基于列式存储的分布式数据库,兼具了HBase的实时性、HDFS的高吞吐,传统数据库的sql支持。

2.3 数据分析层

  • Spark
    Spark是一个快速、通用、可扩展、可容错、内存迭代式计算的大数据分析引擎。目前生态体系主要包括用于批处理的SparkRDD、SparkSQL、用于流数据处理的SparkStreaming、Structured-Streaming。用于机器学习的Spark MLLib,用于图计算的Graphx以及用于统计分析的SparkR,支持Java,Scala,Python等多种语言。
  • Flink
    分布式大数据处理引擎,可以对有限数据流和无限数据流进行有状态的计算,Flink在设计之初就是以流为基础发展的,然后再进入批处理领域,相对spark而言,它是一个真正意义上的实时计算引擎。
  • Strom
    由Twitter开源后归于Apache管理的分布式实时计算系统,Strom是一个没有批处理能力的数据流计算引擎,strom提供了偏底层的API,用户需要自己实现很多复杂的逻辑。
  • MapReduce
    分布式运算程序的编程框架,适用于离线数据处理场景,内部处理流程主要划分map和reduce两个阶段。
  • Hive
    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供HQL语句查询功能,存储依赖于HDFS,支持多种计算引擎,如Spark、MapReduc、Tez;支持多种存储格式,如TextFile、SwquenceFile、RCFile、ORC、Parquet(常用);支持多种压缩格式,如gzip、lzo、bzip2等。
  • Tez
    支持DAG作业的开源计算框架。相对于MapReduce性能更好,主要原因在于其将作业描述为DAG(有向无环图),与
  • Pig
    基于Hadoop的大规模数据分析平台,它包含了一种名为Pig Latin的脚本语言来描述数据流,并行地执行数据流处理的引擎,为复杂的海量数据并行计算提供了一个简单的操作和编程接口。
    Pig Latin本身提供了很多传统的数据操作,同时允许用户自己开发一些自定义函数来读取、处理和写数据。该语言的编译器会把类SQL的数据分析请求转化为一系列经过优化处理的MapReduce运算。

2.4 OLAP引擎

  • Druid
    基于列存储的、分布式的、适用于实时数据分析的存储系统,能够快速聚合、灵活过滤、毫秒级查询和低延迟数据导入。通过使用Bitmap indexing加速存储的查询速度,并使用CONCISE算法来对bitmap indexing进行压缩,使得生成的segments比原始文件小很多,并且它的各个组成部分支架耦合性低,如果不需要实时数据可以忽略实时节点。
  • kylin
    分布式分析引擎。提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,它能在亚秒内查询巨大的Hive表,需要使用者对数据仓库模型有深度了解,并需构建cube,能够与多种可视化工具,如Tableau,PowerBI等,令用户可以使用BI工具对Hadoop数据进行分析。
  • Impala
    提供对HDFS、HBase等数据的高性能,低延迟的交互式SQL查询功能的大数据查询分析引擎,由Cloudera开源。它基于Hive,使用Hive的元数据在内存中计算,具有实时,批处理,高并发等优点。
  • Presto
    开源的分布式大数据SQL查询引擎,适用于交互式分析查询,可以将多个数据源的数据进行合并,并且可以直接从HDFS读取数据,并在使用前不需要大量的ETL操作。

2.5 资源管理层

  • Yarn
    一个资源调度平台,负责为运算程序分配资源和调度,不参与用户程序内部工作,核心组件包括:ResourceManager(全局资源管理器,负责整个系统的资源管理和分配)、Nodemanager(每个节点上的资源和任务管理器)。
  • Mesos
  • Kubernetes

2.6 工作流调度器

  • Oozie
    基于工作流引擎的任务调度框架,能够提供对MapReduce和Pig任务的调度与协调。
  • Azkban
    相对Oozie更轻量级,用于在一个工作流内以一个特定顺序运行一组任务,通过一种kv文件格式来建立任务之间的依赖关系,并为用户提供了易于使用的web界面来维护和跟踪允许任务的工作流。

2.7 分布式协调框架

  • Ambari
    基于web的安装部署工具,支持对大多数的hadoop组件,如HDFS、MapReduce、Hive、Pig等的管理和监控。
  • Zookeeper
    分布式协调服务即为用户的分布式应用程序提供协调服务,如主从协调,服务器节点动态上下线,统一配置管理,分布式共享锁等,它本身也是一个分布式程序。

3 业界主流大数据体系

业界目前主流的大数据基础架构和组件,主要围绕在Hadoop/Spark为核心的开源生态体系:
在这里插入图片描述

  • 数据收集层:主要由关系型与非关系型数据收集组件,以及分布式消息队列构成。
  • 数据存储层:主要由分布式文件系统(面向文件的存储)和分布式数据库(面向行/列的存储)构成。
  • 资源管理与服务协调层
  • 计算引擎层:包含批处理,交互式处理和流式实时处理三类引擎。
  • 数据分析层:提供了各种大数据分析工具。

参考:
https://www.youtube.com/watch?v=9YsAfWRzl2w
https://zhuanlan.zhihu.com/p/68451233
https://zhuanlan.zhihu.com/p/112688499
https://zhuanlan.zhihu.com/p/95926504
https://www.youtube.com/watch?v=YKUa5xrkQGQ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南山二毛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值