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 |
部署步骤¶
- 安装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目录(参考官网)。
- 修改HIVE一侧的配置文件,必要配置包括以下(参考):
set hive.execution.engine=spark;
- 修改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 如果想要获取理想的性能,需要比较多的内存支持。