• 交互式计算引擎常见的开源实现


                    交互式计算引擎常见的开源实现

    摘自:《大数据技术体系详解:原理、架构与实践》

      交互式处理(Interactive Processing)是操作人员和系统之间存在交互作用的信息处理方式。操作人员通过终端设备(如输入输出系统)输入信息和操作命令,系统接到后立即处理,并通过终端设备显示处理结果。在大数据领域中,交互式计算(处理)引擎是针对大数据具备交互式分析能力的分布式计算引擎,它通常用于OLAP(Online Analytical Processing,联机分析处理)场景。相比于批处理引擎(MapReduce或Hive),它对数据处理性能要求更高。

      为了实现高性能数据处理,交互式计算引擎通常采用(Massively Parallel Processing)架构,并充分使用内存加速。为了方便数据分析人员表达自己的查询意图,交互式计算引擎通常支持SQL或JSON等查询语言。当前比较主流的交互式计算引擎包括ROLAP(Relational OLAP)类型的SQL查询引擎Impala和Presto,MOLADP(Multidimenisional OLAP)类型的OLAP查询引擎Druid和Kylin等。

        Impala官网:http://impala.apache.org/.
    
        Presto官网:https://prestodb.github.io/.
    
        Druid官网:http://druid.io/.
    
        Kylin官网:http://kylin.apache.org/.

    一.交互式计算引擎产生背景

        在开源大数据领域,交互式引擎并不是从一开始就出现的。起初,大数据领域数据处理引擎以MapReduce为主,但MapReduce引擎采用了批处理设计理念,数据处理性能低下:
            IO密集型:
            Map阶段中间结果写磁盘,Reduce阶段写HDFS,多个MapReduce作业之间通过共享存储系统(HDFS)交换数据。
         任务调度和启动开销大:
            大量任务需要分布式调度到各个节点上,且每个任务需启动一个Java虚拟机运行。
         无法充分利用内存:
            MapReduce是十多年前提出的分布式技术,当时内存价格昂贵,所以设计理念充分使用磁盘,而如今内存的价格越来越便宜,新行计算引擎可尝试通过内存加速。
         Map端和Reduce段均需要排序:
            这是MapReduce设计理念决定的,使得MapReuce无法很好地应对交互式处理场景。

      为了克服MapReduce地性能缺陷,Google提出了新型交互式计算引擎Dremel,它构建于Googel地GFS(Google File System)等系统之上,支撑了Google地数据分析服务BigQuery等诸多服务。Dremel的技术亮点主要有两个:一个是采用了MPP架构,使用了多层查询树,使得任务可以在数千个节点上并行窒息感和聚合结果;二是实现了嵌套数据的列式存储 ,避免读取不必要的数据,大大减少网络和磁盘IO。

      受Google Dremel的启发,Cloudera等公司开发了Impala,Facebook开发了Presto并将之开源。
        

      

    二.交互式查询引擎分类

        交互式计算引擎是具备交互式分析能力的分布式大数据计算引擎,它常用于OLAP场景。OLAP有很多实现方法,根据存储数据的方式不同可以分为ROLAP,MOLAP,HOLAP等。
    
        (1)ROLAP
          基于关系型数据库的OLAP实现(Relational OLAP)。它以关系型数据库为核心,以关系型结构进行多维度的表示和存储。它将多维结构划分为两类表:一类是事实表,用来存储数据和纬度关键字;另一类是纬度表,即对每个纬度至少使用一个表来存放纬度层次,成员类别等纬度描述信息。
          ROLAP的最大好处是可以实时的从源数据中获取最新数据更新,以保持数据实施性,缺点在于运算效率比较低,用户等待响应时间比较长。
    (2)MOLAD       基于多维度的OLAP实现(Multidimensional OLAP)。它以多位数据组织方式为核心,使用多纬数据存储数据。多维数组在存储系统中形成“数据立方体(Cube)”的结构,此结构是经过高度优化的,可以最大程度地提高查询能力。
          MOLAP的优势在于借助数据多纬预处理显著提高运算效率,主要额缺陷在于占用存储空间和数据更新有一定延滞。 (3)HOLAP
          基于混合组织的OLAP实现(Hybrid OLAP),用户可以根据自己的业务需求,选择哪些模型采用ROLAP,哪些采用MOLAP。一般来说,将不常用或需要灵活定位的分析使用ROLAP方式,而常用,常规模型采用MOLAP实现。
      
      Impala和Presto可用于ROLAP场景,而Druid和Kylin常用于MOLAP场景。也有人将Druid规划到“HOLAP”范畴,因为它不会进行预计算,因此是一种“ROLAP”,但同时它此用了列式存储,且为非关系型模型,因此也是一种“MOLAP”。

    三.常见的开源实现

        在大数据生态圈中,主流的应用于ROLAP场景的交互式计算引擎包括Impala和Prosto,它们的特点如下:
        (1)Hadoop native:
            跟Hadoop生态系统有完好的结合,包括:
              可直接在Hive Metastore对接,处理Hive中的表。
              可直接处理存储在HDFS和HBase中的数据。
        (2)计算与存储分析:
            它们仅仅是查询引擎,不提供数据存储服务,所有要处理的数据都存储在第三方系统中,比如Hive,HDFS和HBase等。
        (3)MPP架构
            采用经典的MPP架构,具有较好的扩展性,能够对应TB甚至PB级别数据的交互式查询需求。
        (4)嵌套式数据存储:
            支持常见的列式存储格式,比如ORC(仅Presto支持)和Parquet(Impala和Presto均支持)。
      
      主流的应用于MOLAP场景的交互式计算引擎包括Druid和Kylin,它们的特点如下:
         (1)数据建模:
            将数据分为纬度和度量两类,且所有查询必须针对以上两类列进行。
         (2)数据预计算:
            为了提高数据查询效率,MOLAP引擎一般会根据纬度和度量列,预先生成计算结果。

    四.博主推荐阅读

      链接一:交互式计算引擎ROLAP篇(https://www.cnblogs.com/yinzhengjie/p/10859658.html

      链接二:交互式计算引擎MOLAP篇(https://www.cnblogs.com/yinzhengjie/p/10865368.html

  • 相关阅读:
    使用SWFUpload进行多文件上传
    TSQL递归
    Silverlight之视频录制
    Silverlight之摄像头麦克风使用
    Silverlight之文件上传组件
    SQL FOR XML
    XAML开发入门之XAML核心语法
    Ajax技术三种实现方式之xmlhttp+httphandler篇 (三)
    Ext中超时设定 ext.ajax.timeout
    后台执行js先执行前端的JS函数,再执行后台函数的按钮实
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/10850846.html
Copyright © 2020-2023  润新知