处理模型更为多样MPP 数据库是一种将硬盘上的存储布局、查询计划生成、调度和执行等功能模块紧密糅合到一块的整体式软件 。这些组件都可以针对数据库的特定需求进行调整和优化,针对目标查询类型,系统在整体上可以获得很好的性能 。此外,SQL 作为一种声明式的查询语言 , 表达能力很强、语义简洁优雅,让人可以通过图形界面而无需编写代码就可以完成对数据进行访问 。
但从另外的角度来说,并非所有类型的数据处理需求都可以合理地表达为 SQL 查询 。例如,如果你想要构建机器学习和推荐系统、支持相关性排序的全文索引引擎、进行图像分析,则可能需要更为通用的数据处理模型 。这些类型的数据处理构建通常都和特定应用强耦合(例如,用于机器学习的特征工程、用于机器翻译的自然语言模型、用于欺诈预测的风险预估函数),因此不可避免地需要用通用语言写代码来实现 , 而不能仅仅写一些查询语句 。
MapReduce 使工程师能够在大型数据集尺度上轻松的运行自己的代码(而不用关心底层分布式的细节) 。如果你已经有 HDFS 集群和 MapReduce 计算框架,你可以基于此构建一个 SQL 查询执行引擎,Hive 项目就是这么干的 。当然,对于一些不适合表达为 SQL 查询的处理需求,也可以基于 Hadoop 平台来构建一些其他形式的批处理逻辑 。
【DDIA:批处理和 MPP 数据库千丝万缕】但后来人们又发现,对于某些类型的数据处理, MapReduce 限制太多、性能不佳,因此基于 Hadoop开发了各种其他的处理模型(在之后 “MapReduce 之外”小节中会提到一些) 。仅有 SQL 和 MapReduce 这两种处理模型是不够的,我们需要更多的处理模型!由于Hadoop平台的开放性,我们可以较为容易实现各种处理模型 。然而,在 MPP 数据库的限制下,我们想支持更多处理模型基本是不可能的 。
更为重要的是,基于 Hadoop 实现的各种处理模型可以共享集群并行运行,且不同的处理模型都可以访问 HDFS 上的相同文件 。在 Hadoop 生态中,无需将数据在不同的特化系统间倒来倒去以进行不同类型的处理:Hadoop 系统足够开放,能够以单一集群支持多种负载类型 。无需移动数据让我们更容易的从数据中挖掘价值,也更容易开发新的处理模型 。
Hadoop 生态系统既包括随机访问型的 OLTP 数据库,如HBase(参见“SSTables和LSM-Trees”),也包括 MPP 风格的分析型数据库,例如 Impala 。HBase 和 Impala 都不依赖 MapReduce 进行计算,但两者都使用 HDFS 作为底层存储 。它们访问数据和处理数据的方式都非常不同,但却可以神奇的并存于 Hadoop 生态中 。
面向频繁出错设计在对比 MapReduce 和 MPP 数据库时 , 我们会发现设计思路上的两个显著差异:
- 故障处理方式:取决于对处理成本、故障频次的假设
- 内存磁盘使用:取决于对数据量的假设
如果在执行查询请求时节点崩溃,大多数 MPP 数据库会中止整个查询,并让用户进行重试或自动重试 。由于查询运行时通常会持续数秒或数分钟 , 这种简单粗暴的重试的处理错误的方式还可以接受 , 毕竟成本不算太高 。MPP 数据库还倾向将数据尽可能地存在内存里(例如在进行 HashJoin 的 HashBuild 时),以避免读取磁盘的额外损耗 。
与之相对,MapReduce 在遇到某个 map 或 reduce 子任务运行出错时,可以单独、自动地进行重试,而不会引起整个 MapReduce 任务的重试 。此外,MapReduce 倾向于将数据(甚至是 map 到 reduce 中间环节的数据)进行落盘,一方面是为了容错 , 另一方面是因为 MapReduce 在设计时假设面对的数据量足够大,内存通常装不下 。
因此,MapReduce 通常更适合大任务:即那些需要处理大量数据、运行较长时间的任务 。而巨量的数据、过长的耗时 , 都会使得处理过程中遇到故障司空见惯 。在这种情况下,由于一个子任务(task) 的故障而重试整个任务(job) 就非常得不偿失 。当然,即使只在子任务粒度进行重试,也会让那些并不出错的任务运行的更慢(数据要持久化) 。但对于频繁出错的任务场景来说,这个取舍是合理的 。
但这种假设在多大程度上是正确的呢?在大多数集群中,机器确实会故障 , 但非常低频——甚至可以低到大多任务在运行时不会遇到任何机器故障 。在这种情况下,为了容错引入的巨量额外损耗值得吗?
推荐阅读
- 使用旧域名创建新站点获取快速收录和排名的实践心得
- 办公风水技巧
- 为什么我每天睡够了8小时,黑眼圈和眼袋还是很重啊?
- 怎么区分土鸡蛋和饲料蛋,粮食鸡蛋和饲料鸡蛋的区别
- 防爆单反相机和防爆卡片相机有哪些区别呢
- 杨紫琼办婚宴,吕克贝松和何超琼到场,85岁母亲看着比女婿还年轻
- excel表格如何设置自动和
- “四川火锅”和“重庆火锅”区别大!别再以为是同一种了
- 如若一个女人和你分享这四种私人话题,暗示她已经爱上你了
- 57岁叶子楣复出!和男友未婚没有遗产,粉丝合影要红包
