写在前面:hive默认使用derby数据库作为元数据的数据库
- 下载 hive 安装包 apache-hive-1.2.1-bin.tar.gz下载地址
- 解压缩(我是放在/opt目录下的)
tar -zxf apache-hive-1.2.1-bin.tar.gz
- 然后给文件重命名:
mv apache-hive-1.2.1-bin.tar.gz hive-1.2.1
- 配置环境变量(vi /etc/profile)
- 使环境变量立即生效
source /etc/profile
- hive 的配置
hive的配置文件放在HIVE_HOME/conf目录下,我们需要修改hive-env.sh和hive-site.xml这两个文件。ls之后发现并没有这两个文件,但是有hive-env.sh.template,hive-default.xml.template,我们须复制这两个文件,并分别命名为hive-env.sh,hive-site.xml。一般还有一个hive-default.xml文件,同样由hive-default.xml.template复制而来。hive-default.xml是默认配置,hive-site.xml是个性化配置,将会覆盖hive-default.xml配置。复制两个文件:
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
- 配置 hive-env.sh 文件
- 将HADOOP_HOME 前面的‘#’号去掉,并让它指向您所安装Hadoop的目录
- 将export HIVE_CONF_DIR=/opt/hive-1.2.1/conf,并且把‘#’号去掉
- 将export HIVE_AUX_JARS_PATH=/opt/hive-1.2.1/lib,并且把‘#’号去掉
- 保存退出,使文件生效
source hive-env.sh
- 配置 hive-site.xml 文件
- 先创建相应的目录,以便和配置文件中的路径相对应,否则在运行hive的时候会报错
mkdir /opt/hive-1.2.1/warehouse
mkdir /opt/hive-1.2.1/tmp
mkdir /opt/hive-1.2.1/log
- 打开hive安装目录下的conf文件夹,编辑 hive-site.xml 文件
vim /opt/hive-1.2.1/conf/hive-site.xml
- 搜索“/hive.metastore.warehouse.dir”
- 搜索“/hive.exec.scratchdir”
- 搜索“/hive.querylog.location”
- 其余的不用修改,默认的是使用derby数据库作为元数据的数据库
- 配置 hive-log4j.proprties 文件
- 这个文件在hive的conf目录下也是没有的,需要复制cp hive-log4j.properties.template hive-log4j.proprties
- 编辑 vim hive-log4j.proprties,修改日志文件的目录
hive.log.dir=/opt/hive-1.2.1/log/${user.name}
- 这一步最为重要,必须要修改:
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
- 如果没有修改的话会出现:
WARNING: org.apache.hadoop.metrics.EventCounter is deprecated.
please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.
- 此时启动hive:
root@Ubuntu2:/opt/hive-1.2.1/conf# hive
- 发现仍然报错,百度system:java.io.tmpdir,网页上显示Linux下面的路径为/tmp/,因此把hive-site.xml文件里面的三个system:java.io.tmpdir改成绝对路径/tmp/ ,同时将紧随其后的${system:user.name} 中的”system:”删除(有2处)。
vim /opt/hive-1.2.1/conf/hive-site.xml
- 重新启动hive,发现哎呀,仍然有错,错误如下:
- 删除/opt/hadoop-2.6.4/share/hadoop/yarn/lib目录下的jline-0.9.94.jar文件
重新启动,成功!
注:hive是建立在hdfs之上的,所以启动hive前,请确保hdfs已经启动。