一、Hive安装(以Hive2.1.1为例,安装在/usr/local/apache-hive-2.1.1-bin目录下)
1.官方下载预安装hive版本安装包apache-hive-2.1.1-bin.tar.gz
2.解压安装包到安装目录,具体指令:
tar –zxvf apache-hive-2.1.1-bin.tar.gz –C /usr/local/apache-hive-2.1.1-bin
3.进入安装目录,并从模版配置文件创建hive启动的配置文件,具体操作如下:
cd /usr/local/apache-hive-2.1.1-bin
cd /usr/local/apache-hive-2.1.1-bin/conf
cp beeline-log4j2.properties.template beeline-log4j2.properties
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
cp hive-log4j2.properties.template hive-log4j2.properties
cp llap-cli-log4j2.properties.template llap-cli-log4j2.properties
cp llap-daemon-log4j2.properties.template llap-daemon-log4j2.properties
4.复制存储hive元数据数据库mysql驱动包到hive/lib下,具体操作如下:
cp mysql-connector-java-5.1.39-bin.jar /usr/local/apache-hive-2.1.1-bin/lib
5.修改相应配置文件,具体修改如下:
hive-env.xml配置:
#配置hadoop安装目录,以实际安装情况为准
HADOOP_HOME=/usr/local/hadoop-2.6.4
#导入hive配置目录,以实际安装情况为准
export HIVE_CONF_DIR=/usr/local/apache-hive-2.1.1-bin/conf
#导入hive启动外部lib,可不配置
export HIVE_AUX_JARS_PATH=/yourDir
hive-exec-log4j2.properties配置:
#修改日志目录,可不配置
property.hive.log.dir = /yourDir
#修改日志文件名,可不配置
property.hive.log.file = yourFileName.log
hive-log4j2.properties配置:
#修改日志输出目录,可不配置
property.hive.log.dir = /yourDir
#修改日志输出文件名,可不配置
property.hive.log.file = /yourFileName
llap-cli-log4j2.properties配置:
#修改日志输出目录,可不配置
property.hive.log.dir = /yourDir
#修改日志输出文件名,可不配置
property.hive.log.file = yourFileName
llap-daemon-log4j2.properties配置:
#修改日志输出目录,可不配置
property.llap.daemon.log.dir = /yourDir
#修改日志输出文件名,可不配置
property.llap.daemon.log.file = yourFileName
hive-site.xml配置:
6.环境变量配置:修改/etc/profile文件,追加hive相关环境变量,具体操作如下:
vim /etc/profile,添加如下内容:
export HIVE_HOME=/usr/local/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/conf
source /etc/profile
7.Hive初始化,执行Hive初始化命令,具体操作如下:
schematool -dbType mysql -initSchema
8.启动hive,可以看到类似如下信息则代表hive安装成功
注:上述配置只是一些基础和必要以及常用的一些配置,具体的性能优化或者涉及到hive on spark和hive access to hbase等功能时还需要额外的配置。Hive安装除了使用mysql存储元数据外,还可使用oracle,pgsql等其他数据库,上述安装使用的是mysql,这个可以根据实际情况来定。
二、Hive On Spark配置
1.选择Hive与Hive相对应的Spark版本,目前比较匹配的版本如下:
a. Hive-1.2与Spark 1.3
b. Hive-2.1与Spark 1.6
c. Hive-2.1与Spark 2.X(待验证)
由于Hive-1.2对Spark1.3支持比较好,对与其他Spark版本支持有待验证,本例使用Hive-2.1.1与Spark 1.6.3版本安装,主要考虑到Spark环境已经搭建好,短期内不会升级以及Hive-2.1.1本身就支持Spark1.6.3。在安装过程中尝试过使用Hive-1.2.1与Spark 1.6.3但安装完Hive后,运行Hive On Spark总出现各种错误,结合官网建议及Google或者百度查找问题解决方案,但都没有解决问题,最好还是放弃了。
2.编译Spark 1.6.3源码,并将编译好后的源码包拷贝到Hive lib下,具体操作如下:
a.下载spark 1.6.3 源码
b.编译源码
./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-2.6,parquet-provided"
c.解压编译好的源码包spark-1.6.3-bin-hadoop2-without-hive.tgz
tar –zxvf spark-1.6.3-bin-hadoop2-without-hive.tgz
d.拷贝spark-1.6.3-bin-hadoop2-without-hive/lib/下的Spark包到Hive/lib下
cd /data/spark-source/spark-1.6.3-bin-hadoop2-without-hive/lib
cp spark-assembly-1.6.3-hadoop2.6.0.jar /usr/local/apache-hive-2.1.1-bin/lib
3.修改hive-site.xml文件,新增或者修改spark相关配置,具体常用配置如下:
注:有关 hive.metastore.schema.verification 版本检查的问题,有两个解决办法
1. 将 hive.metastore.schema.verification 设为false
2. 不改配置,先初始化好数据,执行初始化命令:schematool -dbType mysql –initSchema
三、Spark On Hive 配置
1.运行Spark On Hive程序需要依赖datanucleus-api-jdo-3.2.6.jar, datanucleus-core-3.2.10.jar, datanucleus-rdbms-3.2.9.jar, mysql-connector-java-5.1.39-bin.jar等jar包及hive-site.xml配置文件,故启动Spark On Hive 程序时,可以在spark-submit提交命令时,指定--jars ….jar以及指定--files /usr/local/apache-hive-2.1.1-bin/conf/hive-site.xml的方式来添加依赖
2.指定Spark运行额外lib来避免每次运行Spark On Hive都需要指定jars带来的苦恼,具体操作如下:
a.修改每个spark节点spark-defaults.conf配置,新增spark执行额外lib配置
spark.executor.extraClassPath=/usr/local/spark-1.6.3-bin-hadoop2.6/extralib/*
spark.driver.extraClassPath=/usr/local/spark-1.6.3-bin-hadoop2.6/extralib/*
b.复制上述jar包到每个spark节点/usr/local/spark-1.6.3-bin-hadoop2.6/extralib/目录下。
注:Spark On Hive运行时依赖的jar包除mysql驱动包外其余包是hive-1.2.1/lib下的 datanucleus-api-jdo-3.2.6.jar, datanucleus-core-3.2.10.jar, datanucleus-rdbms-3.2.9.jar等,而不是hive2.1.1/lib下的 datanucleus-api-jdo-4.2.1.jar, datanucleus-core-4.1.6.jar, datanucleus-rdbms-4.1.7.jar等jar包,因为Spark On Hive使用spark1.6.3版本时,spark本身支持的是hive-1.2.1,具体可以查看spark1.6.3源码下的pom.xml。
总结:Spark On Hive或者Hive On Spark的主要问题在于版本的兼容性问题,配置Hive On Spark时必须以Hive版本为主,即需要安装与Hive对应的版本,这个可以从hive源码pom.xml中找到,但通过这种方式找到的spark版本,其内部使用的hive版本又往往不是你欲安装的hive版本,这个可以从spark源码pom.xml中查看,为了解决这个问题,让彼此兼容,可以修改hive-site.xml中hive.metastore.schema.verification=false配置。本文档限本人经验及知识有限,如有不妥的地方还望指出,多多交流。