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 &
相关推荐
B站计算机毕业设计超人2 小时前
计算机毕业设计hadoop+spark旅游景点推荐 旅游推荐系统 旅游可视化 旅游爬虫 景区客流量预测 旅游大数据 大数据毕业设计
大数据·hadoop·爬虫·深度学习·机器学习·数据可视化·推荐算法
专注API从业者14 小时前
分布式电商系统中的API网关架构设计
大数据·数据仓库·分布式·架构
我要用代码向我喜欢的女孩表白16 小时前
hive迁移补数脚本细粒度 表名-分区唯一键
数据仓库·hive·hadoop
隔壁老登16 小时前
查询hive指定数据库下所有表的建表语句并生成数据字典
数据库·hive·hadoop
m0_748233642 天前
【分布式】Hadoop完全分布式的搭建(零基础)
大数据·hadoop·分布式
薇晶晶2 天前
如何安装Hadoop
大数据·hadoop·分布式
人类群星闪耀时2 天前
数据湖与数据仓库:初学者的指南
大数据·数据仓库·spark
一张假钞2 天前
MapReduce 读取 Hive ORC ArrayIndexOutOfBoundsException: 1024 异常解决
大数据·hive·mapreduce
python资深爱好者2 天前
Hive中的分区和桶的概念及其作用
数据仓库·hive·hadoop
Beekeeper&&P...3 天前
Spring Security,servlet filter,和白名单之间的关系
hive·spring·servlet