Skip to content

Local模式

Hive支持两种本地模式:

  • 完全本地运行

通过配置mapreduce.framework.name=local,可以让hive在本地任务中运行。

  • 自动本地运行

通过hive.exec.mode.local.auto配置,可以让HIVE自动判断任务规模,符合以下条件的任务,在本地运行。

- 作业的总输入大小低于hive.exec.mode.local.auto.inputbytes.max(默认是128MB)
- map-tasks的总数小于hive.exec.mode.local.auto.tasks.max(默认是4个)
- 所需的reduce任务总数为1或0。

local模式下,hive的计算引擎运行在一个独立的JVM虚拟机中。

以下是一些相关的配置

CONIF NAME Default 说明
mapreduce.framework.name local 计算引擎全局框架
hive.exec.mode.local.auto false 是否使用自动Local模式
hive.exec.mode.local.auto.inputbytes.max 128MB
hive.exec.mode.local.auto.tasks.max 4
mapred.local.dir 使用本地配置时,需要将该地址指定到本地目录
hive.mapred.local.mem 0 本地local模式时的内存限制,默认是不限制

Mapred Reduce配置

没啥配置,拷贝配置文件到HIVE_CONF_DIR即可!!

在Hive2中,Hive-on-MR已经deprecated!

Hive On Spark

Hive官方对Spark和Hive的版本匹配有一些要求,对指定匹配版本的以外部署方式不能完全保证兼容性。

支持spark以standalone或者yarn方式部署(默认是yarn),并且使用Yarn时,要求使用fair scheduler!

HIVE SPARK
master 2.3.0
3.0.x 2.3.0
2.3.x 2.0.0
2.2.x 1.6.0
2.1.x 1.6.0
2.0.x 1.5.0
1.2.x 1.3.1
1.1.x 1.2.0

部署步骤

  1. 安装spark环境,需要注意的是spark的版本中应该不带HIVE相关的jar(貌似需要自己手工编译)。

通过以下方式编译指定版本的spark:

./build/mvn clean

./dev/make-distribution.sh  --name hadoop2-without-hive --tgz --pip  -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.7 -Pparquet-provided -Porc-provided -Pkubernetes -DskipTests

安装完成spark后需要将部分java包软连接到$HIVE_HOME/lib目录(参考官网)。

  1. 修改HIVE一侧的配置文件,必要配置包括以下(参考):
set hive.execution.engine=spark;
  1. 修改spark client一侧的配置文件,包括以下:
# 以下配置可以定义在spark-defaults.conf中,该文件放在HIVE classpath,或者直接定义在hive-site.xml

set spark.master=<Spark Master URL>
set spark.eventLog.enabled=true;
set spark.eventLog.dir=<Spark event log folder (must exist)>
set spark.executor.memory=512m;             
set spark.serializer=org.apache.spark.serializer.KryoSerializer;

关于配置细节

从官方的推荐配置来看,HIVE ON Spark 如果想要获取理想的性能,需要比较多的内存支持。

参考

Hive On Spark