hive之入门配置

news2024/11/23 18:57:09

学习hive之路就此开启啦,让我们共同努力

目录

Hive网站: 

 Hive的安装部署:

启动并使用Hive:

安装Mysql:

安装Mysql依赖包:

启动Mysql:

 查看密码:

登录root:

密码错误报错: 

元数据库配置:

(1)登录Mysql:

(2)创建元数据库:   

(3)将MySQL的JDBC驱动拷贝到Hive的lib目录下:

(4)在$HIVE_HOME/conf目录下新建hive-site.xml文件

(5)初始化Hive元数据库(修改为采用MySQL存储元数据)

Hive服务部署:

 hiveserver2服务:

 2)hiveserver2部署

(2)Hive端配置

启动hive:

客户端:

图形化界面:

metastore服务:

metastore运行模式:

(1)嵌入式模式:

(2)独立服务模式

Hive网站: 

学习hive之前这几个网站是必不可少的

1Hive官网地址

官网地址

2文档查看地址

查看文档地址

3下载地址

下载地址

4github地址

GitHub - apache/hive: Apache Hive

 Hive的安装部署:

(1)先下载Hive(要与你的Hadoop版本不产生冲突)

(2)上传到你的虚拟机中

(3)解压到你的虚拟机中

(4)添加环境变量

(需要管理员权限)

vim /etc/profile.d/my_env.sh

        在脚本中添加环境配置:

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

(5)source一下

这里用到了source而我想不起来它的具体作用了,便去重新了解了一下

作用如下:

  1. 加载环境变量:通过使用source命令加载一个脚本文件,可以将其中定义的环境变量导入到当前Shell会话中。这样,可以在当前会话中直接使用这些变量,而无需每次启动一个新的Shell会话。

  2. 执行脚本:source命令可以用于在当前Shell中执行指定的脚本文件。这对于需要在当前Shell中运行脚本并将其中的命令结果直接应用到当前环境的情况非常有用。

  3. 重载配置文件:某些应用程序和服务在配置更改后需要重新加载配置文件才能生效。使用source命令可以重新加载这些应用程序或服务的配置文件,使更改立即生效,而无需重新启动整个应用程序或服务。

  4. 导入函数和别名:通过使用source命令加载一个包含函数和别名定义的脚本文件,可以将这些函数和别名导入到当前Shell会话中,从而可以在当前会话中直接调用这些函数和别名,而无需每次重新定义。

(6)初始化元数据库

在初始化时默认为 derby数据库 

 在那个目录下执行命令就在那个目录下建立数据库

bin/schematool -dbType derby -initSchema

启动并使用Hive:

启动Hive:

在Hive目录下执行命令:

bin/hive

简单使用Hive:

创建表:

create table stu(id int, name string)

添加数据:

insert into stu values(1,"ss")

第二次添加数据:

insert into stu values(1,"sshjkjkj")

查询数据:

查询数据是很快的,对于简单查询是不需要调度yarn提交任务的

select * from stu;

以上操作我们可以查看HDFS客户端来看变化:

在HDFS中生成新的文件夹/user/hive/warehouse/stu

因此可知  hive中的表对于HDFS中的文件夹   向hive表中添加数据生成文件(添加一次生成一个)

上述为最小化模式,只可单机运行,不可多客户端运行(derby为单机数据库

为了应对开发环境,我们通常把元数据库存储在Mysql中

安装Mysql:

先将Mysql上传到Linux上,再解压tar包

因为系统自带的mariadb与Mysql冲突,所以需要卸载mariadb

安装Mysql依赖包:

(1)安装common包:

sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm

 (2)安装libs包:

rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm

(3) 安装libs-compat包:

rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm

(4) 安装client:

rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm

 (5)安装server:

rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

依次安装

启动Mysql:

systemctl start mysqld

 查看密码:

在我们第一一次启动Mysql是会在日志中记录我们的初始密码

 cat /var/log/mysqld.log | grep password

登录root:

根据上个命令查看到的密码进行登录让后进行修改密码(密码必须足够复杂不然因为MySQL密码策略会不让你修改)因此我们要修改密码策略

set global validate_password_policy=0;
set global validate_password_length=4;

让后就可以设置简单的密码了

 设置:

set password=password("123456");

进入MySQL库 :

use mysql

 查询user表:
 

select user, host from user;

 

user 列:存储了MySQL数据库中的用户名称(用户名)。每个用户都有一个唯一的用户名,用于标识用户在数据库中的身份

host 列:指定了与用户关联的主机名(或IP地址)。它定义了允许该用户连接到MySQL数据库的来源。用户可以通过指定主机名或IP地址来限制或允许他们连接到数据库。

修改user表:
我们可以修改root用户所关联的主机为允许 root 用户从任何主机连接到MySQL数据库。

update user set host="%" where user="root";

密码错误报错: 

如果第一次登录mysql就遇到提示密码错误可以看下边文章: 

​​​​​​​​​​
链接


元数据库配置:

元数据库原来时存在本机数据库derby中的,我们为了应和生产环境要在MySQL中创建元数据库

(1)登录Mysql:

mysql -uroot -p123456

(2)创建元数据库:
   

 create database metastore;

(3)将MySQL的JDBC驱动拷贝到Hive的lib目录下:

        因为Hive要与Mysql建立链接存储元数据,所以需要把JDBC驱动拷贝过去确保Hive能够正确地连接到MySQL数据库

(4)在$HIVE_HOME/conf目录下新建hive-site.xml文件

创建这个文件是一个重要的配置文件,用于指定Hive的配置参数

配置文件内容如下:

<?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>123456</value>
    </property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration>

(5)初始化Hive元数据库(修改为采用MySQL存储元数据)

         执行hive的bin目录下的一个脚本

bin/schematool -dbType mysql -initSchema -verbose

Hive服务部署:

 hiveserver2服务:

        Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。

 

1)用户说明

在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问权限控制,所以此时需考虑一个问题:那就是访问Hadoop集群的用户身份是谁?是Hiveserver2的启动用户?还是客户端的登录用户?

答案是都有可能,具体是谁,由Hiveserver2的hive.server2.enable.doAs参数决定,该参数的含义是是否启用Hiveserver2用户模拟的功能。若启用,则Hiveserver2会模拟成客户端的登录用户去访问Hadoop集群的数据,不启用,则Hivesever2会直接使用启动用户访问Hadoop集群数据。模拟用户的功能,默认是开启的。

具体逻辑如下:

未开启用户模拟功能:

开启用户模拟功能:

生产环境,推荐开启用户模拟功能,因为开启后才能保证各用户之间的权限隔离。

 2)hiveserver2部署

(1)Hadoop端配置

hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:

修改配置文件core-site.xml,然后记得分发三台机器

 cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

添加配置如下: 

<!--配置所有节点的atguigu用户都可作为代理用户-->
<property>
    <name>hadoop.proxyuser.atguigu.hosts</name>
    <value>*</value>
</property>

<!--配置atguigu用户能够代理的用户组为任意组-->
<property>
    <name>hadoop.proxyuser.atguigu.groups</name>
    <value>*</value>
</property>

<!--配置atguigu用户能够代理的用户为任意用户-->
<property>
    <name>hadoop.proxyuser.atguigu.users</name>
    <value>*</value>
</property>

(2)Hive端配置

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

vim 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>

启动hive:

在hive下bin目录下有一个hiveserver2脚本进行启动

bin/hiveserver2

但是这样启动的hiveserver2是处于阻塞状态的

对命令进行修改:
 

nohup bin/hiveserver2 &

作用是在后台启动HiveServer2进程,并且使用nohup命令使其脱离终端控制,使其在用户退出终端时仍然可以运行

客户端:

在启动客户端之前要先确认hiveserver2启动

(1)使用命令行客户端beeline进行远程访问

(它存在bin目录下)

 

上述命令是获取jdbc连接  输入连接的主机与端口号

 上述命令是登录hadoop102的用户名

第二行是输入密码(由于我们还没有启用hiveserver2的用户认定功能,所以我们可以不填密码)

图形化界面:

这里图形化页面是使用的DataGrip工具

经过我们创建hive连接与下载缺少的jdbc驱动现在正常使用

metastore服务:

Hive的metastore服务的作用是为Hive CLI或者Hiveserver2提供元数据访问接口。(只是提供接口,不存储元数据)

metastore运行模式:

(1)嵌入式模式:

嵌入式模式是在每个客户端中都嵌入了一个metastore服务,都可以自行进行访问元数据库

         模式图:

 在生产环境中并不推荐,原因如下:

        嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。

        每个客户端都需要用户元数据库的读写权限,元数据库的安全得不到很好的保证。

嵌入式模式部署:

        需要在每个客户端中的hive-site.xml文件中添加与jdbc连接相关配置文件

 <!-- 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>123456</value>
    </property>

(2)独立服务模式:

独立服务模式是每个客户端都共用一个服务,通过服务进行访问元数据库

模式图如下: 

独立服务模式的部署:

在metastor所在的服务器上的hive-site.xml中添加jdbc连接元数据库相关的配置:

   <!-- 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>123456</value>
    </property>

在其他的服务器上要在hive-site.xml中添加metastors的地址:

<!-- 指定metastore服务的地址 -->
<property>
	<name>hive.metastore.uris</name>
	<value>thrift://hadoop102:9083</value>
</property>

注:

如果两种模式下的配置文件都包含,会按照独立服务模式进行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信创国产中间件概览

信创国产中间件概览 中间件国内中间件市场份额第一梯队仍然是IBM> 和Oracle&#xff0c;市场份额合计51%。第二梯队为五大国产厂商&#xff0c;包括东方通、普元信息、宝兰德、中创中间件、金蝶天燕&#xff0c;市场份额合计15%。东方通应用服务器TongWeb对标 开源&#xf…

人脸检测和行人检测3:Android实现人脸检测和行人检测检测(含源码,可实时检测)

人脸检测和行人检测3&#xff1a;Android实现人脸检测和行人检测检测(含源码&#xff0c;可实时检测) 目录 人脸检测和行人检测3&#xff1a;Android实现人脸检测和行人检测(含源码&#xff0c;可实时检测) 1. 前言 2. 人脸检测和行人检测数据集说明 3. 基于YOLOv5的人脸检…

Databend 开源周报第 91 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 新数据类型&…

【Robot Framework】RF关键字大全

收录工作当中最常用的Robot Framework关键字 内容较多&#xff0c;可以CtrlF快速搜索自己想要的 1. RF循环使用&#xff08;FOR循环&#xff09; {list1} create list LOG TXT INI INF C CPP JAVA JS CSS LRC H ASM S ASP FOR ${file_type} IN {list1} log 构造请求参数 ${t…

第二十二章 解释器模式

文章目录 前言一、解释器模式基本介绍解释器模式的原理类图 二、通过解释器模式来实现四则运算完整代码抽象表达式类 Expression变量表达式类 VarExpression抽象运算符号解析器 SymbolExpression加法解释器 AddExpression减法解释器 SubExpression计算器类 CalculatorClint 测试…

【C++】仅需一文速通继承

文章目录 1.继承的概念及定义继承的概念继承的定义定义格式:继承关系和访问限定符继承基类成员访问方式的变化 2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数题目:设计出一个类A,让这个类不能被继承(继承了也没用) 5.继承与友元6.继承与静态成员7.复杂的菱…

VK Cup 2017 - Round 1 A - Bear and Friendship Condition(并查集维护大小 + dfs 遍历图统计边数)

题目大意&#xff1a; 给你一些n个点m条边&#xff0c;如果三个点&#xff08;a,b,c&#xff09;是合法的&#xff0c;当且仅当 a-b,b-c,c-a都有一条边&#xff0c;问你这个图是否合法&#xff0c;如果有一个或两个点视为合法 思路 考虑什么图才是个合法图&#xff1a;除了点…

Spring 更简单的读取和存储对象

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 前面介绍了通过配置文件的方式来存储 Bean 对象&#xff0c;那么有没有更简单的方式去存储 Bean 对象&#xff1f; 有以下 2 种方…

【论文】LearningDepth from Single Monocular Images

2005 NIPS 文章目录 特征提取卷积核的使用Multiscale 多尺度提取特征特征的相对深度 模型结论特征提取数据集导致的error 文章使用了Markov 随机场(Markov Random Fields, MRF) 从单图像上直接估计出图像的深度信息。 与RGBD输入数据不同的是&#xff0c;文章中采用了YCbCr数据…

知识点总结-DAY1

1. 请解释OSI模型中每一层的作用 应用层&#xff1a;为用户提供服务&#xff0c;处理应用程序之间交换的数据。 表示层&#xff1a;处理数据在网络上的表示形式&#xff0c;如加密和解密、压缩和解压缩等。 会话层&#xff1a;建立、维护和终止两个节点之间的会话&#xff0c…

安全防御 --- IPSec理论

IPSec 1、概述&#xff1a; 是IETF&#xff08;Internet Engineering Task Force&#xff09;制定的一组开放的网络安全协议&#xff0c;在IP层通过数据来源认证、数据加密、数据完整性和抗重放功能来保证通信双方Internet上传输数据的安全性。 IPSec安全服务 机密性完整性…

雨季时,骑行经过泥泞路段该怎么办?

泥泞路段骑行是一项需要技巧和勇气的挑战。在泥泞路段骑行&#xff0c;骑友又叫玩泥巴&#xff0c;不仅需要良好的车技和身体素质&#xff0c;还需要有足够的经验和判断力&#xff0c;以应对各种突发情况。下面&#xff0c;将从多个角度介绍泥泞路段骑行的挑战和技巧&#xff0…

宏观经济笔记--社会消费品零售总额

我们讨论了GDP的三个分项&#xff1a;投资、消费、净出口。投资我们前面已经介绍了&#xff0c;消费这一个分项我们还一直没有讨论。消费最重要的数据是每个月月中统计局公布的社会消费品零售总额。 一般的论调中&#xff0c;认为消费是三个GDP驱动项中最健康的一项&#xff0…

2023-5-4-Lua语言学习

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

openQA----基于openQA新增指定版本的openSUSE的iso镜像进行测试

【原文链接】openQA----基于openQA新增指定版本的openSUSE的iso镜像进行测试 &#xff08;1&#xff09;执行如下命令下载openSUSE的测试脚本&#xff0c;它会从openSUSE的测试脚本github地址 /usr/share/openqa/script/fetchneedles&#xff08;2&#xff09;然后执行如下命…

在 SourceTree 中使用 rebase (win10)

原始状态 创建两个分支 dev1 dev2, 并且推送到远端 切换到dev1 做一些修改并提交dev1-1&#xff0c;注意不要推送到到远端 切换到master分支&#xff0c;拉取最新的代码 切换到dev1 分支&#xff0c;进行变基操作&#xff0c;右击master分支 推送dev1分支到远端 切换到master分…

如何快速获取已发表学术论文的期刊封面及目录(caj格式下载和caj转pdf)

目录 1 下载caj格式的封面和目录 2 CAJ格式的封面和目录转PDF格式 在进行职称评审或成果申报时&#xff0c;一般要求提交你发表的成果所在的期刊的当期封面和目录。本文就手把手带带你制作一个期刊目录。 重要提示&#xff1a;下载期刊封面和目录需要你有知网账号&#xff0…

iOS 17预计开放侧载,游戏安全对抗将迎来新高度

近日&#xff0c;据彭博社报道&#xff0c;iOS 17预计开放“侧载”机制。所谓的“侧载”是指&#xff1a;iPhone用户下载APP时&#xff0c;可选择不在APP store中下载&#xff0c;可在相关APP官网或者第三方应用市场进行下载。 众所周知&#xff0c;APP闭源生态是苹果公司最核…

C++ 基础二

C 核心编程 1 内存分区模型 内存分区模型 代码区&#xff1a;存放函数的二级制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a;存放全局变量和静态变量以及常量 栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量等 堆区&…

5.1 矩阵的特征值和特征向量

学习步骤&#xff1a; 学习特征值和特征向量的定义和性质&#xff0c;我会采取以下方法&#xff1a; 1. 学习线性代数基础知识&#xff1a;特征值和特征向量是线性代数中的重要概念&#xff0c;需要先掌握线性代数的基础知识&#xff0c;例如向量、矩阵、行列式、逆矩阵、转置…