hadoop2.4.1 + apache-hive-1.2.1-bin.tar.gz
1. 内嵌模式
将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
2. 本地模式
这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。
3. 远程模式
此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。
本文配置的是本地模式
前提条件
hadoop已经安装完成 参考博客: https://blog.csdn.net/a639735331/article/details/79008179
mysql已经安装完成 参考博客: https://blog.csdn.net/a639735331/article/details/79073783
1.将hive上传到 /root/training 目录下,并解压到当前文件夹
2.环境变量配置 (编辑~/.bash_profile)
export JAVA_HOME=/jdk/jdk1.7.0_55
export HADOOP_HOME=/root/training/hadoop-2.4.1
export HIVE_HOME=/root/training/apache-hive-1.2.1-bin
3.环境变量生效
source ~/.bash_profile
4.配置hive-site.xml(默认是不存在的,需要通过copy模板)
cp hive-default.xml.template hive-site.xml
删除里面内容,只留<configuration></configuration> 节点
5.向configuration中加入如下配置
<!-- 在configuration中加入配置 -->
<property>
<!--该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下-->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<!--该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下-->
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 如果是远程mysql数据库的话需要在这里写入远程的IP或hosts -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
6.以上配置的2个目录默认是不存在的,需要手动创建
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /tmp/hive/
hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -chmod 777 /tmp/hive
检查是否新建成功 hadoop fs -ls / 以及 hadoop fs -ls /user/hive/
7.修改/conf/hive-env.sh 文件,该文件默认不存在,拷贝它的模版来修改
cp hive-env.sh.template hive-env.sh
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/root/training/hadoop-2.4.1
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/root/training/apache-hive-1.2.1-bin/conf
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/root/training/apache-hive-1.2.1-bin/lib
8.配置hive的log4j: conf下 cp hive-log4j.properties.template hive-log4j.properties
#log4j.appender.EventCounter=org.apache.hadoop.hive.shims.HiveEventCounter
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
hive.log.dir=/root/training/apache-hive-1.2.1-bin/log
9.把apache-hive-1.2.1-bin/lib 里面的jline2.12替换了hadoop 中hadoop-2.4.1/share/hadoop/yarn/lib的jline0.0.94
10.启动mysql 建立hive数据库 并进行相关字符集设置
create database hive;
alter database hive /*!40100 DEFAULT CHARACTER SET utf8 */;
alter database hive character set latin1;
11.启动hive
11.1 shell模式
切换到bin下 ./hive启动
11.2 hive JDBC服务
./hive --service hiveserver2 &
配置过程中出现问题 参考如下文章:
解决表不能创建的问题
https://blog.csdn.net/qq_35732963/article/details/54291970
解决服务无法启动问题
https://blog.csdn.net/mchdba/article/details/42677431
hive配置mysql
https://www.cnblogs.com/raphael5200/p/5175973.html