1.环境介绍:
root@hzl-ThinkPad-L460:~# hive --version
hive 2.0.1
Subversion git://reznor-mbp-2.local/Users/sergey/git/hivegit -r e3cfeebcefe9a19c5055afdcbb00646908340694
Compiled by sergey on Tue May 3 21:03:11 PDT 2016
From source with checksum 5a49522e4b572555dbbe5dd4773bc7c2
root@hzl-ThinkPad-L460:~# mysql -V;
mysql Ver 14.14 Distrib 5.5.53, for debian-linux-gnu (x86_64) using readline 6.3
2.安装hive
下载hive安装包,可以从 Apache 其中一个镜像站点中下载最新稳定版的 hive, apache-hive-2.1.0-bin.tar.gz。
解压安装hive,使用以下命令安装 hive:
sudo tar -xzvf apache-hive-2.1.0-bin.tar.gz ##解压
sudo ln -s apache-hive-2.1.0-bin hive ##创建软链接
3.设置 hive环境变量
编辑 .bashrc 文件, 在其中添加以下内容:
# hive Env
export hive_HOME=/root/app/hive
export PATH=$PATH:$hive_HOME/bin
使环境变量生效:
source .bashrc
4.配置hive
配置文件重命名,在运行 hive 之前需要使用以下命令修改配置文件:
cd /root/app/hive/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
修改hive-env.sh
因为 hive 使用了 Hadoop, 需要在 hive-env.sh 文件中指定 Hadoop 安装路径:
export JAVA_HOME=/root/app/java ##Java路径
export HADOOP_HOME=/root/app/hadoop ##Hadoop安装路径
export hive_HOME=/root/app/hive ##hive安装路径
export hive_CONF_DIR=/root/app/hive/conf ##hive配置文件路径
修改hive-site.xml替换hive-site.xml文件中的 system:java.io.tmpdir和 {system:user.name}
<property>
<name>system:java.io.tmpdir</name>
<value>/root/hive</value>
</property>
<property>
<name>system:user.name</name>
<value>root</value>
</property>
配置hive Metastore
默认情况下, hive的元数据保存在了内嵌的 derby 数据库里, 但一般情况下生产环境使用 MySQL 来存放 hive 元数据。将 mysql-connector-java-5.1.39.jar 放入 $hive_HOME/lib 下。
hive-site.xml 中配置 MySQL 数据库连接信息
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
为hive创建HDFS目录
在 hive 中创建表之前需要使用以下 HDFS 命令创建 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中属性项 hive.metastore.warehouse.dir 的默认值) 目录并给它们赋写权限。
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir /usr/hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /usr/hive/warehouse
运行hive
在命令行运行 hive 命令时必须保证 HDFS 已经启动。可以使用 start-dfs.sh 来启动 HDFS。
从 hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作。
schematool -dbType mysql -initSchema
要使用 hive CLI(hive command line interface), 可以在终端输入以下命令:
hive
问题总结
解决方案:将 $hive_HOME/lib 下 的 mysql-connector-java-6.0.3.jar 替换成 mysql-connector-java-5.1.39.jar。 原因分析:mysql-connector-java 6.x 版本 和 5.1.x 版本不兼容 , nullNamePatternMatchesAll 连接属性的默认值在 mysql-connector-java 5.1 和 6.0 之间发生了改变. 在 5.1 版本中默认值是 true, 而 6.0 版本中默认值是 false。可以参考文章 https://liquibase.jira.com/browse/CORE-2723。
2.
修改 system:java.io.tmpdir和 {system:user.name}
3.hive2.10和如上的mysql版本使用所有jdbc都不能成功load。