容器技术的介绍注意我们这里所说的容器container是指的一种技术,而Docker只是一个容器技术的实现,或者说让容器技术普及开来的最成功的实现
容器正在引领基础架构的一场新的革命
90年代的PC
00年代的虚拟化
10年代的cloud
11年代的container
什么是container(容器)?
容器是一种快速的打包技术
Package Software into Standardized Units for Development, Shipment and Deployment
标准化
轻量级
易移植
为什么容器技术会出现?
容器技术出现之前
容器技术出现之后
容器 vs 虚拟机
Linux Container容器技术的诞生于2008年(Docker诞生于2013年),解决了IT世界里“集装箱运输”的问题。Linux Container(简称LXC)它是一种内核轻量级的操作系统层虚拟化技术。Linux Container主要由Namespace 和Cgroups 两大机制来保证实现
Namespace命名空间主要用于资源的隔离(诞生于2002年)
...
数仓建模简介建模: 主要指的如何构建表, 一般在进行建模的时候, 都会有一个规范来规定这个建模方式。数据仓库建模方法论可分为:维度建模、范式建模、Data Vault模型、Anchor模型。企业中最流行、也是最经典的数仓建模经典是维度建模。
常见的建模规范主要两种:
三范式建模:
适用于 关系型数据库, 或者业务库 (OLTP系统)
例如: 三范式规定在建模过程中, 尽可能避免冗余的出现, 建议每个表一般都要有一个主键
维度建模:
适用于分析性数据库 (OLAP)
例如: 可以允许出现有一定冗余, 每个表可以没有主键 (只要利于分析的建模 就没啥大的问题)
维度建模数据模型在维度建模中, 数据模型主要三种模型:
星型模型:
特点: 只有一个事实表, 也就是说只有一个分析的主题, 在事实表周围围绕了多个维度表, 维度表与维度表没有任何的关联
请问, 星型模型是数仓发展在什么期在最容易产生模型: 初期阶段
雪花模型:
特点: 只有一个事实表, 也就是说只有一个分析的主题, 在事实表周围围绕了多个维度表, 维度表可以接着关联维度表
请问, 雪花模型是数 ...
1.1 什么是CDCCDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。
1.2 CDC的种类CDC主要分为基于查询和基于Binlog两种方式,我们主要了解一下这两种之间的区别:
基于查询的CDC
基于Binlog的CDC
开源产品
Sqoop、DataX
Canal、Maxwell、Debezium、Flink CDC
执行模式
Batch
Streaming
是否可以捕获所有数据变化
否
是
延迟性
高延迟
低延迟
是否增加数据库压力
是
否
1.3 Flink-CDCFlink社区开发了 flink-cdc-connectors 组件,这是一个可以直接从 MySQL、PostgreSQL 等数据库直接读取全量数据和增量变更数据的 source 组件。
目前也已开源,开源地址:https://github.com/ververica/flink-cdc-connectors ...
概述常见的维表Join方式有四种:
预加载维表
热存储维表
广播维表
Temporal table function join
下面分别使用这四种方式来实现一个join的需求,这个需求是:一个主流中数据是用户信息,字段包括用户姓名、城市id;维表是城市数据,字段包括城市ID、城市名称。要求用户表与城市表关联,输出为:用户名称、城市ID、城市名称。
用户表表结构如下:
字段名
数据类型
数据样例
用户姓名
String
User1
城市ID
Int
1001
时间戳
Long
1000
城市维表表结构如下:
字段名
数据类型
数据样例
城市ID
Int
1001
城市名称
String
beijing
时间戳
Long
1000
1、 预加载维表通过定义一个类实现RichMapFunction,在open()中读取维表数据加载到内存中,在probe流map()方法中与维表数据进行关联。RichMapFunction中open方法里加载维表数据到内存的方式特点如下:
优点:实现简单
缺点:因为数据存于内存,所以只适合小数据量并且维表数 ...
hbase介绍HBase产生背景介绍:
由于 HAOOP 不支持随机读写的操作, 仅支持顺序性读写操作, 适合于进行批量化处理操作
HBase是采用 java 语言开发, HBase基于HDFS , 是一个 支持高效的随机读写能力的noSQL型数据库
HBase支持三种方式进行查询数据:
1) 支持主键查询
2) 支持主键的范围查询
3) 支持全表查询
HBase本质上就是一个存储容器, 不支持多行事务, 仅支持单行事务, 不支持SQL语句, 数据存储格式都是一切皆字节
HBase集群, 可以向hadoop一样, 通过横向扩展方式, 来提升HBase处理和存储的能力
HBase的表具有以下特征:
大: 表支持存储上十亿行数据, 上百万列
面向列: 数据是面向于列(列族)式的存储方案
稀疏性: 在HBase的表存储数据, 如果某个字段为null, 并不会占用磁盘任何空间, 所以可以将表构建非常稀疏
应用场景:
数据需要进行随机读写操作
数据量比较的大
数据比较的稀疏
hbase和其他软件的区别
hbase和RDBMS的区别 ...
HDFS的基本介绍
HDFS: 分布式文件存储系统
目的: 存储海量数据
分布式文件存储过程:
HDFS的应用场景:
存储非常大的文件(GB TB PB), 适合于做批量化高吞吐的业务
一次写入、多次读取 : 对数据没有修改的要求, 但是需要多次读取, HDFS不支持随机修改文件中数据
思考, 什么数据一般不需要修改的? 过去已经既定发生过数据
在有限成本下, 存储更多数据
需要高容错性: 数据不能给丢失了
需要具备扩展能力
HDFS不适用场景:
需要进行随机修改的场景
需要交互式强场景
存储大量的小文件场景
HDFS的架构及核心概念
1234567891011注意: 假设现在有一个300M 文件, 请问分几个块呢? 3个块 第一个块: 128M 第二个块: 128M 第三个块: 44M 假设还有一个150M文件, 请问分2个块? 第一个块为: 128M 第二个块为 22M 一个块最大为128M , 请问第一个文件中第三个块和第二个文件的 ...
MapReduce的基本介绍
MapReduce: 分布式计算框架
分布式计算思想: 分而治之
1234567分而治之: 生活中: 搬砖 图书馆数书 计算从1~100和整个分而治之思想主要有二大阶段: 分(map阶段): 将一个任务拆分为多个小的任务合(reduce阶段): 将每个小的任务结果进行聚合汇总在一起
12345678MapReduce既然是一个分布式计算框架, 必然需要有输入 和 输出, 数据在map执行之前进行读取数据, 在reduce之后将数据写出去数据经历阶段:1) 数据读取阶段: 不断持续的一直读取数据, 默认一行一行的读取数据, 每读取一行 就需要执行一次map的操作 数据传递 采用 kv方式: 读取过来数据 一般称为 k1和v12) map阶段: 接收k1和v1, 对数据进行处理, 形成新的键值对 k2和 v23) reduce阶段: 接收k2和v2 进行聚合统计操作, 然后转换为k3和v34) 数据输出阶段: 将k3和v3输出到目的地
MapReduce的编程模型
整个MapReduce编写步骤, 共计为8步: 天龙八部
map ...
前言数据仓库的基本介绍
数据仓库和数据库的区别:
OLTP(联机事务处理): 数据库 面向于事务处理 存储业务数据 数据库在设计的时候, 尽可能避免冗余出现 捕获数据 对数据进行CURD操作 对交互性要求比较高
OLAP(联机分析处理): 数据仓库 面向于主题 存储过去既定发生过数据 ,为了分析方便, 可以允许出现一定冗余情况 数据分析 更多做的都是查询操作 , 对交互性没有要求
注意: 数据仓库的出现, 绝不是要替代数据库的
什么样容器可以作为数据仓库呢? 只要能够存储数据, 并且可以对数据进行查询容器都可以
例如: mysql oracle SQL server Excel
数据仓库分层架构模式, 及其ETL的基本介绍:
数据仓库主要的目的:
对系统过去已经既定发生过的数据, 进行数据分析, 从而对未来提供决策支持
数据分析:
本质上来讲, 其实就是在数据查询操作, 对过去的数据进行查询, 已得到目的结论过程
如何进行数据分析工作: 常用的语言 SQL
SQL是这个世界上最好的分析工具, 因为会SQL人 肯定比会大数据多
什 ...
Spark入门四代计算引擎
第一代引擎:MR
第二代引擎:Hive(MR,Spark,Tez) 部分支持DAG(有向无环图)
第三代引擎:Spark和Impala(完全支持DAG)
第四代计算引擎:批流统一FLink(完全支持DAG)
技术发展:
面试题:Hadoop的基于进程的计算和Spark基于线程方式优缺点?
只需要回答进程和线程的区别
线程基本概念
l 线程是CPU的基本调度单位
l 一个进程一般包含多个线程, 一个进程下的多个线程共享进程的资源
l 不同进程之间的线程相互不可见
l 线程不能独立执行
l 一个线程可以创建和撤销另外一个线程
Spark的部署
local模式
如何安装?
local模式,开箱即用模式,使用测试模式下
如何spark-shell应用?
bin/spark-shell –master local[3]
wordcount
本地文件执行wordcount
hdfs文件执行wordcount
了解Spark的任务流程
深入原理:了解Shuffle
理解:为什么会生成 ...
