系列文章目录
文章目录
删除/etc/my.cnf文件中datadir目录指向的目录下所有的内容
修改mysql库下的user表中的root用户,可以允许任意的ip连接
把hive的安装包上传到/opt/software目录下 :
拷贝驱动:把mysql的JDBC驱动拷贝到hive的lib目录下
前言
本博客将重点介绍Hive,这是一个基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为表,并提供了SQL查询功能。了解Hive的本质,即将HQL转化为MapReduce程序,并深入探讨其在HDFS上存储数据、使用MapReduce进行底层数据分析和在YARN上执行程序的实现方式。此外,将对比Hive与传统数据库的差异,包括查询语言、数据更新和执行延迟等方面。还将介绍Hive的安装过程,包括MySQL的安装和配置、Hive的安装以及将Hive元数据配置到MySQL中。
一、Hive概念
二、Hive和数据库作比较
三、Hive的安装
3.1mysql的安装
-
检查当前系统是否安装过mysql:
[hyh@hadoop102 ~]$ rpm -qa|grep mariadbmariadb-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: 0mysql> 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]$ lsapache-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_HOMEexport HIVE_HOME=/opt/module/hive-3.1.2export 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
-
拷贝驱动:把mysql的JDBC驱动拷贝到hive的lib目录下
-
配置Metastore到mysql中:
<?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的高级功能和应用场景,不断拓展自己在大数据领域的技能和知识。