0%

CDH 中使用 Hive on Spark

Content here


前言

使用 Hive insert SQL 后查看 Yarn 发现其跑的是 MR 方式

这里想改用 Spark 引起来缩短 HiveQL 的响应时间

有两种方式

  • SparkSQL
  • Hive on Spark

两种方式都可以,看个人习惯

Hive on Spark 大体与 SparkSQL 结构类似,只是 SQL 引擎不同,但是计算引擎都是 Spark

本文主要介绍 Hive on Spark

实操

CDH Hive 配置中可以看到有官方的提示配置文档

要将 Hive 配置为在 Spark 上运行,请执行以下两个步骤

  1. 配置 Hive 依赖项为 Spark 服务
  2. 配置 Hive 客户端以使用 Spark 执行引擎

配置 Hive 依赖项为 Spark 服务

按照官方文档操作即可

  1. 在 Cloudera Manager 管理控制台中,转到 Hive 服务
  2. 单击配置选项卡
  3. 搜索 Spark On YARN 服务。要配置 Spark 服务,请选择 Spark 服务名称。要删除依赖项,请选择 none
  4. 点击保存更改。
  5. 进入Spark服务。
  6. 在 HiveServer2 所在的主机上添加 Spark 的 gateway 角色(即客户端)
  7. 重启 Hive、Spark 服务

配置 Hive 客户端以使用 Spark 执行引擎

CDH 中的 Hive 支持两个执行引擎: MapReduce 和 Spark

要配置执行引擎,请执行以下步骤之一

beeline/hive: 运行 set hive.execution.engine=engine 命令,engine 选项要么wei mr 要么为 spark
默认为 mr

1
2
3
4
set hive.execution.engine=spark;

# 查看当前的设置执行引擎
set hive.execution.engine;

Cloudera Manager(影响所有查询,不推荐):

  1. 转到 Hive 服务
  2. 单击配置选项卡
  3. 搜索 “execution”
  4. 将”Default Execution Engine”属性设置为 MapReduce 或 Spark。默认值为 MapReduce
  5. 重启 Hive 服务

优化

官方文档中提到性能

暂未研究,有兴趣的可以自行看看


参考链接