导图社区 《大数据架构详解》读书笔记
本书从架构、业务、技术三个维度深入浅出地介绍了大数据处理领域端到端的知识。主要内容包括三部分。
编辑于2021-01-17 12:08:38大数据架构详解
本质
第一部分从数据的产生、采集、计算、存储、消费端到端的角度介绍大数据技术的起源、发展、关键技术点和未来趋势,结合生动的业界最新产品,以及学术界最新的研究方向和成果,让深奥的技术浅显易懂
解决方案 技术集合
大数据是什么
背景
补充内容
三次信息化浪潮
1980
个人计算机的普及
1995
互联网的普及
2010
云计算、大数据、物联网的普及
大数据发展的三个阶段
萌芽期
数据库和数据挖掘
成熟期
并行计算与分布式系统
大规模应用期
数据驱动决策
信息科技提供的技术支持
存储设备容量不断增加
CPU处理能力大幅提升
网络带宽不断增加
数据产生方式的变革促进
运营式系统阶段
用户原创内容阶段
感知式系统阶段
大数据、云计算、物联网关系
云计算
关键技术
虚拟化
Linux:hadoop
Windows:虚拟机
硬件
分布式存储
分布式计算
多租户
3种模式
公有云
eg:百度云
私有云
eg 电信、联通
混合云
3种云服务
Iaas
aws:EC2;salesforce
Paas
sina app engine
Saas
数据中心
冷、电力丰富;地质结构稳定;凉爽舒适。
应用
政务云、教育云、医疗云、中小企业云
物联网
概念
应用层
处理层
网络层
感知层
技术
识别与感知(二维码、RFID等)
网络与通信
数据挖掘与融合
联系
云计算为大数据提供了技术基础 大数据为云计算提供用武之地
云计算为物联网提供海量数据存储能力 物联网为云计算技术提供了广阔的应用空间
物联网是大数据的重要来源 大数据技术为物联网数据分析提供支撑
应用
防控疫情
支付宝健康码
预测犯罪
摄像头、突发新闻、聊天记录
智慧城市
国家安全
棱镜门
大数据导论
大数据导论
1980年《第三次浪潮》预言
1998年USENIX大会首次提出
2003~2006年Google的3篇论文
大数据简史
搜索引擎时代
数据仓库时代
数据挖掘时代
机器学习时代
大数据现状
强大生命力
大数据与BI
相同
从数据中挖掘价值
促进商业成功
不同
分布式技术发展
处理能力极大提高
企业数据资产
设备数据
设备维护、规划
用户数据
位置数据
上网数据
用户兴趣数据
通信数据和社交数据
身份信息数据
用户金融数据
大数据挑战
成本挑战
数据量巨大
PB为单位
处理需要投入巨大
性能要求
实时性挑战
时间越久的数据,价值越低
使用流系统的比例越来越高,流处理(流分析)应用将会成为默认应用
安全挑战
技术
数据加密
法理
侵犯隐私
运营商大数据架构
架构驱动的因素
业务快速创新
未来探索
拓展性、灵活性
大数据平台架构
1. 应用层
SQM、CSE、MSS、DMP,这些都是运营商特有的应用
2. 组件层
数据获取(日志数据获取、消息分发中间件)
数据处理(实时处理、批处理)
分析数据(交互式查询,机器学习,数据挖掘)
数据分析结果的展现
3. 资源管理和分配
涉及集群、数据中心的级别的资源统一管理和分配
提了几款Hadoop生态圈的资源调度框架及其调度算法
4. 存储层
RAID
存储加速技术
5. 大数据部署
云化部署
物理机部署
平台发展趋势
云优先
流优先
普适优先
自服务
运营商大数据业务
SQM(运维质量管理)
后分析
CSE(客户体验提升)
用户画像技术
MSS(市场运维支撑)
数据挖掘技术
DMP(数据管理平台)
标签管理和存储
技术
第二部分从业务和技术角度介绍实际案例,让读者理解大数据的用途及技术的本质
数据获取
数据分类
结构化数据
非结构化数据
数据获取组件
探针
探针原理
内置探针
外置探针
探针的关键能力
大容量
协议智能识别
安全的影响
IB技术
网页采集
网络爬虫
基本原理
抓取策略
更新策略
系统架构
简单爬虫Python代码示例
日志收集
Flume
概述
发展历程
架构分析
使用模式
其他日志收集组件
数据分发中间件
数据分发中间件的作用
Kafka架构和原理
产生背景
架构
设计要点
信息存储方式
通过offset查找Message
代码解读
流处理
算子
流的概念
流的应用场景
金融领域
电信领域
业界两种典型的流引擎
Storm
Spark Streaming
融合框架
CEP
CEP是什么
CEP的架构
Esper
实时结合机器学习
Eagle的特点
Eagle概览
交互式分析
交互式分析的概念
MPPDB技术
MPP的概念
典型的MPP数据库
MPP DB调优实战
MPPDB适用场景
SQL on Hadoop
Hive
Phoenix
Impala
大数据仓库
数据仓库的概念
OLTP/OLAP对比
大数据场景下的同与不同
查询引擎
存储引擎
批处理技术
批处理技术的概念
MPP DB技术
MapReduce编程框架
MapReduce起源
MapReduce原理
Shuffle
性能差的主要原因
Spark架构和原理
快速(基于内存), 通用, 可扩展的集群计算引擎
Spark的起源和特点
起源
2009 年,诞生
2010 年, 开源
2013 年, 进入 Apache
2014 年,成为顶级项目
特点
快速
Spark 实现了高效的 DAG 执行引擎, 可以通过基于内存来高效处理数据流。
易用
支持 Scala, Java, Python, R 和 SQL。 支持交互式的 Python 和 Scala 的 shell。
通用
Spark 提供了大量的类库, 包括 SQL 和 DataFrames, 机器学习(MLlib), 图计算(GraphicX), 实时流处理(Spark Streaming)。
可融合性
Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作为它的资源管理和调度器, 并且可以处理所有 Hadoop 支持的数据, 包括 HDFS, HBase等。
Spark的核心概念
driver program 驱动程序
每个 Spark 应用程序都包含一个驱动程序, 驱动程序负责把并行操作发布到集群上。 驱动程序包含 Spark 应用程序中的主函数, 定义了分布式数据集以应用在集群中。
SparkContext
驱动程序通过 SparkContext 对象来访问 Spark, SparkContext 对象相当于一个到 Spark 集群的连接。
sc
在 spark-shell 中, 会自动创建一个SparkContext对象, 并把这个对象命名为sc。
RDDs(Resilient Distributed Dataset) 弹性分布式数据集
一旦拥有了SparkContext对象, 就可以使用它来创建 RDD 了。 例如我们调用sc.textFile(...)来创建了一个 RDD, 表示文件中的每一行文本。
cluster managers 集群管理器
为了在一个 Spark 集群上运行计算, SparkContext对象可以连接到几种集群管理器。 集群管理器负责跨应用程序分配资源。
Standalone
Mesos
YARN
Kubernetes(k8s)
executor 执行器
SparkContext 对象一旦成功连接到集群管理器, 就可以获取到集群中每个节点上的执行器(executor)。 执行器是一个进程(进程名: ExecutorBackend, 运行在 Worker 上), 用来执行计算和为应用程序存储数据。 Spark 会发送应用程序代码(比如:jar包)到每个执行器。 SparkContext 对象发送任务到执行器开始执行程序。
Spark的任务运行模式
Local 模式
Standalone 模式
Yarn 模式
Mesos 模式
Spark Code
RDD
一个 RDD 可以简单的理解为一个分布式的元素集合。 RDD 表示只读的分区的数据集,对 RDD 进行改动,只能通过 RDD 的转换操作, 然后得到新的 RDD, 并不会对原 RDD 有任何的影响。 在 Spark 中, 所有的工作要么是创建 RDD, 要么是转换已经存在 RDD 成为新的 RDD, 要么在 RDD 上去执行一些操作来得到一些计算结果。 每个 RDD 被切分成多个分区(partition), 每个分区可能会在集群中不同的节点上进行计算。
Job
一个 Spark 应用包含一个驱动进程(driver process, 在这个进程中写 spark 的逻辑代码)和多个执行器进程(executor process, 跨越集群中的多个节点)。 Spark 程序自己是运行在驱动节点, 然后发送指令到执行器节点。 一个 Spark 集群可以同时运行多个 Spark 应用, 这些应用是由集群管理器(cluster manager)来调度。 Spark 应用可以并发的运行多个 job。job 对应着给定的应用内的在 RDD 上的每个 action 操作。
持久化
Spark 一个重要能力就是可以持久化数据集在内存中。 当我们持久化一个 RDD 时, 每个节点都会存储他在内存中计算的那些分区, 然后在其他的 action 中可以重用这些数据。 Spark 也会自动的对一些 shuffle 操作的中间数据做持久化操作(比如: reduceByKey)。这样做的目的是为了当一个节点 shuffle 失败了避免重新计算整个输入。 在实际使用的时候, 如果想重用数据, 仍然建议调用 persist() 或 cache()。
检查点
Spark 中对于数据的保存除了持久化操作之外,还提供了一种检查点的机制,检查点(本质是通过将RDD写入Disk做检查点)是为了通过 Lineage 做容错的辅助。 Lineage 过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果之后有节点出现问题而丢失分区,从做检查点的 RDD 开始重做 Lineage,就会减少开销。 检查点通过将数据写入到 HDFS 文件系统实现了 RDD 的检查点功能。 为当前 RDD 设置检查点。该函数将会创建一个二进制的文件,并存储到 checkpoint 目录中,该目录是用 SparkContext.setCheckpointDir()设置的。 在 checkpoint 的过程中,该RDD 的所有依赖于父 RDD中 的信息将全部被移除。 对 RDD 进行 checkpoint 操作并不会马上被执行,必须执行 Action 操作才能触发, 在触发的时候需要对这个 RDD 重新计算。
分区
对于只存储 value的 RDD, 不需要分区器,只有存储 Key-Value 类型的才会需要分区器。 Spark 目前支持 Hash 分区和 Range 分区,用户也可以自定义分区。 Hash 分区为当前的默认分区,Spark 中分区器直接决定了 RDD 中分区的个数、RDD 中每条数据经过 Shuffle 过程属于哪个分区和 Reduce 的个数。
数据读取和保存
共享变量
传递给 Spark 算子(比如: map, reduce 等)的函数都是在远程的集群节点上执行, 函数中用到的所有变量都是独立的拷贝。 这些变量被拷贝到集群上的每个节点上, 都这些变量的更改不会传递回驱动程序。 支持跨 task 之间共享变量通常是低效的, 但是 Spark 对共享变量也提供了两种支持: 累加器和广播变量。
项目实战
Sqark Sql
SparkSession
DataFrame 进行编程
DataSet 进行编程
DataFrame 和 DataSet 之间的交互
RDD,DataFrame 和 DataSet 之间的关系
SparkSQL 程序
Spark Streaming
Structured Streaming
BSP框架
什么是BSP模型
并行模型介绍
BSP模型基本原理
BSP模型的特点
BSP模型的评价
BSP与MapReduce对比
BSP模型的实现
Apache Hama简介
批处理关键技术
CodeGen
CPU亲和技术
机器学习和数据挖掘
机器学习和数据挖掘的联系与区别
典型的数据挖掘和机器学习过程
机器学习概览
学习方式
算法类似性
机器学习&数据挖掘应用案例
尿布和啤酒的故事
决策树用于电信领域故障快速定位
图像识别领域
自然语言识别
交互式分析
深度学习
深度学习概述
机器学习的背景
人脑视觉机理
关于特征
需要有多少个特征
深度学习的基本思想
浅层学习和深度学习
深度学习与神经网络
深度学习的训练过程
深度学习的框架
深度学习与GPU
深度学习小结与展望
资源管理
资源管理的基本概念
资源调度的目标和价值
资源调度的使用限制及难点
Hadoop领域的资源调度框架
YARN
Borg
Omega
资源分配算法
算法的作用
几种调度算法分析
数据中心统一资源调度
Mesos+Marathon架构和原理
Mesos+Marathon小结
多租户技术
多租户概念
多租户方案
基于应用描述的智能调度
Apache Mesos架构和原理
Apache Mesos背景
Apache Mesos总体架构
Apache Mesos工作原理
Apache Mesos关键技术
Mesos与YARN比较
存储是基础
存储硬件的发展
机械硬盘的工作原理
SSD的原理
3DXPoint
硬件发展小结
存储关键指标
RAID技术
存储接口
文件接口
裸设备
对象接口
块接口
融合是趋势
存储加速技术
数据组织技术
缓存技术
大数据云化
云计算定义
应用上云
CloudNative概念
微服务架构
Docker配合微服务架构
应用上云小结
大数据上云
两种模式
集群模式AWSEMR
直接使用集群、简化运维(购买的集群已预装客户所需的组件,例如hadoop,hive,spark,hbase,zookeeper等等)。目前我们的AI部门购买的是这一类大数据云服务(金山云KMR)
直接使用集群、简化运维
服务模式AzureDataLakeAnalytics
用户无需关心集群创建和运维,用户只需提交应用到集群上,按照任务消耗的计算时间付费,例如AWS开源的Lambada就是一种服务模式的大数据云服务
按照任务消耗的计算时间付费
文化
第三部分介绍大数据技术不是孤立的,讲解如何与前沿的云技术、深度学习、机器学习等相结合
大数据技术开发文化
开源文化
DevOps理念
Development和Operations的组合
对应用程序发布的影响
遇到的问题
协调人
成功的关键
速度远比你想的重要
作者介绍
朱洁,2008年加入华为,具有8年大数据研发管理经验,现任华为大数据服务首席规划师。专注于大数据服务平台建设、规划和实践应用,同时参与多项企业级大数据项目解决方案的规划、设计和实施工作,在深化大数据行业落地方面有诸多实践经验,对解读大数据垂直行业的技术创新与开发有诸多独到的见解和心得。 罗华霖,2002年加入华为,华为大数据首席规划师,主导完成华为大数据平台DataSight和华为电信大数据解决方案SmartCare技术规划和架构设计,支持电信运营商数字化战略转型,完成浙江移动、上海联通、沙特STC等200+电信大数据解决方案项目落地。曾任华为软交换首席设计师,华为大型电信大数据解决方案SmartCare首席架构师。