【博学谷学习记录】超强总结,用心分享|Hive相关知识介绍与安装

Hive是一个基于Hadoop的数据仓库工具,提供类SQL查询功能,用于简化大数据分析。文章详细介绍了Hive的基本概念,包括其使用原因、特点和架构,并对比了Hive与传统数据库的区别。此外,还提供了Hive的安装步骤,包括安装MySQL作为元数据服务和配置Hive的详细过程。
摘要由CSDN通过智能技术生成

【博学谷学习记录】超强总结,用心分享|Hive相关知识介绍与安装

Hive是一个构建在Hadoop上的数据仓库框架。最初,Hive是由Facebook开发,后来移交由Apache软件基金会开发,并作为一个Apache开源项目。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更进一步可以说hive就是一个MapReduce的客户端。
在这里插入图片描述

一、Hive基本概念

1.1 为什么使用Hive?

1、直接使用Hadoop所面临的问题
(1)人员学习成本太高;
(2)项目周期要求太短;
(3)MapReduce实现复杂查询逻辑开发难度太大。
2、为什么使用Hive?
(1)操作接口采用类SQL语法,提供快速开发的能力;
(2)避免了去写MapReduce,减少开发人员的学习成本;
(3)功能扩展很方便。

1.2 Hive特点

(1)Hive最大的特点是通过类SQL来分析大数据,而避免了写MapReduce程序来分析数据,这样使得分析数据更容易;
(2)数据是存储在HDFS上的,Hive本身并不提供数据的存储功能,它可以使已经存储的数据结构化;
(3)Hive是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(比如MySQL);
(4)数据存储方面:可以直接访问存储在Apache HDFS或其他数据存储系统(如Apache HBase)中的文件;
(5)数据处理方面:因为Hive语句最终会生成MapReduce任务去计算,所以不适用于实时计算的场景,它适用于离线分析;
(6)Hive除了支持MapReduce计算引擎,还支持Spark和Tez这两种分布式计算引擎。

1.3 Hive架构

1.3.1 Hive架构图

在这里插入图片描述

1.3.2 Hive与传统数据库对比

在这里插入图片描述
总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

二、Hive的安装

在这里插入图片描述
元数据服务(metastore)作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。

2.1 安装mysql数据库

mysql数据库作为Hive的元数据存储,所以在安装Hive之前,必须安装好mysql。
注意!!!,在安装Mysql之前,给虚拟机保存一个快照,一旦安装失败,可以恢复快照,重新安装!
1、解压mysql安装包

#将MySQL的安装包提前上传到Linux的/export/software目录
cd /export/software
tar  -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /export/server/

2、重命名

cd /export/server
mv mysql-5.7.29-linux-glibc2.12-x86_64  mysql-5.7.29

3、添加用户组与用户

groupadd mysql
useradd -r -g mysql mysql

4、修改目录权限

chown -R mysql:mysql /export/server/mysql-5.7.29/

5、配置mysql服务

cp /export/server/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysql

6、修改mysql配置文件
(1)修改/etc/init.d/mysql文件

vim /etc/init.d/mysql

将该文件的basedir和datadir路径修改为以下内容

basedir=/export/server/mysql-5.7.29
datadir=/export/server/mysql-5.7.29/data

(2)修改配置文件my.cnf
修改/etc/my.cnf文件

vim /etc/my.cnf

将/etc/my.cnf原来的内容全部删除,然后将以下内容复制进去.

[client]
	port=3306
	default-character-set=utf8
	[mysqld]
	basedir=/export/server/mysql-5.7.29
	datadir=/export/server/mysql-5.7.29/data
	port=3306
	character-set-server=utf8
default_storage_engine=InnoDB

7、初始化mysql

/export/server/mysql-5.7.29/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/export/server/mysql-5.7.29 --datadir=/export/server/mysql-5.7.29/data

执行该命令之后,会生成一个mysql的临时密码,这个密码后边要使用。

8、启动服务

service mysql start

9、登录mysql
使用第7步生成的临时密码

/export/server/mysql-5.7.29/bin/mysql -uroot -p临时密码

注意,如果回车之后临时密码报错,则可以执行以下指令,然后手动输入临时密码:

/export/server/mysql-5.7.29/bin/mysql -uroot -p

10、修改密码
注意这条命令是在登录mysql之后执行

set password=password('123456');

11、开启远程访问权限
注意这条命令是在登录mysql之后执行

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'; 
flush privileges;

12、修改环境变量
退出mysql,然后修改Linux的/etc/profile文件

vim /etc/profile

在该文件末尾最后添加以下内容

export MYSQL_HOME=/export/server/mysql-5.7.29
export PATH=$PATH:$MYSQL_HOME/bin

保存修改之后,让该文件的修改生效

source /etc/profile

13、将mysql设置为开机启动

chkconfig --add mysql  #mysql服务到自启服务
chkconfig mysql on #设置自启

2.2 安装Hive

#--------------------Hive安装配置----------------------
#上传压缩包到/export/software目录里,并解压安装包
cd /export/software/
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server
cd /export/server
mv apache-hive-3.1.2-bin hive-3.1.2

#解决hadoop、hive之间guava版本差异
cd /export/server/hive-3.1.2
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

#添加mysql jdbc驱动到hive安装包lib/文件下
cd  /export/server/hive-3.1.2/lib

mysql-connector-java-5.1.47-bin.jar

#修改hive环境变量文件 添加Hadoop_HOME
cd /export/server/hive-3.1.2/conf/
mv hive-env.sh.template hive-env.sh

vim hive-env.sh

HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/export/server/hive-3.1.2/lib
export HADOOP_HEAPSIZE=4096

#在/export/server/hive-3.1.2/conf目录下新增hive-site.xml 配置mysql等相关信息
vim hive-site.xml

<configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value> jdbc:mysql://node3:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>

    <!-- H2S运行绑定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node3</value>
    </property>

    <!-- 远程模式部署metastore 服务地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node3:9083</value>
    </property>

    <!-- 关闭元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- 关闭元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>

#添加环境变量
vim /etc/profile

export HIVE_HOME=/export/server/hive-3.1.2
export PATH=:$HIVE_HOME/bin:$PATH

#让环境变量生效
source /etc/profile

#初始化metadata(只需要在配置完Hive之后进行一次操作)
cd /export/server/hive-3.1.2
schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表

#-----------------Metastore 和 Hiveserver2启动----
nohup /export/server/hive-3.1.2/bin/hive --service metastore  2>&1 &
nohup /export/server/hive-3.1.2/bin/hive --service hiveserver2 2>&1 &

#验证是否安装成功!
在Linux中输入hive命令,直接回车,出现一个终端,在该终端中可以输入sql命令:
show databases;

#如果hive没有安装成功,则需要做以下操作:
1、	检查参数是否有问题
2、	杀死两个junjar进程
3、	进入mysql删除hive数据库:drop database  hive
4、	重新对hive初始化:schematool -initSchema -dbType mysql -verbos

三、总结

本文介绍了Hive相关知识与安装步骤,Hive可以理解为是Hadoop的一个数据仓库工具。Hive的诞生可以很好的处理底层Java写MapReduce代码的繁琐工作,将复杂逻辑的Java代码实现用简单的SQL代替。大大减轻了开发难度,使得大家对大数据的学习成本大大降低。理解Hive SQL的底层其实就是多个MapReduce过程的串联,是学习好Hive的前提。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值