hive2.0的LLAP特性及DPC-H数据性能测试测试

1. hive2.x新功能及 LLap 特性介绍

    1.  (对于hive的介绍我就不多说了)  hive 2.1 发布后增加了许多新功能,官网里面提到了以下几点(翻译):

  • 使用Hive LLAP进行交互式查询。 LLAP在Hive 2.0中引入,在Hive 2.1中进行了改进,使其性能比Hive 1提高了25倍
  • 强大的SQL ACID支持,拥有60多个稳定性修复程序。
  • 2x通过更智能的CBO实现更快速的ETL,更快的类型转换和动态分区优化。
  • 程序化SQL支持,大大简化了从EDW解决方案迁移的过程。
  • 对文本文件进行矢量化支持,在没有任何ETL的情况下引入快速分析选项。
  • 大量新的诊断和监测工具,包括新的HiveServer2 UI,新的LLAP UI和改进的Tez UI。
  • 总共有2100多个功能,Hive 2.0和Hive 2.1之间的改进和修复。 创新速度巨大,势头继续增长。

    2. LLAP(Live Long and Process)特性介绍

         使用HIVE LLAP可提高25倍的查询性能, LLAP将计算带入内存(而不是计算到磁盘),它智能地缓存内存,并在所有客户       端之间共享这些数据,同时保留在群集内弹性缩放的能力。

        性能提升的主要原因:

  •   Smarter Map Joins

       Hive on Tez是一个无共享架构:每个处理单元独立工作,拥有自己的内存和磁盘资源。 LLAP是一个多线程进程,允许worker共享内存。 map端连接需要将散列表以1:1分布到每个map任务中。 如果你在一个节点上有24个容器,你需要做24个散列表的副本并分发出去。 使用LLAP,您可以为每个节点构建一次散列表,并将其缓存在所有worker的内存中。

  • Better MapJoin Vectorization for Joins

    hive2 的mapjoin 的优化,对小维度表的 join现在运行的速度与显式扩展列表一样快


  • A Fully Vectorized Pipeline

    Hive 2在reduce端引入了Map Join vectorization特性,它具有动态分区的哈希join,本质上是MapJoin优化的缩减版本。 通过这种优化,reducer输入被排序并通过保持在reduce端的散列表进行流传输。 优化将大维度表分成许多小的不相交维度表
  • A Smarter CBO

3. 测试

  (1)本文的测试环境是ambari 2.6.1 + hadoop 2.7.3

 Hive 1:
    Hive 1.2.1
    Tez 0.7.0
    Hadoop 2.7.3

hive2:
    Hive 2.1.0
    Tez 0.8.4-snapshot

    Hadoop 2.7.3

(2)其它 Hive / Hadoop 设置:(笔者在这里没配置,你们可以自己配)

    除了ambari 默认的配置外,还可以对hive进行一些优化:   

  • hive.vectorized.execution.mapjoin.native.enabled=true;
  • hive.vectorized.execution.mapjoin.native.fast.hashtable.enabled=true;
  • hive.vectorized.execution.mapjoin.minmax.enabled=true;
  • hive.vectorized.execution.reduce.enabled=true;
  • hive.llap.client.consistent.splits=true;
  • hive.optimize.dynamic.partition.hashjoin=true;

硬件:

     四台阿里云服务节点

 修改ambari里面的配置,开启LLAP

hive2.0的LLAP特性及DPC-H数据性能测试测试

 

Data:

  • 对于数据方面,我用TPC-H 生成数据, 存储格式TEXTFILE . 在Hive1和Hive2中使用相同的数据与表结构.

查询:

4. TPC-H 的安装(官网下载地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.asp)

  •  官网下载不能,好像是需要*吧,我这里下载了一份 tpc-h-tool.zip
  • 解压到自己的安装目录   我这里是/data0  解压完是 hive2.0的LLAP特性及DPC-H数据性能测试测试
  • 进入后找到dbgen    进入这个目录 ,会看到 makefile.suite,备份并重命名它为makefile
  • 修改makefile 里面的内容
            CC      = gcc  
            DATABASE= DB2
            MACHINE = LINUX  

            WORKLOAD = TPCH

  •   保存,执行make 编译(可能会报错,百度一下就行)
  •  编译完成会出现一个目录 dbgen 和 qgen
  • 然后生成数据  ./dbgen -vf -s 5 -T O   生成5 G 数据(命令里5的含义)
  • 会生成8 张表,这时候你就可以测试了
5.测试开始
  •  用上述的环境进行hive1 和hive2 llap的测试
  • https://github.com/t3rmin4t0r/hive-testbench  这个地址里面有测试sql 
  •   经测试得出用的tpch_query8.sql 数据5G hive1 结果如下:

      hive2.0的LLAP特性及DPC-H数据性能测试测试

  •  hive2 测试结果(beeline 下测试的):

         93.125 seconds 

   结论:大概快了15倍,小点的查询快6、7倍    笔者认为数据小,官网建议1TB 数据做测试,大家可以测试看看对比,1TB差距25 倍差不多吧,所以说  用hive2 吧  不过内存也要注意哟!!! 另外可以通过新的Hive Server2 Web UI,LLAP Web UI和Tez Web UI查看Hive相关的HQL查询以及关联的作业状态和日志。   端口去配置文件里面看 


转载请注明出处:https://blog.****.net/zilianxiaozhu/article/details/80320759