您的位置:

Hive on Spark的部署及优化

一、Hive on Spark概述

Hive on Spark是指在Hive中通过Spark作为Hive的计算引擎。在Hive on MapReduce中,SQL语句被转换为MapReduce作业并在Hadoop集群上运行。Hive on Spark提供了更快的查询速度和优化查询。

二、Hive on Spark部署

部署Hive on Spark有两种方式:一种是独立部署,另一种是通过Hortonworks HDP平台安装。下面介绍Hive on Spark的独立部署步骤:

1.安装Spark并配置Hive on Spark参数

# 安装Spark
wget https://mirrors.sonic.net/apache/spark/spark-3.1.1/spark-3.1.1-bin-hadoop2.7.tgz
tar -xvf spark-3.1.1-bin-hadoop2.7.tgz
mv spark-3.1.1-bin-hadoop2.7 /usr/local/spark

在Hive的配置文件hive-site.xml中追加以下参数:

  
  
   hive.execution.engine
   
  
   spark
   

  

  
   spark.master
   
  
   local[*]
   

  

  
   spark.executor.memory
   
  
   1g
   

  

  
   spark.driver.memory
   
  
   1g
   

  

  
   spark.eventLog.enabled
   
  
   true
   

  

  
   spark.eventLog.dir
   
  
   /app/spark/logs
   

  

2.将hive-exec.jar复制到Spark_HOME/jars中

cp /usr/local/hive/lib/hive-exec-*.jar /usr/local/spark/jars/

3.配置Spark Thrift Server

在Spark的配置文件spark-defaults.conf中加入以下内容:

spark.master yarn-client
spark.eventLog.enabled true 
spark.eventLog.dir hdfs://hdfs-host:9000/apps/spark2.0/event-logs 
spark.executor.memory 4g 
spark.executor.instances 2 
spark.yarn.queue root.queue 
spark.yarn.jars hdfs://hdfs-host:9000/user/spark/share/lib/*.jar 
spark.sql.hive.thriftServer.singleSession true 
spark.sql.hive.thriftServer.yarn.resourcemanager.address yarn-host:8032 
spark.sql.hive.thriftServer.zookeeper.quorum zk-host:2181,other-zk-host:2181 
hive.server2.thrift.min.worker.threads 64 
hive.server2.thrift.max.worker.threads 500 

三、Hive on Spark优化

要优化Hive on Spark的性能,在以下方面进行优化:

1.合适的硬件和资源的调配

合适的硬件如高速内存,快速的CPU以及高速的SSD硬盘可以显著提高Hive on Spark的性能。此外,为了实现最好的性能,需要调整资源管理器的设置,以尽可能高效地使用可用资源。

2.数据分区

在进行大规模的数据集查询时,应该将数据分区以提高查询性能。数据分区可以按照日期、地域等方式进行分区。

3.使用Bucketing

Bucketing是将表按照彼此之间的分桶列进行分割,提高查询性能的技术。Bucketing技术在Hive on Spark中起到尤为重要的作用。同时,Bucketing还可以提高连接操作的性能,因为每个桶都是一个文件,这样避免了读取大量的无关数据。

4.使用分区和Bucketing

通过同时使用分区和Bucketing,可以发挥两者的优势,进一步提高Hive on Spark的性能。

5.使用批处理技术

当进行大规模的数据集查询时,使用批处理技术可以提高查询速度。这可以通过使用Spark的RDD或DataFrame API来实现。

结论

本文详细介绍了Hive on Spark的部署和优化。通过采用合适的硬件和资源的调配、数据分区、Bucketing、批处理等技术,可以提高Hive on Spark查询的性能。在实际应用中,我们需要根据不同的数据量、查询方式和硬件设备等因素,采用不同的优化策略。