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. 解压缩
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module

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

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

3.2、使用mysql存储元数据

  1. 创建元数据库
create database metastore;
  1. 将mysql的jdbc驱动上传到Hive的lib目录下

在这里插入图片描述

  1. 新建hive-site.xml文件
vim $HIVE_HOME/conf/hive-site.xml
<?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. 初始化元数据库
$HIVE_HOME/bin/schematool -dbType mysql -initSchema -verbose

Hive 部署_第1张图片

3.3、Hive-Server 2(HS2) 部署

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

修改配置

# 该配置需要分发到所有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>
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

nohup $HIVE_HOME/bin/hive --service hiveserver2 &

使用DBeaver远程连接
Hive 部署_第2张图片

3.4、Hive Metastore Server (HMS) 部署

为Hive CLI或者Hiveserver2提供元数据访问接口(其本身不存储元数据)
HMS分为两种运行模式:嵌入式模式、独立服务模式
嵌入模式:在每个HS2和Hive CLI中都都嵌入HMS,不做额外配置的情况下,采用的是嵌入模式
独立模式:HMS独立部署,HS2和Hive CLI获取元数据信息通过访问HMS,再由HMS访问元数据

3.4.1、嵌入模式
vim $HIVE_HOME/conf/hive-site.xml
<?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的地址

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

启动HMS

nohup $HIVE_HOME/bin/hive --service metastore &

你可能感兴趣的:(hive,hadoop,数据仓库)