配置Hive使用Spark执行引擎

news2024/9/29 17:33:37

配置Hive使用Spark执行引擎

  • Hive引擎
    • 概述
    • 兼容问题
    • 安装Spark
    • Spark配置
    • Hive配置
    • HDFS上传Spark的jar包
    • 执行测试
    • 速度对比

Hive引擎

概述

在Hive中,可以通过配置来指定使用不同的执行引擎。Hive执行引擎包括:默认MR、tez、spark

MapReduce引擎:

早期版本Hive使用MapReduce作为执行引擎。MapReduce是Hadoop的一种计算模型,它通过将数据划分为小块并在集群上并行处理来完成计算任务。在MapReduce引擎中,Hive将HiveQL查询转换为一系列Map和Reduce阶段的操作,然后由Hadoop的MapReduce框架执行。

Tez引擎:

从Hive 0.13版本开始,引入了Tez作为新的执行引擎。Tez是Hadoop上的一种高性能的数据处理框架,它提供了更低的延迟和更高的吞吐量。Tez引擎通过以更高效的方式执行HiveQL查询,比传统的MapReduce引擎更快速。Tez引擎将HiveQL查询转换为一种称为有向无环图(Directed Acyclic Graph, DAG)的形式,然后通过并行执行任务来实现查询。

Spark引擎:

将Spark作为Hive的执行引擎,以替代Hive默认的MapReduce执行引擎。通过将Spark作为执行引擎,Hive能够利用Spark的并行处理能力和内存计算优势,从而提高查询性能和处理速度。

Hive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法

Spark on Hive:Hive只作为存储元数据,Spark负责SQL解析优化,语法是Spark SQL语法

使用Spark作为Hive的执行引擎可以带来以下好处:

更快的执行速度:Spark具有内存计算的能力,可以在执行过程中缓存数据,加快查询速度

更高的交互性:Spark支持迭代式查询和实时数据处理,适用于需要更快响应时间的应用场景

更好的资源管理:Spark可以与其他Spark应用程序共享资源,实现更好的资源管理和利用

兼容问题

通常Hive与Spark间存在兼容性,需处理该兼容问题

在Hive解压目录,查看Hive支持的Spark版本

当前Hive版本使用的Spark版本为2.3.0

[root@node01 hive]# ls lib/spark-*
lib/spark-core_2.11-2.3.0.jar     lib/spark-launcher_2.11-2.3.0.jar        lib/spark-network-shuffle_2.11-2.3.0.jar  lib/spark-unsafe_2.11-2.3.0.jar
lib/spark-kvstore_2.11-2.3.0.jar  lib/spark-network-common_2.11-2.3.0.jar  lib/spark-tags_2.11-2.3.0.jar

解决方案:

1.下载与当前Hive版本使用的Spark版本

2.重新编译Hive,使其支持更高的Spark版本

安装Spark

下载Spark

https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.4.0/spark-3.4.0-bin-without-hadoop.tgz

解压及重命名

tar -zxvf spark-3.4.0-bin-without-hadoop.tgz
 
mv spark-3.4.0-bin-without-hadoop spark

Spark配置

在Spark中配置spark-env.sh

修改文件名

mv conf/spark-env.sh.template  conf/spark-env.sh

vim conf/spark-env.sh,添加配置

export SPARK_DIST_CLASSPATH=$(hadoop classpath)

配置SPARK_HOME环境变量

# Spark
export SPARK_HOME=/usr/local/program/spark
export PATH=$PATH:$SPARK_HOME/bin

使配置生效

source /etc/profile

Hive配置

注意:在Hive正常运行的基础之上进行如下额外配置

在hive中创建spark配置文件

vim conf/spark-defaults.conf

参数代表:在执行任务时,会根据如下参数执行

spark.master  yarn
spark.eventLog.enabled   true
spark.eventLog.dir  hdfs://node01:9000/spark/history
spark.executor.memory 1g
spark.driver.memory	1g

在HDFS创建目录,用于存储历史日志

hadoop fs -mkdir -p /spark/history

HDFS上传Spark的jar包

为什么要HDFS上传Spark的jar包?

  • 使用的是spark-3.4.0-bin-without-hadoop.tgz版本,不带hadoop和hive相关依赖

  • Hive任务由Spark执行,Spark任务资源分配由Yarn来调度,该任务有可能被分配到集群的任何一个节点

  • 因此需要将Spark的依赖上传到HDFS集群路径,让集群中任何一个节点都能获取到

hadoop fs -mkdir -p /spark/jars

hadoop fs -put spark/jars/* /spark/jars

修改hive-site.xml文件

<!--Spark依赖位置 注意:端口号9000必须和namenode的端口号一致 -->
<property>
    <name>spark.yarn.jars</name>
    <value>hdfs://node01:9000//spark/jars/*</value>
</property>
  
<!--Hive执行引擎-->
<property>
    <name>hive.execution.engine</name>
    <value>spark</value>
</property>

<!--Hive和Spark连接超时时间-->
<property>
    <name>hive.spark.client.connect.timeout</name>
    <value>10000ms</value>
</property>

执行测试

hive (default)> create table tb_user(id int,name string,age int);

hive (default)> insert into tb_user values(2,'hive',20);

查看Yarn控制台:
在这里插入图片描述

注意:

1.yarn的容量调度器对每个资源队列中同时运行的Application Master占用的资源进行了限制,防止大部分资源都被Application Master占用,导致Map/Reduce Task无法执行

2.如果资源不够,可能造成同一时刻只能运行一个Job的情况。

3.通过hadoop/etc/hadoop/capacity-scheduler.xml参数控制,默认值是0.1,即每个资源队列上Application Master最多可使用的资源为该队列总资源的10%

配置示例:

<property>
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
    <value>0.5</value>
</property>

速度对比

MapReduce引擎:

2023-08-07 20:11:22,834 INFO  [2704e498-c1b3-4dd5-8658-1f0a1393a3bb main] ql.Driver (SessionState.java:printInfo(1227)) - MapReduce Jobs Launched: 
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.51 sec   HDFS Read: 16233 HDFS Write: 276 SUCCESS
2023-08-07 20:11:22,834 INFO  [2704e498-c1b3-4dd5-8658-1f0a1393a3bb main] ql.Driver (SessionState.java:printInfo(1227)) - Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.51 sec   HDFS Read: 16233 HDFS Write: 276 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 510 msec
2023-08-07 20:11:22,834 INFO  [2704e498-c1b3-4dd5-8658-1f0a1393a3bb main] ql.Driver (SessionState.java:printInfo(1227)) - Total MapReduce CPU Time Spent: 3 seconds 510 msec
2023-08-07 20:11:22,834 INFO  [2704e498-c1b3-4dd5-8658-1f0a1393a3bb main] ql.Driver (Driver.java:execute(2531)) - Completed executing command(queryId=root_20230807200946_06634674-a1f5-4cfa-ae34-166bfda3d90e); Time taken: 92.685 seconds
OK
2023-08-07 20:11:22,834 INFO  [2704e498-c1b3-4dd5-8658-1f0a1393a3bb main] ql.Driver (SessionState.java:printInfo(1227)) - OK
2023-08-07 20:11:22,834 INFO  [2704e498-c1b3-4dd5-8658-1f0a1393a3bb main] ql.Driver (Driver.java:checkConcurrency(285)) - Concurrency mode is disabled, not creating a lock manager
col1    col2    col3
Time taken: 96.059 seconds

Yarn引擎:

--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
          STAGES   ATTEMPT        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  
--------------------------------------------------------------------------------------
          STAGES   ATTEMPT        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  
--------------------------------------------------------------------------------------
Stage-0 ........         0      FINISHED      1          1        0        0       0  
Stage-1 ........         0      FINISHED      1          1        0        0       0  
--------------------------------------------------------------------------------------
STAGES: 02/02    [==========================>>] 100%  ELAPSED TIME: 10.24 s    
--------------------------------------------------------------------------------------

由此可大概粗略得知:

在Hive执行引擎中,Yarn引擎的执行效率大概是MapReduce引擎的10倍。

注意:

具体的性能差异取决于多种因素,如数据量的大小、查询的复杂程度、集群的配置等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1077664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用excel表格进行分包和组包

实际使用中&#xff0c;我们可能希望修改某几个数据之后&#xff0c;最终的数据包能够自动发动数据&#xff0c;类似于在给结构体变量修改数据&#xff0c;自动生成完整的结构体&#xff1b; excel语法 1&#xff1a;拆分数据 LEFT(A4,2) – 取A4单元格左边的两个数据 RIGHT(A4…

4.02 用户中心-上传头像功能开发

详细内容请看下面地址&#xff1a; 地址&#xff1a;http://www.gxcode.top/code

【JavaScript】浅拷贝与深拷贝

引言 浅拷贝、深拷贝是对引用类型而言的。 引用类型的变量对应一个栈区地址&#xff0c;这个栈区地址处存储的值是存放的真正的数据的堆区地址。 基本数据类型的变量也对应一个栈区地址&#xff0c;但是该地址存储的是其真正的值。 let a b发生了什么&#xff1f; let obj…

MAX30102心率血氧传感器

MAX30102心率血氧传感器介绍 背景基本功能基本结构基本原理采集方法直通式采集方法反射式采集方法 血氧采集原理Beer-Lambert 定理皮肤组织模型血氧测量过程AC / DC 的计算 心率采集原理 实验结果代码走读资源链接 背景 目前&#xff0c;基本上所有的可穿戴式设备都集成了心率…

leetcode:190. 颠倒二进制位

一、题目&#xff1a; 函数原型&#xff1a; uint32_t reverseBits(uint32_t n) 解释&#xff1a;uint32是无符号int或short的别称&#xff0c;传入的参数是一个32位二进制串&#xff0c;返回值是该32位二进制串逆序后的十进制值 二、思路&#xff1a; 实际上并不需要真的去逆…

竞赛 深度学习 YOLO 实现车牌识别算法

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 该项目较…

计算机网络 | OSI 参考模型

计算机网络 | OSI 参考模型 计算机网络 | OSI 参考模型应用层表示层会话层传输层网络层数据链路层物理层 参考视频&#xff1a;王道计算机考研 计算机网络 参考书&#xff1a;《2022年计算机网络考研复习指导》 计算机网络 | OSI 参考模型 OSI 参考模型自下而上分为7层&…

函数reshape(-1,)里的-1的意思

reshape函数是对narray的数据结构进行维度变换&#xff0c;由于变换遵循对象元素个数不变&#xff0c;在进行变换时&#xff0c;假设一个数据对象narray的总元素个数为N&#xff0c;如果我们给出一个维度为&#xff08;m&#xff0c;-1&#xff09;时&#xff0c;我们就理解为将…

6个视频素材库,免费、高清、无水印,你值得拥有~

现在做自媒体的朋友真的越来越多了&#xff0c;对一些视频素材的要求也越来越高&#xff0c;除了自己拍摄之外&#xff0c;还可以在网上找各种无版权视频素材&#xff0c;但国内高质量视频素材大多数不免费&#xff0c;那免费的视频素材要去哪里找呢&#xff1f; 今天就给大家…

探索乡村新风貌:VR全景记录乡村发展,助力乡村振兴

引言&#xff1a; 中国乡村正经历着巨大变革&#xff0c;长期以来&#xff0c;乡村地区一直面临着人口外流、资源匮乏等问题。然而&#xff0c;近年来&#xff0c;政府的政策支持以及新兴技术的崭露头角&#xff0c;如虚拟现实&#xff08;VR&#xff09;全景记录&#xff0c;…

UEFI之DXE阶段

一、DXE阶段介绍 DXE&#xff08;Driver Execution Environment&#xff09;阶段执行大部分系统初始化工作&#xff0c;进入此阶段时&#xff0c;内存已经可以被完全使用&#xff0c;因而此阶段可以进行大量的复杂工作。 DXE可以分为以下两部分&#xff1a; DXE内核&#xff…

Spring源码解析——AOP的使用及AOP自定义标签

正文 我们知道在面向对象OOP编程存在一些弊端&#xff0c;当需要为多个不具有继承关系的对象引入同一个公共行为时&#xff0c;例如日志&#xff0c;安全检测等&#xff0c;我们只有在每个对象里引入公共行为&#xff0c;这样程序中就产生了大量的重复代码&#xff0c;所以有了…

TensorFlow入门(十七、神经元的拟合原理)

深度学习的概念源于人工神经网络的研究,神经网络是由多个神经元组成,。一个神经元由以下几个关键知识点组成: ①激活函数 ②损失函数 ③梯度下降 单个神经元的网络模型如图所示 用计算公式表达如下: z为输出的结果,x为输入,w为权重,b为偏置值。z…

还在为没机器练手搭集群而苦恼?快进来免费领机器了!

前几天&#xff0c;在我们的技术交流群里看到有小伙伴问&#xff1a;有没有练手搭建Redis集群的方式推荐&#xff1a; 这里不禁让我想到&#xff0c;对于各种集群和分布式基础设施的搭建&#xff0c;其实是每个开发者进阶时候都要经历的一个成长过程。但是&#xff0c;这里对于…

数据结构与算法—时间复杂度和空间复杂度

目录 1. 什么是数据结构&#xff1f; 2.什么是算法&#xff1f; 3、算法的复杂度 4、时间复杂度 (1) 时间复杂度的概念&#xff1a; (2) 大O的渐进表示法&#xff1a; 六个例题&#xff1a; (3) 时间复杂度对比&#xff1a; 两个例题&#xff1a; OJ题分析时间复杂度…

一次HTTP请求流量分析详解(很详细一看就懂)

为什么要研究一个请求需要多少流量&#xff1f; 某天&#xff0c;办公室WIFI挂了&#xff0c;然后就开启热点用了一天&#xff0c;手机流量直接耗光50多个G。 后来排查发现有个任务每分钟成百上千个请求&#xff0c;所以才开始想到研究一下每个请求到底消耗了多少流量。以便在今…

orangepi 香橙派-实时时钟模块使用DS1307/DS3231/PCF8563

香橙派断电后&#xff0c;不带电池&#xff0c;所以时间也没法保持&#xff0c;需要增加模块进行时间处理 支持三种模块 DS1307/DS3231/PCF8563 在某宝上面可以买到 例子 I2cConnectionSettings settings new I2cConnectionSettings(1, Ds1307.DefaultI2cAddress); I2cDevi…

Java每日笔试题错题分析(2)

Java每日笔试题错题分析&#xff08;2&#xff09; 一、错题知识点前瞻第31题第24题第29题第10题 二、错题展示及其解析第31题第24题第29题第10题 一、错题知识点前瞻 第31题 三目运算符类型转换 在三目运算符java开发的环境下可以简单理解为双目运算符的类型转换问题&#xf…

基于YOLOv5、YOLOv8的烟雾报警检测(超实用项目)

目录 1.简介 2.YOLO算法 3.基于YOLOv5、YOLOv8的烟雾检测报警系统 3.1gui界面主代码 3.2YOLOv5主代码 视频已上传b站 YOLOv5、YOLOv8检测-烟雾检测报警系统_哔哩哔哩_bilibili 本文为系列专栏&#xff0c;包括各种YOLO检测算法项目、追踪算法项目、双目视觉、深度结构…

idea提示:无法下载源代码,找不到此对象的源代码

最近在入门消息队列&#xff0c;在项目里新引入了一个RabbitMQ的依赖&#xff0c;新建完Channel对象之后&#xff0c;调用该对象的方法queueDeclare想创建队列&#xff0c;结果发现方法里的参数都没有提示。遂点进去看&#xff0c;卧槽&#xff0c;源码下载不下来&#xff0c;这…