Hive On Spark

本文介绍了将Hive执行引擎从MapReduce切换到Spark的实践过程,包括遇到的问题、配置要点和注意事项。作者指出Hive on Spark的优势在于内存计算,避免磁盘I/O。配置中强调了Hive与Spark版本兼容性的重要性,以及Hive配置文件的修改,如`spark.yarn.jars`和`hive.execution.engine`等。文章还提供了上传Spark JAR到HDFS的命令,并提及启动Hive和测试的步骤。

序言

不推荐这种方式,感觉HiveOnSpark的官网更新速度比较慢,同时HiveOnSpark的解决方案需要指定的Spark.Hive 这块并没有很好的做一个封装,造成我们部署中途问题点很多cuiyaonan2000@163.com

参考链接:

  1. https://cwiki.apache.org//confluence/display/Hive/Hive+on+Spark:+Getting+Started

简介

总的来说是将Hive的执行引擎替换成spark.

默认的是MR,且我们在启动Hive的时候会看到如下的内容(所以我们应该用spark来做为执行引擎cuiyaonan2000@163.com)

 既然要换成spark,那我们知道Hadoop自带的Mr是不能用了,且不包含spark的相关服务,所以配置修改,增加spark的jar就是必不可少的工作了.

其原因有一个大家最能说到的就是:HiveOnMr是是把中间结果写入硬盘,而HiveOnSpark是写入内存的cuiyaonan2000@163.com

根据官网的内容我们要注意,HiveOnSpark 的如下两点,

  1. spark放置到Hdfs中的jar不应包含hive的香相关jar
  2. hive on spark 默认基于spark on yarn模式 

Spark与Hive的版本问题

按照官网:

https://cwiki.apache.org//confluence/display/Hive/Hive+on+Spark:+Getting+Started

以及很多的其它博主的分析我们知道,Hive On Spark该分支是在特定的Spark上进行的.所以版本的差异可能决定了你的最终结果cuiyaonan2000@163.com

Hive配置文件

这里只说明针对Hive On MR不一样的的配置信息,其它的先关配置跟Hive On MR是一样的.

 <!--Spark依赖的JAR位置,下面会介绍如何上传jar包的hdfs路径-->
<property>
  <name>spark.yarn.jars</name>
  <value>hdfs://127.0.0.1:8020/spark-jars/*</value>
</property>
  
<!--Hive执行引擎,使用spark-->
<property>
  <name>hive.execution.engine</name>
  <value>spark</value>
</property>

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

SparkJars

下载下来的Spark的lib包下,可以看到有很多的hive的jar.但是我们除了hive-storage-api-2.7.2.jar都是不需要的.所以要先删除这些hive包,然后在把lib目录下的包都上传到指定的hdfs中

相关命令

#该目录存储sparks的jar
[root@cuiyaonan2000 jars]# hdfs dfs -mkdir -p /spark-jars


[root@cuiyaonan2000 jars]# hdfs dfs -put ./myjars/* /spark-jars


#该目录存储spark日志,后面会用到
[root@cuiyaonan2000 jars]# hdfs dfs -mkdir -p /spark-log

Spark-default.conf

在Hive的conf下创建该spark-default.conf并添加如下内容

spark.master             yarn
spark.eventLog.enabled   true
spark.eventLog.dir       hdfs://ip:8020/spark-log

spark.executor.memory    4g    # 每个执行程序进程使用的内存量。

spark.driver.memory      4g    # 分配给远程Spark上下文(RSC)的内存量。我们推荐4GB

spark.serializer         org.apache.spark.serializer.KryoSerializer

spark.executor.cores     2     #每个执行者的核心数量。

spark.yarn.driver.memoryOverhead    400m  #我们推荐400(MB)

启动

nohup bin/hive --service metastore &


nohup bin/hive --service hiveserver2 &

测试

使用hive bin目录下的beeline测试,后一定要insert成功否则不能验证.

### Hive on Spark 配置与使用指南 Hive on Spark 允许将 Hive 查询的执行引擎切换为 Spark,从而利用 Spark 的内存计算优势提升查询性能。以下是配置和使用 Hive on Spark 的详细指南。 #### 1. 环境准备 在开始配置之前,确保以下组件已正确安装并运行: - Hadoop 集群(HDFS 和 YARN) - Spark 集群(基于 Hadoop 集群安装) - Hive 服务 Hive 默认使用 MapReduce 作为执行引擎,要切换为 Spark,需要确保 HiveSpark 的版本兼容性。例如,Hive 3.1.3 可以与 Spark 3.0.0 配合使用 [^3]。 #### 2. 配置 Hive 使用 Spark 作为执行引擎 在 Hive 配置文件中设置以下参数以启用 Spark 作为执行引擎: ```sql SET hive.execution.engine=spark; SET spark.home=/path/to/spark; SET spark.master=yarn; SET spark.submit.deployMode=cluster; ``` - `hive.execution.engine`:设置为 `spark` 以启用 Spark 作为执行引擎。 - `spark.home`:指定 Spark 的安装路径。 - `spark.master`:定义 Spark 的运行模式,通常为 `yarn`。 - `spark.submit.deployMode`:设置为 `cluster` 以在 YARN 集群模式下运行 [^4]。 #### 3. Spark 相关参数配置 为了优化 Hive on Spark 的性能,可以调整以下 Spark 参数: ```sql SET spark.eventLog.enabled=true; SET spark.executor.memory=4g; SET spark.executor.instances=10; SET spark.driver.memory=2g; SET spark.dynamicAllocation.enabled=true; ``` - `spark.eventLog.enabled`:启用事件日志记录,便于调试和性能分析。 - `spark.executor.memory`:设置每个 Executor 的内存大小。 - `spark.executor.instances`:指定 Executor 的数量。 - `spark.driver.memory`:设置 Driver 的内存大小。 - `spark.dynamicAllocation.enabled`:启用动态分配以根据负载自动调整 Executor 数量 [^2]。 #### 4. 验证配置 配置完成后,可以通过执行简单的 HiveQL 查询来验证 Hive on Spark 是否正常工作: ```sql SELECT * FROM sample_table LIMIT 10; ``` 如果查询成功执行并返回结果,则表示 Hive on Spark 配置正确。 #### 5. 性能调优建议 为了进一步提升 Hive on Spark 的性能,可以参考以下调优策略: - **内存管理**:根据数据量和集群资源调整 `spark.executor.memory` 和 `spark.driver.memory`。 - **动态资源分配**:启用 `spark.dynamicAllocation.enabled` 以优化资源利用率 [^5]。 - **并行度设置**:通过 `spark.sql.shuffle.partitions` 调整 Shuffle 分区数,以优化并行计算效率。 - **缓存机制**:对频繁访问的数据表使用 `CACHE TABLE` 命令,减少重复计算 [^1]。 #### 6. 注意事项 - 确保 HiveSpark 的版本兼容性,避免因版本不匹配导致的问题 [^3]。 - 在调整配置参数时,应根据实际业务需求和系统资源状况进行合理设置 。 - 动态分配模式更适合多用户共享的 Hive 集群环境,以提高资源利用率 [^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuiyaonan2000

给包烟抽吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值