1.7 大数据处理平台
因为历史的原因,“系统”、“平台”、“环境”这些词的含义从一开始就有点模糊。按理说,“系统”应该是一整套提供着某种特定应用功能的独立而完整的设施,里面包括具体的应用和支撑这些应用运行的“平台”和“环境”。而“平台(platform)”,则是为各种具体应用提供用来构成系统的基础设施。比方说,汽车的底盘就叫platform,在上面加上不同的车厢和发动机,就成了不同车型的汽车,那就相当于一个系统。可是,按这样的理解,“操作系统”就应该称为“操作平台”,可“操作系统”却是早就已经约定俗成的称呼。再说,操作平台也并不等于操作系统,因为在应用和操作系统之间还有各种中间层。
就大数据处理而言,由于数据量大导致计算量大,就需要有多机(集群)并行处理。既然如此,具体的应用软件(比方说数据挖掘)就不能直接以单机操作系统为平台,而需要有一个面向计算机集群、支持并行计算特别是数据流计算的跨机器节点的统一平台。在某种意义上,这样的大数据处理平台就相当于“集群操作系统”。
不过,就像单机操作系统,即单机上的处理平台一样,应用的目标不同,大数据处理平台的结构和功能也就应该有所不同。平台是为应用服务的,应该适应具体应用的要求,而不是让平台决定可以有什么样的应用。那么针对不同的应用目标会有些什么样的大数据处理平台呢?
首先是能支持什么样的数据流拓扑。有些应用只要有极简的MapReduce就够了;还有些应用则要求能支持链状数据流,有些则进而要求能支持一般的DAG,即树形的数据流;有些可能还要求允许有成环的数据流拓扑。
即使数据流的拓扑相同,是否支持实时处理也是个重要的需考虑的问题。如前所述,具体的应用有OLTP与OLAP之分。前者,即“在线事务处理”,是有实时要求的,这样的处理必须是真正的数据流(而不是工作流)才能支持。而后者,即“在线分析处理”甚至“离线分析处理”,则“批处理”式的工作流就可以支持。
应用界面上为用户提供什么样的语言,有什么样的语法语义,也是个问题。
还有系统可靠性和安全性的考虑和措施。
到了具体实现的层面,则还有更多的因素。
所有这些因素的不同组合,就决定了可以有结构上和形态上不同的各种大数据处理平台。而本书所介绍的Hadoop,只是各种可能中的一种,但也是被广泛接收和使用的一种。