一.什么是Hive?
- Hive是建立在Hadoop上的工具.能够帮助用户屏蔽掉复杂的MapReduce逻辑,只需要用户使用简单的SQL语句即可完成一定的查询功能
- Hive利用HDFS存储数据,利用MapReduce查询数据
二.Hive与传统数据库比对
|
Hive |
RDMS |
查询语言 |
HQL |
SQL |
数据存储 |
HDFS |
Raw Device or Local FS |
执行 |
MapReduce |
Executor |
执行延迟 |
高 |
低 |
处理数据规模 |
大 |
小 |
索引 |
0.8版本后加入 |
复杂索引机制 |
- 注:Hive具有SQL数据库的很多类似功能,但应用场景不同,只适合做批量数据统计分析
三.Hive部署
1.下载与安装
- 1)下载链接: https://pan.baidu.com/s/1ktOAPcRuctId60m_38tcQg 提取码: mk39
- 2)将hive安装包拖入opt目录下解压安装:
tar -zxvf hive-1.1.0-cdh5.14.2.tar.gz
- 3)改名:
mv hive-1.1.0-cdh5.14.2/ hive
- 4)删除安装包:
rm -rf hive-1.1.0-cdh5.14.2.tar.gz
- 5)配置环境变量:
vi /etc/profile
,添加以下内容:
export HIVE_PATH=/opt/hive
export PATH=$PATH:$HIVE_PATH/bin
- 6)输入:
source /etc/profile
,使其生效
2.Hive需要提前装好MySQL
安装MySQL
grant all on *.* to root@'hadoop110';
flush privileges;
3.Hive配置文件修改
- 1.进入配置文件目录: cd /opt/hive/conf/
- 2)新建
hive-site.xml
文件: vi hive-site.xml
,添加如下内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://hadoop110:9000/hive/warehouse</value>
<description>管理表存储的位置,可以是linux中的目录,也可以是相对于fs.default.name有关的目录</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<!-- 指定hive元数据存储的MySQL地址 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1: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>
<!-- 元数据存储数据库的密码,(注:这里是mysql自己root用户的密码) -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>ok</value>
</property>
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
<property>
<name>hive.server2.thrift.client.user</name>
<value>root</value>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>ok</value>
</property>
</configuration>
- 3)新建
hive-env.sh
文件: vi hive-env.sh
,添加如下内容:
export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.14.2
export HIVE_HOME=/opt/hive
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HIVE_AUX_JARS_PATH=/opt/hive/lib
export JAVA_HOME=/opt/jdk1.8.0_221
export HIVE_CONF_DIR=/opt/hive/conf
- 4)修改hive-log4j.properties,配置hive的log,先改名,
mv hive-log4j.properties.template hive-log4j.properties
- 进入文件:
vi hive-log4j.properties
,之后按20gg快速定位,修改为如下内容:
hive.log.dir=/opt/hive/logs
- 5)新建配置文件需要的目录:
mkdir /opt/hive/warehouse
,mkdir /opt/hive/logs
- 6)将mysql-connector-java-5.1.0-bin.jar包拖到$HIVE_HOME/lib目录下
- 7)给hive文件赋权:
chmod -R 777 /opt/hive
4.启动(需要先启动hdfs)
- 1)初始化mysql数据库:
schematool -initSchema -dbType mysql
,效果如下:
- 2)输入:
hive
,进入hive命令行模式,效果如下:
- 3)使用SQLyog可发现已建立hive数据库,如下:
- 4)输入:
show tables;
效果如下(刚开始没有表):
- 5)创建一个再查看,效果如下:
- 6)输入:
exit;
退出hive命令行
- 7)如果warehouse目录存储在hdfs上可以去50070端口查看创建的表,如下: