hadoop——hive(认识hive)
1、什么是hive
Hive:由 Facebook 开源用于解决海量结构化日志的数据统计。
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。
hive的本质其实就是将HQL转化成MapReduce 程序
Hive 处理的数据存储在 HDFS
Hive 分析数据底层的实现是 MapReduce
执行程序运行在 Yarn
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QTr1o3bB-1632406205872)(/Users/lifuwei/Desktop/hive.png)]
2、hive的优缺点
优点:
1、操作接口采用类SQL语法,提高快速开发的能力
2、避免了去写复杂的mapreduce,减少开发人员的学习成本
3、hive的执行延迟比较高,因此hive常用语数据分析,对实时性要求不高
4、hive优势在于处理大数据,对于处理小数据没有优势,因此hive的执行延迟比较高
5、hive支持用户自定义函数,用户可以根据自己的需求实现自己的而函数
缺点:
1、hive的hql表达能力有限
2、hive的效率比较滴滴
3、hive的原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kA6bbkEb-1632406205876)(/Users/lifuwei/Desktop/hive底层原理.png)]
1、用户接口
CLI、JDBC、ODBS、WEBUI
2、元数据
包括表名,表所属的数据库(默认是default),表的拥有者,列、分区字段、表的类型、表的数据所在目录
3、HDFS
用于数据的存储
4、驱动器:Driver
1、解析器:将SQL字符串转换成抽象语法树AST,主要用于检查表是否存在,字段是否存在,SQL是否有误
2、编译器:将AST编译生成逻辑执行计划
3、优化器:对逻辑执行计划进行优化
4、执行器:把逻辑执行计划转换成可以运行的物理计划,相当于转换成mapreduce、spark
5、运行原理
hive通过给用户提供一系列的交互接口,接收到用户指令(SQL),使用自己的Driver,并结合元数据,将这些指令转换成mapreduce,提交给hadoop中执行,最后将结果返回输出到用户交互接口
4、hive和数据库的比较
其实hive不是数据库,它只是采用了一种类SQL的语言进行查询。两者的相似之处就是查询语言类似。hive主要是为数据仓库而设计的,并不是为存储数据而存在
5、hive的浅知识
1、hive是建立在数据仓库之上,所以hive的数据都是存储在HDFS中。而数据库则是可以将数据保存在快设备或者本地文件系统中
2、数据仓库的内容都是读多写少,所以hive中不建议对数据的改写
3、hive是通过hadoop提供的mapreduce来实现,而数据库通常有自己的执行引擎
4、hive的执行延迟比较高。一是hive没有索引需要扫描全表、二是maprecue本身具有高延迟
5、可扩展性比较好
6、hive可以支持大规模的数据
hive的安装部署
1、上传
2、解压
tar -zxvf apache-hive-1.2.1 -C /opt/apps
3、修改hive的名
mv apache-hive-1.2.1 hive
4、修改/opt/module/hive/conf 目录下的 hive-env.sh.template 名称为 hive-env.sh
mv hive-env.sh.template hive-env.sh
5、配置hive-env.sh文件
配置HADOOP_HOME路径
export HADOOP_HOME=/opt/apps/hadoop-2.7.2
配置HIVE_HOME_DIR路径
export HIVE_HOME_DIR=/opt/apps/hive/conf
6、hadoop集群配置
1、必须启动hdfs和yarn
start-dfs.sh
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
hive的基本操作
1、启动hive
在bin目录下 hive
2、查看数据库
show databases;
3、打开默认数据库
use default
4、创建一张表
create table student(id int,name string);
5、显示数据库中有几张表
show tables;
6、查看表的结构
desc student;
7、向表中插入数据
insert into student values(1000,"ss");
8、查询表中数据
select * from student;
9、退出hive
quit;
10、查看hive在hdfs中的结构
数据库:在hdfs中表现为${hive.metasrore.warehouse.dir}目录下一个文件夹
表:在hdfs中表现所属db目录下一个文件夹,文件夹中存放该表中的具体数据
将本地文件导入hive
1、在、/opt/apps/目录下创建data
mkdir data
2、在该目录喜爱创建student.txt文件并添加数据
touch student.txt
vi student.txt
001 wanzgong
002 lisi
003 wangwu
3、启动hive
bin/ hive
4、显示数据库
show databases
5、使用default
use default
6、显示default数据库中的表
show databases
7、删除已创建的student表
drop table students
8、创建student表,并声明文件分隔符'\t'
create table student(
id int,
name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
9、加载/opt/apps/data/student.txt文件到student数据库表中
load data local inpath '/opt/apps/data/students.txt' into table student;
10、hive查询结果
select * from student;
11、遇到问题
再打开一个客户端启动hive,会产生java.sql.SQLEexceptionu异常
原因:Metastore默认存储在自带derby数据库中,推荐使用M有SQL存储Metastore
MySQL的安装
Hive元数据配置到Mysql
1、驱动拷贝
2、配置Metastore到Mysql
3、多窗口启动hive
Hive其他命令操作
1、退出hive窗口
exit;
quit;
2、在hive中查看hdfs文件系统
dfs -ls /;
3、在hive中查看本地文件系统
!ls /opt/apps/data
4、查看在hive中输入的所有历史命令
(1)进入到当前用户的根目录/root 或/home/atguigu
(2)查看. hivehistory 文件
在根目录下:cat .hivehistory
hive常见属性配置
1、hive数据仓库位置配置
1、Default数据仓库的最原始位置是在hdfs上的:/user/hive/apps
2、在仓库目录下,没有对默认数据库default创建文件夹。如果一个表属于default数据库,直接在数据仓库目录下创建一个文件夹
3、修改default数据仓库原始位置(hive-default.xml.template——》hive-site.xml)
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
配置同组用户有执行权限
bin/ hdfs dfs -chmod g+w /user/hive/apps
2、查询后信息显示配置
1、在hive-site.xml文件中配置,就可以实现显示当前数据库,以及查询表的头信息配置
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
2、重新启动hive,对比配置前后差异
3、Hive运行日志信息配置
1、hive的log默认存放在/tmp/atguigu/hive.log目录下
2、修改hive的log存放日志到/opt/apps/hive/logs
1、修改/opt/module/hive/conf/hive-log4j.properties.template 文件名称为
hive-log4j.properties
mv hive-log4j.properties.template hive-log4j.properties
2、在 hive-log4j.properties文件中修改log存放位置
hive.log.dir=/opt/apps/hive/logs
4、参数配置方式
1、查看当前所有的配置信息
set;
2、参数配置三种方式
1、默认配置文件:hive-default.xml
用户自定义配置文件:hive.site.xml
**用户自定义配置会覆盖默认配置
Hive是作为hadoop的客户端启动的,所以Hive的配置会覆盖Hadoop的配置
2、命令行参数方式
bin/ hive -hiveconf mapred.reduec.tasks=10;
**但是这个只针对本次有效
3、参数声明方式
可以在HQL中使用SET关键字设定参数
set mapred.reduce.tasks=100;
**但是这个只针对本次有效
查看参数设置
set mapred.reduce.tasks;
|