大数据之数据仓库工具Hive

数据仓库工具Hive可是省事了

介绍

1.hive简介
Hive:由Facebook开源用于解决海量结构化日志的数据统计工具。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
2.1)Hive处理的数据存储在HDFS
2)Hive分析数据底层的实现是MapReduce
3)执行程序运行在Yarn上
3.
优点:操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手),通用性强;
缺点:Hive的HQL表达能力有限;Hive的效率比较低;

原理

在这里插入图片描述
1)用户接口:Client
2)元数据:Metastore
元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
3)Hadoop
使用HDFS进行存储,使用MapReduce进行计算。
4)驱动器:Driver
(1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;
(2)编译器(Physical Plan):将AST编译生成逻辑执行计划。
(3)优化器(Query Optimizer):对逻辑执行计划进行优化。
(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。

安装

1.1)Hive官网地址
http://hive.apache.org/
2)安装mysql之前检查当前系统是否安装过Mysql
[shanxi@hadoop1 ~]$ rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64 //如果存在通过如下命令卸载
[shanxi@hadoop1~]$ sudo rpm -e --nodeps mariadb-libs //用此命令卸载mariadb
3)解压MySQL安装包
[shanxi@hadoop1~]$# tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
4)在安装目录下执行rpm安装(不会的私聊)

2.1)把apache-hive-3.1.2-bin.tar.gz上传到linux的/opt/software目录下
2)解压apache-hive-3.1.2-bin.tar.gz到/opt/module/目录下面
[shanxi@hadoop1~]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
3)修改apache-hive-3.1.2-bin.tar.gz的名称为hive
[shanxi@hadoop1~]$ mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive
4)修改/etc/profile.d/my_env.sh,添加环境变量
[shanxi@hadoop1~]$ sudo vim /etc/profile.d/my_env.sh
5)添加内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$ PATH: $ HIVE_HOME/bin
6)解决日志Jar包冲突
[shanxi@hadoop1~]$ rm $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar

3.1)将MySQL的JDBC驱动拷贝到Hive的lib目录下
[shanxi@hadoop1~]$ cp /opt/software/mysql-connector-java-5.1.48.jar
$HIVE_HOME/lib
2) 配置Metastore到MySql
在 $ HIVE_HOME/conf目录下新建hive-site.xml文件
[shanxi@hadoop1~]$ vim $ HIVE_HOME/conf/hive-site.xml
4.初始化Hive元数据库
[shanxi@hadoop1 software]$ schematool -initSchema -dbType mysql -verbose
注意Hive 2.x以上版本,要先启动这两个服务,否则会报错:
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
(1)启动metastore
[shanxi@hadoop1 hive]$ hive --service metastore
2020-04-24 16:58:08: Starting Hive Metastore Server
注意: 启动后窗口不能再操作,需打开一个新的shell窗口做别的操作
(2)启动 hiveserver2
[shanxi@hadoop1 hive]$ hive --service hiveserver2
which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/hive/bin:/home/atguigu/.local/bin:/home/atguigu/bin)
2020-04-24 17:00:19: Starting HiveServer2
注意: 启动后窗口不能再操作,需打开一个新的shell窗口做别的操作
(3) 为了避免麻烦可以用下面的:
[shanxi@hadoop1 hive]$ nohup hive --service metastore 2>&1 &
[shanxi@hadoop1 hive]$ nohup hive --service hiveserver2 2>&1 &

也可以自己写个脚本启动,注意启动之前先启动Hadoop;
5 .有两种访问方式 ①HiveJDBC访问
1)启动beeline客户端
[shanxi@hadoop1 hive]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n atguigu
2)看到如下界面
Connecting to jdbc:hive2://hadoop102:10000
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.2 by Apache Hive
0: jdbc:hive2://hadoop102:10000>
② Hive访问
[shanxi@hadoop1 hive]$ bin/hive

额外再给安利一个连接工具,dbeaver,挺好用,毕竟客户端

欢迎交流,一起成长

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章