数据挖掘的大规模计算
商品硬件问题
挑战:
- 您如何分配计算?
- 我们怎样才能使分布式的编写变得容易程式?
- 机器故障:
- 一台服务器可以使用3年(1,000天)
- 如果您有1,000台服务器,则预计每天1台存在问题
- 使用1M机器,每天有1000台机器发生故障!
问题和解决方案
问题:通过网络复制数据需要时间
理念:
- 将计算带入数据
- 多次存储文件以提高可靠性
Spark / Hadoop解决了这些问题
- 存储基础架构–文件系统
- Google:GFS。 Hadoop:HDFS
- 编程模型
- MapReduce
- Spark
存储基础架构
问题:
如果节点发生故障,如何持久存储数据?
答:
- 分布式文件系统
- 提供全局文件名称空间 Provides global file namespace
典型用法:
- 巨大的文件(GB到TB的100s)
- 数据很少到位更新
- 阅读和追加很常见
分布式文件系统
块服务器
- 文件分为连续的块
- 通常每个块是16-64MB
- 复制的每个块(通常为2x或3x)
- 尝试将副本保存在不同的机架中
主节点
- 亦称Hadoop HDFS中的名称节点
- 存储有关文件存储位置的元数据
- 可能被复制
用于文件访问的客户端库
- 与主对话以查找块服务器
- 直接连接到块服务器以访问数据
- 可靠的分布式文件系统
- 数据以“块”形式分布在计算机之间
- 每个块都在不同的计算机上复制
- 从磁盘或计算机故障中无缝恢复
MapReduce是一种编程风格
设计用于:
- 简单的并行编程
- 硬件和软件的无形管理
失败
- 轻松管理超大规模数据
它有几种实现,包括Hadoop,Spark(在此类中使用),Flink和最初的Google实现只称为“ MapReduce”
3 steps of MapReduce
- Map
- Group by key
- Reduce:
MapReduce范式
并行
模式
Spark
是最流行的数据流系统 Data-Flow Systems
弹性分布式数据集
Resilient Distributed Dataset (RDD)