Hive简介:
1.什么是Hive?
Hive:由Facebooke开源,用于解决海量结构化日志的数据统计
Hive是一个构建在Hadoop上的数据仓库框架(工具),可以将结构化的数据文件映射为一张表,并提供类似SQl查询功能。
其设计目标是使Hadoop上的数据操作与传统SQL结合,让熟悉SQL编程的开发人员能够轻松向Hadoop平台转移。
本质是:将HQL转化成MapReduce程序
1)Hive处理的数据存储在HDFS中,元数据存储在关系型数据库中
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在Yarn上
由于Hadoop基本上是用于处理数据的应用程序,并且大多数据仓库应用程序已经实现了SQL语言,
因此,Hive是Hadoop生态系统中最有名和使用最广泛的项目.
(Hive的简单体系结构图.png)
客户端的连接方式可采用: CLI(hive shell) 和 JDBC Driver (Java访问Hive) 、WEBUI(浏览器访问Hive)
【注意:Hive实质就是客户端,不存在主从结构,搭建过程没有集群概念;】
2.数据仓库和数据库:
关系型数据库:OLTP联机事务处理 ACID,实时处理 -->持久化对数据的存储
数据仓库:OLAP联机分析处理:统计、处理和加工(分析操作),离线处理,大数据集;
--> 假如我们查询几年内的淘宝订单,数据从数据库里获得 但是查询出来的淘宝订单的数据,它是一个数据的仓库, 数据仓库中专门用来做一些查询数据库的SQL语句,很多数据称为仓库
hive是以SQl的方式操作hadoop的框架
Hive数据有两部分组成:
1)hive数据存储在hdfs上
2) hive的元数据存储在关系型数据库中,hive默认的元数据存储在derby
3.搭建Hive
准备:
a.Hadoop集群搭建完成!
b.zkServer.sh start 开启zookeeper
start-dfs.sh start 开启HDFS
start-yarn.sh start开启yarn
1).安装java
2).安装Hadoop
3).安装hive
$>cp /mnt/hgfs/工具/apache-hive-1.2.1-bin.tar.gz ~/apps/
$>tar -zxvf apache-hive-1.2.1-bin.tar.gz
$>ln -s apache-hive-1.2.1-bin hive
配置环境变量:
【~/.bash_profile】
#hive install
export HIVE_HOME=/home/hyxy/soft/hive
export PATH=$HIVE_HOME/bin:$PATH
$>source ~/.bash_profile
4).开启集群相关服务:
$>zkServer.sh start
$>start-all.sh
5).进入Hive
$>hive
6).测试:
hive>show databases;
hive>use default;
hive>show tables;
hive>desc tables;
hive>create table text(id int ,name String);
hive>insert into text values(1,'zhangsan');
hive>select * from text;
hive>drop table text;
hive> quit; //如不在原路径下,退出后之前表消失 即临时表,理解内嵌模式
7)查看yarn :master:8088
hdfs: hadoop fs -lsr /
rwx-wx-wx - hyxy supergroup 0 2018-05-23 14:09 /tmp/hive
drwx------ - hyxy supergroup 0 2018-05-23 14:38 /tmp/hive/hyxy
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:10 /user
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:10 /user/hive
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:33 /user/hive/warehouse
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:12 /user/hive/warehouse/text
-rwxr-xr-x 2 hyxy supergroup 11 2018-05-23 14:12 /user/hive/warehouse/text/000000_0
drwxr-xr-x - hyxy supergroup 0 2018-05-23 14:33 /user/hive/warehouse/text1
[hyxy@master Desktop]$ hadoop fs -cat /user/hive/warehouse/text/000000_0
1zhangsan
查看hive默认加载的配置文件:
[hyxy@master conf]$ cat hive-default.xml.template Hive配置是Hadoop之上的覆盖 - 它默认继承Hadoop配置变量
<property>
<name>hive.user.install.directory</name>
<value>hdfs:///user/</value>
<description>
If hive (in tez mode only) cannot find a usable hive jar in
"hive.jar.directory",
it will upload the hive jar to "hive.user.install.directory/user.name"
and use it to run queries.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
8)metastore_db 、derby.log (在当前路径下查看)
如果第一次我们在Desktop运行hive Cli客户端,
第二次在~/soft运行hive Cli,因为没有metastore_db 、derby.log,所以之前创建的数据库不存在
如果删除metastore_db 那么,hive 下的数据也不存在,但hdfs文件依然存在
可以通过配置文件设置永远保存在一个路径下的metastore_db 、derby.log,这样不管在哪里都可以查询之前创建的数据
1.查看数据库 创建数据库 使用数据库 创建表
hive> show databases;
hive> create database myhive;