大数据技术入门-05-Hive部署

 系列文章目录

大数据技术入门-01-安装Centos

大数据技术入门-02-hadoop的环境搭建

大数据技术入门-03-hadoop的运行模式

大数据入门技术-04-集群配置


文章目录

前言

一、Hive概念

二、Hive和数据库作比较

三、Hive的安装

        3.1mysql的安装

检查当前系统是否安装过mysql:

把Mysql安装包拷贝到/opt/software目录下

解压mysql安装包

在安装目录下执行rpm安装,要按照如下的顺序依次进行安装

删除/etc/my.cnf文件中datadir目录指向的目录下所有的内容

初始化数据库

查看临时生成的root用户的密码

启动Mysql服务

登录到mysql中

修改root的密码

修改mysql库下的user表中的root用户,可以允许任意的ip连接

3.2Hive安装

        把hive的安装包上传到/opt/software目录下 :

        解压hive安装包到/opt/module目录下面

        将 apache-hive-3.1.2-bin重命名:

        配置环境变量:

        解决日志jar包冲突 : 

3.3Hive元数据配置到Mysql

拷贝驱动:把mysql的JDBC驱动拷贝到hive的lib目录下

配置Metastore到mysql中:

3.4初始化元数据库

登录到mysql

 新建Hive的元数据库

 初始化Hive元数据库

 四、启动hive

启动hadoop集群

启动hive

五、使用元数据服务的方式访问hive

在hive-site.xml 文件中添加配置信息

启动metastore  

启动hive

六、使用JDBC方式访问Hive

在hive-site.xml 文件中添加配置信息:

启动hiveserver2

启动beeline客户端:

看到如下的界面:

结语


前言

        本博客将重点介绍Hive,这是一个基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为表,并提供了SQL查询功能。了解Hive的本质,即将HQL转化为MapReduce程序,并深入探讨其在HDFS上存储数据、使用MapReduce进行底层数据分析和在YARN上执行程序的实现方式。此外,将对比Hive与传统数据库的差异,包括查询语言、数据更新和执行延迟等方面。还将介绍Hive的安装过程,包括MySQL的安装和配置、Hive的安装以及将Hive元数据配置到MySQL中。


一、Hive概念

1.hive 是基于 hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供了 SQL 查询功能。
2.hive 本质:将 HQL 转化为 mapreduce 程序。
        1) hive处理的数据存储再HDFS
        2)  hive分析数据底层的实现是mapreduce
        3)执行程序运行再yarn

二、Hive和数据库作比较

Hive 的查询语言 ( HQL)(hive query language)
数据更新
Hive 是数据仓库,数据仓库就是读多写少,因此, hive 中不建议对数据进行改写,所有的数据都是在加载的时候确定好的。而数据库通常是需要经常进行修改的。
执行延迟
hive 在查询数据时候,因为没有索引,要扫描整张表,因此延迟比较高,另一个是 hive 底层使用哦那个的是mapreduce框架,由于 mapreduce 本身具有高的延迟。
数据的规模
由于 hive 建立在集群上并可以利用 mapreduce 进行并行计算。因此可以支持很大规模的数据。

三、Hive的安装

3.1mysql的安装

原因在于 hive 默认使用的是 derby 的元数据库,开启 hive 之后就会占用元数据库,且不与其它客户端共享,如果想多客户端操作就会报错。我们需要将hive 的元数据地址改为 mysql ,可以支持多窗口操作。
  • 检查当前系统是否安装过mysql:

[hyh@hadoop102 ~]$ rpm -qa|grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64 // 如果存在要通过下面的命令进行卸载
[hyh@hadoop102 ~]$ sudo rpm -e --nodeps mariadb-libs

  • Mysql安装包拷贝到/opt/software目录下

[hyh@hadoop102 ~]$ cd /opt/software/
[hyh@hadoop102 software]$ ll

  • 解压mysql安装包

[hyh@hadoop102 software]$ tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

  • 在安装目录下执行rpm安装,要按照如下的顺序依次进行安装

[hyh@hadoop102 software]$ sudo rpm -ivh mysql-community-common-5.7.28- 1.el7.x86_64.rpm
[hyh@hadoop102 software]$ sudo rpm -ivh mysql-community-libs-5.7.28-
1.el7.x86_64.rpm
[hyh@hadoop102 software]$ sudo rpm -ivh mysql-community-libs-compat-5.7.28-
1.el7.x86_64.rpm
[hyh@hadoop102 software]$ sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[hyh@hadoop102 software]$ sudo rpm -ivh mysql-community-server-5.7.28-
1.el7.x86_64.rpm
  • 删除/etc/my.cnf文件中datadir目录指向的目录下所有的内容

[hyh@hadoop102 software]$ vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
[hyh@hadoop102 software]$ sudo cd /var/lib/mysql
[hyh@hadoop102 mysql]$ sudo rm -rf ./*
  • 初始化数据库

[hyh@hadoop102 mysql]$ cd /opt
[hyh@hadoop102 opt]$ sudo mysqld --initialize --user=mysql
  • 查看临时生成的root用户的密码

[hyh@hadoop102 opt]$ cd /var/log
[hyh@hadoop102 log]$ sudo cat mysqld.log

  • 启动Mysql服务

 [hyh@hadoop102 opt]$ sudo systemctl start mysqld

  •  登录到mysql

[hyh@hadoop102 opt]$ mysql -u root -p
输入临时产生的密码
  • 修改root的密码

mysql> set password =password("root")
-> ;
Query OK, 0 rows affected, 1 warning (0.00 sec)

  • 修改mysql库下的user表中的root用户,可以允许任意的ip连接

mysql> update mysql.user set host='%' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


3.2Hive安装

  • hive的安装包上传到/opt/software目录下

  •  解压hive安装包到/opt/module目录下面

[hyh@hadoop102 opt]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C
/opt/module
[hyh@hadoop102 module]$ ls
apache-hive-3.1.2-bin hadoop-3.1.3 jdk1.8.0_212

  •   apache-hive-3.1.2-bin重命名:

[hyh@hadoop102 module]$ mv apache-hive-3.1.2-bin/ hive-3.1.2
  • 配置环境变量:

[hyh@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

#HIVE_HOME
export HIVE_HOME=/opt/module/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin

现在环境变量如下图:

  • 解决日志jar包冲突 : 

[hyh@hadoop102 lib]$ mv /opt/module/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar log4j
-slf4j-impl-2.10.0.bak

3.3Hive元数据配置到Mysql

  • 拷贝驱动:把mysqlJDBC驱动拷贝到hivelib目录下

  • 配置Metastoremysql中:

在hive conf 目录下创建一个文件 hive-site.xml(注意你的password和我不一致)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- jdbc连接的URL -->
	<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
	</property>
	<!-- jdbc连接的Driver-->
	<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
	</property>
	<!-- jdbc连接的username-->
	<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
	</property>
	<!-- jdbc连接的password,注意这里是你的密码 -->
	<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>你自己的数据库密码</value> 
	</property>
	<!-- Hive默认在HDFS的工作目录 -->
	<property>
	<name>hive.metastore.warehouse.dir</name>
	<value>/user/hive/warehouse</value>
	</property>
	<!-- Hive元数据存储的验证 -->
	<property>
	<name>hive.metastore.schema.verification</name>
	<value>false</value>
	</property>
	<!-- 元数据存储授权 -->
	<property>
	<name>hive.metastore.event.db.notification.api.auth</name>
	<value>false</value>
	</property>
</configuration>

3.4初始化元数据库

  • 登录到mysql

  •  新建Hive的元数据库

mysql> create database metastore;

  •  初始化Hive元数据库

[chenxp@hadoop102 conf]$ schematool -initSchema -dbType mysql -verbose

这里出错的可以参考以下步骤:

发现问题:
在Hive 元数据配置到 MySQL过程中,配置完后初始化Hive元数据库不成功,报错:

bash: schematool: 未找到命令的原因

解决问题:
1.检查是否有 将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下。这一步可能会拷贝错。
2.配置 Metastore 到 MySQL,要在hive/ conf 目录下新建 hive-site.xml 文件,写入配置信息。 
拷贝配置信息时要注意换行问题。
3.检查配置文件里的密码是否写对,这是拷贝别人的配置信息时需要注意的问题。
4.Hive环境变量是否配置无误,最重要的一点是配置好环境变量后一定要先source下


原文链接:https://blog.csdn.net/m0_65025800/article/details/122317309


 四、启动hive

  • 启动hadoop集群

  •  启动hive

hive


五、使用元数据服务的方式访问hive

  • hive-site.xml 文件中添加配置信息

<!-- 指定元数据连接的地址 -->
        <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop102:9083</value>
        </property>

  • 启动metastore  

[hyh@hadoop102 hive-3.1.2]$ hive --service metastore

注意:启动后不能再操作,需要重新打开一个新的shell窗口做操作

  • 启动hive


六、使用JDBC方式访问Hive

  • hive-site.xml 文件中添加配置信息:

<!-- 指定hiveserver2连接host -->
    <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>hadoop102</value>
    </property>
<!--指定hiveserver2的端口号 -->
    <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    </property>
  • 启动hiveserver2

[hyh@hadoop102 bin]$ hive --service hiveserver2

 注意:启动后不能再操作,需要重新打开一个新的shell窗口做操作,需要开启Hive,hiveserver2,这需要两个不同的shell窗口,后续操作还需再开一个shell窗口。

  • 启动beeline客户端:

[hyh@hadoop102 bin]$ beeline -u jdbc:hive2://hadoop102:10000 -n 你的用户名

  • 看到如下的界面:


结语

        通过本篇博客,我们详细了解了Hive的概念和基本原理,并与传统数据库进行了比较。我们学习了Hive的安装过程,包括MySQL的安装和配置以及Hive本身的安装。同时,我们还了解了如何将Hive元数据配置到MySQL中,以实现多客户端操作的需求。通过本博客的学习,读者将对Hive有更深入的理解,并能够开始使用Hive进行数据仓库和SQL查询的工作。Hive作为大数据领域的重要工具之一,将为读者在数据处理和分析方面提供强大的支持。接下来,读者可以进一步学习和探索Hive的高级功能和应用场景,不断拓展自己在大数据领域的技能和知识。        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值