Hive 部署

一、介绍

Apache Hive是一个分布式、容错的数据仓库系统,支持大规模的分析。Hive Metastore(HMS)提供了一个中央元数据存储库,可以轻松地进行分析,以做出明智的数据驱动决策,因此它是许多数据湖架构的关键组件。Hive构建在Apache Hadoop之上,并通过hdfs支持S3,adls,gs等存储。Hive允许用户使用SQL读取、写入和管理PB级数据。
官网地址

二、架构

Hive中主要包含:Hive-Server 2 (HS2)、Hive Metastore Server (HMS)、以及Hive Client CLI
Hive-Server 2 (HS2):HS2支持多客户端并发和身份验证。它旨在为JDBC和ODBC等开放式API客户端提供更好的支持。

简单来说:HS2提供JDBC/ODBC访问接口和用户认证
Hive Metastore Server (HMS):是关系数据库中Hive表和分区的元数据的中央存储库,并使用元存储库服务API为客户端(包括Hive、Impala和Spark)提供对此信息的访问。

简单来说:Metastore提供元数据访问接口,不负责存储元数据,通常保存在MySQL当中

元数据:在Hive中创建的数据库、表、字段信息(不包含数据信息,数据信息存储在HDFS中)
Hive Client CLI:提供客户端访问,只能在安装了Hive的本地使用

三、环境搭建

3.1、最小化安装

部署版本:3.1.3

  1. 下载压缩包

下载地址

  1. 解压缩
shell 复制代码
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module

mv apache-hive-3.1.3-bin/ /opt/module/hive
  1. 修改环境变量
shell 复制代码
vim /etc/profile.d/my_env.sh

#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE/bin
  1. 刷新环境变量
shell 复制代码
source /etc/profile.d/my_env.sh
  1. 初始化元数据(默认使用derby数据库)
shell 复制代码
/opt/module/hive/bin/schematool -dbType derby -initSchema
  1. 启动hive
shell 复制代码
$HIVE_HOME/bin/hive

3.2、使用mysql存储元数据

  1. 创建元数据库
sql 复制代码
create database metastore;
  1. 将mysql的jdbc驱动上传到Hive的lib目录下
  1. 新建hive-site.xml文件
shell 复制代码
vim $HIVE_HOME/conf/hive-site.xml
shell 复制代码
<?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>
  1. 初始化元数据库
shell 复制代码
$HIVE_HOME/bin/schematool -dbType mysql -initSchema -verbose

3.3、Hive-Server 2(HS2) 部署

上面部署完hive只能在本地客户端访问,需要部署HS2才能使用远程jdcb连接访问
修改配置

shell 复制代码
# 该配置需要分发到所有hadoop节点
vim $HADOOP_HOME/etc/hadoop/core-site.xml

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

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

<!--配置root用户能够代理的用户为任意用户-->
<property>
    <name>hadoop.proxyuser.root.users</name>
    <value>*</value>
</property>
shell 复制代码
vim $HADOOP_HOME/etc/hadoop/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>

启动HS2

shell 复制代码
nohup $HIVE_HOME/bin/hive --service hiveserver2 &

使用DBeaver远程连接

3.4、Hive Metastore Server (HMS) 部署

为Hive CLI或者Hiveserver2提供元数据访问接口(其本身不存储元数据)

HMS分为两种运行模式:嵌入式模式、独立服务模式
嵌入模式 :在每个HS2和Hive CLI中都都嵌入HMS,不做额外配置的情况下,采用的是嵌入模式
独立模式:HMS独立部署,HS2和Hive CLI获取元数据信息通过访问HMS,再由HMS访问元数据

3.4.1、嵌入模式
shell 复制代码
vim $HIVE_HOME/conf/hive-site.xml
shell 复制代码
<?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>
</configuration>
3.4.1、独立模式

在嵌入模式的配置基础上增加,HS2和Hive CLI访问HMS的地址

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

启动HMS

shell 复制代码
nohup $HIVE_HOME/bin/hive --service metastore &
相关推荐
K_i1341 小时前
Hadoop 集群自动化运维实战
运维·hadoop·自动化
Q26433650234 小时前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
想ai抽14 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
starfalling102415 小时前
【hive】一种高效增量表的实现
hive
顧棟17 小时前
【Yarn实战】Yarn 2.9.1滚动升级到3.4.1调研与实践验证
hadoop·yarn
D明明就是我19 小时前
Hive 拉链表
数据仓库·hive·hadoop
嘉禾望岗5031 天前
hive join优化和数据倾斜处理
数据仓库·hive·hadoop
yumgpkpm1 天前
华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
大数据·hive·hadoop·elasticsearch·zookeeper·big data·cloudera
忧郁火龙果1 天前
六、Hive的基本使用
数据仓库·hive·hadoop
忧郁火龙果1 天前
五、安装配置hive
数据仓库·hive·hadoop