1.3 数据处理技术

Hadoop首次启动时,Hadoop这个名称指的是HDFS和MapReduce处理范式的结合,因为这一结合就是谷歌提出MapReduce时的原始框架。从那时起,有大量的技术被整合到Hadoop中。随着Apache YARN的发展,像Spark这样不同的范式处理软件也开始出现。

Hadoop现在常常被作为大数据软件栈的口语表述,因此本书将谨慎地界定软件栈的范围。本书将介绍的典型数据架构和所选技术如图1-4所示。

1-4

图1-4 典型数据架构和所选技术

这些技术之间的关系是相当复杂的,因为它们之间存在着复杂的相互依赖关系,例如,Spark依赖于GeoMesa,而GeoMesa依赖于Accumulo,而Accumulo又依赖于ZooKeeper和HDFS。因此,为了管理这些关系,出现了Cloudera、Hortonworks HDP以及类似的平台。这些平台提供了统一的用户界面和集中配置。选择何种平台是用户的自由,但建议不要先单独安装部分软件然后再迁移到托管平台上,因为这样会遇到非常复杂的版本问题。在一台“干净”的机器上安装会比较容易,在安装前要确定技术类型。

本书使用的所有软件都是与平台无关的,因此可以适用于之前介绍的常规架构。这些软件可以在不使用托管平台的情况下独立安装,不论在单个还是多个服务器环境中使用都比较简单。

Apache Spark的角色

Apache Spark是将这些组件组合在一起的“胶水”,它渐渐成为软件栈的中心,集成了各种各样的组件但并不使用“硬连线”连接它们。实际上,你甚至能将底层存储机制替换掉。将这一功能与利用不同框架的能力相结合,意味着最初的Hadoop技术实际上是组件而不是框架。架构的逻辑如图1-5所示。

1-5

图1-5 架构逻辑

Spark的发展迅猛,并获得许多行业的认可,很多针对不同组件的原始Hadoop实现已经对Spark进行了重构。这使图1-5所示的架构逻辑更加复杂了,如利用特定组件通常有几种不同的可用编程方式,尤其是命令式和声明式版本,这取决于API是否已从原始Hadoop Java实现中移植。在后面的章节中,本书将尽可能保持Spark的风格。