Hive概述
什么是 Hive
hive 英[haɪv] 美[haɪv]
n. 蜂房; 蜂箱; 一箱蜜蜂; 蜂群; 忙碌的场所; 繁忙的地方;
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。
本质是:将 HQL 转化成MapReduce 程序
1)Hive处理的数据存储在HDFS
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在YARN上
应用场景 :由 Facebook 开源用于解决海量结构化日志的数据统计。
Hive 的特点
》》 优点
- (1)操作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手)。
- (2)避免了去写 MapReduce,减少开发人员的学习成本。
- (3)Hive 的执行延迟比较高,因此Hive 常用于数据分析,对实时性要求不高的场合。
- (4)Hive 优势在于处理大数据,对于处理小数据没有优势,因为Hive 的执行延迟比较高。
- (5)Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
》》 缺点
- (1)Hive 的 HQL 表达能力有限
迭代式算法无法表达
数据挖掘方面不擅长 - (2)Hive 的效率比较低
Hive 自动生成的 MapReduce 作业,通常情况下不够智能化
Hive 调优比较困难,粒度较粗
Hive下载
Hive 下载地址
1.Hive 官网地址
http://hive.apache.org/
2.文档查看地址
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
3.下载地址
http://archive.apache.org/dist/hive/
Hive 安装部署
1.Hive 安装及配置
(1)把 apache-hive-1.2.1-bin.tar.gz 上传到 linux 的/opt/software 目录下
(2)解压 apache-hive-1.2.1-bin.tar.gz 到/opt/module/目录下面
[dev1@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
(3)修改 apache-hive-1.2.1-bin.tar.gz 的名称为 hive
[dev1@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive
(4)修改/opt/module/hive/conf 目录下的 hive-env.sh.template 名称为 hive-env.sh
[dev1@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh
(5)配置hive-env.sh 文件
(a)配置HADOOP_HOME 路径
export HADOOP_HOME=/opt/module/hadoop-2.7.2
(b)配置HIVE_CONF_DIR 路径
export HIVE_CONF_DIR=/opt/module/hive/conf
2.Hadoop 集群配置
(1)必须启动hdfs 和 yarn
在hadoop102上
start-dfs.sh
在hadoop103上
start-yarn.sh
(2)在 HDFS 上创建/tmp 和/user/hive/warehouse 两个目录并修改他们的同组权限可写
(可不操作,系统会自动创建)
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
将hadoop fs 换成 hdfs dfs也可以
3.Hive 基本操作
(1)启动hive
[dev1@hadoop102 hive]$ bin/hive
(2)查看数据库
hive> show databases;
(3)打开默认数据库
hive> use default;
(4)显示default 数据库中的表
hive> show tables;
(5)创建一张表
hive> create table student(id int, name string);
(6)显示数据库中有几张表
hive> show tables;
(7)查看表的结构
hive> desc student;
(8)向表中插入数据
hive> insert into student values(1000,"ss");
(9)查询表中数据
hive> select * from student;
(10)退出 hive
hive> quit;