hive的产生背景
- MR来开发业务逻辑:繁琐、痛苦
- Hive:facebook 解决海量的结构化日志的统计问题
- 刚开始时是作为Hadoop项目的一个子项目的,后面才单独成为一个项目
- Hive是构建在Hadoop之上的数据仓库 适合处理离线
- Hive是一个客户端,不是一个集群,把SQL提交到Hadoop集群上去运行
- Hive是一个类SQL的框架, HQL和SQL没有任何关系,只是类似
- Hive职责:SQL ==> MR/Spark
- Hive底层支持的引擎:MR/Spark/Tez
部署架构
Hive数据: HDFS + 元数据(MySQL)
people.txt people(id:int,name:string,age:int)
元数据:描述数据的数据
所以:我们之所以能用SQL来进行大数据统计,是因为有元数据的支撑,我们知道HDFS上的数据每一列字段名是什么,
字段类型是什么,数据在HDFS的什么位置
hive部署
1.下载安装包
[hadoop@hadoop001 software]$ wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz
注意这里的安装包cdh5.7.0最好和你hadoop的版本相同
2.解压
[hadoop@hadoop001 software]$ tar -zvxf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/
3.将HIVE_HOME配置到系统环境变量(~/.bash_profile)
export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
export PATH=$HIVE_HOME/bin:$PATH
4.将MySQL驱动拷贝到$HIVE_HOME/lib
[hadoop@hadoop001 ~]$ cd $HIVE_HOME
[hadoop@hadoop001 hive-1.1.0-cdh5.7.0]$ cd lib/
[hadoop@hadoop001 lib]$ ll mysql-connector-java-8.0.16.jar
-rw-r--r-- 1 hadoop hadoop 2293144 Jul 15 21:19 mysql-connector-java-8.0.16.jar
[hadoop@hadoop001 lib]$
mysql驱动包mysql-connector-java-8.0.16.jar在orace官网去下载
5.安装mysql
请看之前写的mysql安装部署博客
6.修改Hive的配置文件hive-site.xml
注意:$HIVE_HOME/conf/目下没有 hive-site.xml这个文件,必须自己手动创建。在配置文件中至少需要配置,需要连接mysql的url、用户名、密码和mysql的驱动。后面连个参数,是为了进入hive界面,显示默认的数据库和查看数据库中表时显示列的名称。
[hadoop@hadoop001 conf]$ vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/ruozedatas?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>123456</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
</configuration>
7.启动hive
[hadoop@hadoop001 conf]$ hive
which: no hbase in (/home/hadoop/app/hive-1.1.0-cdh5.7.0/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/scala-2.13.0/bin:/home/hadoop/app/apache-maven-3.6.1/bin:/usr/java/jdk1.8.0_45/bin/:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin)
Logging initialized using configuration in file:/home/hadoop/app/hive-1.1.0-cdh5.7.0/conf/hive-log4j.properties
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive (default)>
hive的参数配置
-
hive.metastore.warehouse.dir Hive 数据存放的HDFS的路径
默认的Hive数据存放在HDFS上:/user/hive/warehouse如果要调整,就把这个参数设置到hive-site.xml中去<property> <name>hive.metastore.warehouse.dir</name> <value>xxxx</value> </property>
-
hive详细日志:$HIVE_HOME/conf/hive-log4j.properties
[hadoop@hadoop001 ~]$ cd $HIVE_HOME [hadoop@hadoop001 hive-1.1.0-cdh5.7.0]$ cd conf/ [hadoop@hadoop001 conf]$ ll total 24 -rw-r--r-- 1 hadoop hadoop 1196 Mar 24 2016 beeline-log4j.properties.template -rw-r--r-- 1 hadoop hadoop 2378 Mar 24 2016 hive-env.sh.template -rw-r--r-- 1 hadoop hadoop 2662 Mar 24 2016 hive-exec-log4j.properties.template -rw-r--r-- 1 hadoop hadoop 3505 Jul 16 10:45 hive-log4j.properties -rw-r--r-- 1 hadoop hadoop 3505 Mar 24 2016 hive-log4j.properties.template -rw-rw-r-- 1 hadoop hadoop 748 Jul 15 21:28 hive-site.xml [hadoop@hadoop001 conf]$ cp hive-log4j.properties.template hive-log4j.properties
hive.log.dir=${java.io.tmpdir}/${user.name} //代表存放的目录默认是/tmp/用户/
hive.log.file=hive.log //日志文件名称