Hive 是一个数据仓库工具,曾经ETL是数据仓库必备工具,DB2、ORACLE、SqlServer等数据库厂商提供各种数据仓库工具,互联网的到来使这些数据库工具略显老态。
1.Hadoop环境
服务器
主机名 | IP地址 | JDK | 用户 |
Master | 10.116.33.109 | 1.8.0_65 | root |
slave1 | 10.27.185.72 | 1.8.0_65 | root |
slave2 | 10.25.203.67 | 1.8.0_65 | root |
2.下载Hive
http://hive.apache.org/downloads.html
3.安装
3.1解压
cd /data/spark
tar -zxvf apache-hive-2.3.2-bin.tar.gz
3.2配置环境变量
vim ~/.bash_profile
配置项
export HIVE_HOME=/data/spark/apache-hive-2.3.2-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_CLASSPATH=$HIVE_HOME/lib
export PATH=$HIVE_HOME/bin:$PATH
执行 source ~/.bash_profile使环境变量生效
完整的配置项
export HADOOP_HOME=/data/spark/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_ROOT_LOGGER=INFO,console
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export HBASE_HOME=/data/spark/hbase-2.0.0-alpha4
export PATH=$HBASE_HOME/bin:$PATH
export HBASE_CLASSPATH=/data/spark/hbase-2.0.0-alpha4/conf
export HIVE_HOME=/data/spark/apache-hive-2.3.2-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_CLASSPATH=$HIVE_HOME/lib
export PATH=$HIVE_HOME/bin:$PATH
3.3Hive配置
配置hive-site.xml文件
cd /data/spark/apache-hive-2.3.2-bin/conf
cp hive-default.xml.template hive-site.xml
3.4创建hdf目录
hive-site.xml目录配置hive目录
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
通过hadoop 创建目录,授权、查看目录
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -mkdir -p /tmp/hive/
hadoop fs -chmod 777 /tmp/hive
hadoop fs -ls /user/hive/
hadoop fs -ls /tmp/
3.5创建Hive临时目录,修改Hive-site.xml
1.hive.downloaded.resources.dir 项改为/data/hive/tmp
读写权限:chmod 777 -R /data/hive/tmp
2.hive.server2.logging.operation.log.location 项修改参数
将${system:user.name}都替换为root
<property>
<name>hive.exec.scratchdir</name>
<value>/data/hive/tmp/</value>
<description>指定了Hive数据在HDFS上的临时文件目录</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/data/hive/log</value>
<description>Location of Hive run time structured log file</description>
</property>
3.6配置数据库,修改hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.139.200:3306/hive?useSSL=false&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8</value>
<description>通过jdbc协议连接mysql的hive库</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>jdbc的mysql驱动</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>mysql用户名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>mysql用户密码</description>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description> </description>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>lib/hive-hwi-1.2.1.war</value>
<description>hive的web页面</description>
</property>
3.7 hive-env.sh配置
cd /data/spark/apache-hive-2.3.2-bin/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/data/spark/hadoop-2.7.2
export HIVE_CONF_DIR=/data/spark/apache-hive-2.3.2-bin/conf
export HIVE_AUX_JARS_PATH=/data/spark/apache-hive-2.3.2-bin/lib
避免出现:hive Cannot find hadoop installation: $HADOOP_HOME or $HADOOP_PREFIX must be set or hadoop must be i报错
4.启动和测试
4.1.MYSQL数据库初始化
cd /data/spark/apache-hive-2.3.2-bin/bin
schematool -initSchema -dbType mysql
查看输出日志,检查是否正确创建表结构。
4.2.启动Hive
启动hive的cli服务
执行 hive ,如果后台运行Hive
nohup hive > hive.log 2>&1 &
启动服务以下2种方式:
nohup hiveserver2> hiveserver2.log 2>&1 &
nohup hive --service hiveserver2> hiveserver2.log 2>&1 &
nohup hiveserver2> hiveserver2.log 2>&1 &
nohup hive --service hiveserver2> hiveserver2.log 2>&1 &
5.常用命令
--执行查看函数的命令:
show functions;
--执行查看sum函数的详细信息的命令:
desc function sum;
--执行新建数据库的hive命令:
create database db_hive_test;
--创建数据表
use db_hive_test;
create table student(id int,name string) row format delimited fields terminated by '\t';
--手动指定存储位置
create database hive02 location '/hive/hive02';
--添加其他信息(创建时间及数据库备注)
create database hive03 comment 'it is my first database' with dbproperties('creator'='kafka','date'='2015-08-08');
--查看数据库的详细信息
describe database hive03;
--更详细的查看
describe database extended hive03;
--最优的查看数据库结构的命令
describe database formatted hive03;
--database只能修改dbproperties里面内容
alter database hive03 set dbproperties('edited-by'='hanmeimei');