Docker部署Hive大数据组件

搭建过程

访问Hive的Docker Hub,使用说明中(apache/hive - Docker Image | Docker Hub),存在如下几种场景:

bash 复制代码
export HIVE_VERSION=4.0.1

使用Derby做为元数据存储库;拉起HiveServer2(嵌入元存储)

bash 复制代码
docker run -d -p 10000:10000 -p 10002:10002 \
--env SERVICE_NAME=hiveserver2 \
--name hive4 apache/hive:${HIVE_VERSION}

使用Derby做为元数据存储库;拉起独立元存储

bash 复制代码
docker run -d -p 9083:9083 \
--env SERVICE_NAME=metastore \
--name metastore-standalone apache/hive:${HIVE_VERSION}

拉起HS2:
1、使用外部独立元存储:"-Dhive.metastore.uris用于指定外部元存储地址
2、指定挂载

bash 复制代码
docker run -d -p 10000:10000 -p 10002:10002 \
--env SERVICE_NAME=hiveserver2 \
--env SERVICE_OPTS="-Dhive.metastore.uris=thrift://metastore-standalone:9083" \
--mount source=warehouse,target=/opt/hive/data/warehouse \
--env IS_RESUME="true" \
--name hiveserver2-standalone apache/hive:${HIVE_VERSION}

使用外部的RDBMS (Postgres/Oracle/MySql/MsSql),拉起独立元存储

bash 复制代码
docker run -d -p 9083:9083 \
--env SERVICE_NAME=metastore \
--env DB_DRIVER=postgres \
--env SERVICE_OPTS="-Djavax.jdo.option.ConnectionDriverName=org.postgresql.Driver -Djavax.jdo.option.ConnectionURL=jdbc:postgresql://postgres:5432/metastore_db -Djavax.jdo.option.ConnectionUserName=hive -Djavax.jdo.option.ConnectionPassword=password" \
--mount source=warehouse,target=/opt/hive/data/warehouse \
--name metastore-standalone apache/hive:${HIVE_VERSION}

基于上面的说明,我这里将hive的HS2和Metastore均按照standalone部署,且Metastore使用外部数据库(这里使用postgresql)。然后,使用docker-compose进行管理

首先,进行环境准备

bash 复制代码
useradd hive
usermod -a -G docker hive
su - hive

echo "export HIVE_VERSION=4.0.1" ~/.bash_profile

source ~/.bash_profile

然后,定义docker-compose yaml

bash 复制代码
cat >docker-compose.yaml <<'EOF'
services:
  postgres:
    image: postgres
    environment:
      POSTGRES_PASSWORD: password
      POSTGRES_USER: hive
      POSTGRES_DB: metastore_db
    ports:
      - "5432:5432"
    volumes:
      - ./postgres_data:/var/lib/postgresql/data  # 挂载卷到宿主机
    networks:
      - zookeeper-net

  metastore-standalone:
    image: apache/hive:${HIVE_VERSION}
    environment:
      SERVICE_NAME: metastore
      DB_DRIVER: postgres
      SERVICE_OPTS: >
        -Djavax.jdo.option.ConnectionDriverName=org.postgresql.Driver
        -Djavax.jdo.option.ConnectionURL=jdbc:postgresql://postgres:5432/metastore_db
        -Djavax.jdo.option.ConnectionUserName=hive
        -Djavax.jdo.option.ConnectionPassword=password
    ports:
      - "9083:9083"
    depends_on:
      - postgres
    volumes:
      - ./metastore:/opt/hive/data/warehouse  # 挂载卷到宿主机
      - ./postgresql-42.6.2.jar:/opt/hive/lib/postgresql-42.6.2.jar
    networks:
      - zookeeper-net

  hiveserver2-standalone:
    image: apache/hive:${HIVE_VERSION}
    environment:
      SERVICE_NAME: hiveserver2
      SERVICE_OPTS: "-Dhive.metastore.uris=thrift://metastore-standalone:9083"
      IS_RESUME: "true"
    ports:
      - "10000:10000"
      - "10002:10002"
    depends_on:
      - metastore-standalone
    volumes:
      - ./hiveserver2:/opt/hive/data/warehouse  # 挂载卷到宿主机
    networks:
      - zookeeper-net

networks:
  zookeeper-net:
    external: true
EOF

拉起hive服务

bash 复制代码
docker-compose up -d

赋权host上的目录,否则无法写入数据

bash 复制代码
chmod 777 hiveserver2/
chmod 777 metastore/

访问HiveServer2 Web UI

浏览器输入:http://IP:10002/,因为没有配置认证,所以会直接进入主页。

在Beeline中要执行命令举例

bash 复制代码
show tables;
create table hive_example(a string, b int) partitioned by(c int);
alter table hive_example add partition(c=1);
insert into hive_example partition(c=1) values('a', 1), ('a', 2),('b',3);
select count(distinct a) from hive_example;
select sum(b) from hive_example;
相关推荐
Hello.Reader2 小时前
Flink DataStream API 从基础原语到一线落地
大数据·flink
智海观潮2 小时前
Flink在与AI集成的路上再次“遥遥领先” - Flink Agents
大数据·人工智能·flink
北邮-吴怀玉6 小时前
1.4.1 大数据方法论与实践指南-元数据治理
大数据
11年老程序猿在线搬砖7 小时前
如何搭建自己的量化交易平台
大数据·人工智能·python·自动交易·量化交易系统
Elastic 中国社区官方博客7 小时前
Elasticsearch 开放推理 API 增加了对 Google 的 Gemini 模型的支持
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·googlecloud
周杰伦_Jay8 小时前
【实战|旅游知识问答RAG系统全链路解析】从配置到落地(附真实日志数据)
大数据·人工智能·分布式·机器学习·架构·旅游·1024程序员节
B站_计算机毕业设计之家8 小时前
python电商商品评论数据分析可视化系统 爬虫 数据采集 Flask框架 NLP情感分析 LDA主题分析 Bayes评论分类(源码) ✅
大数据·hadoop·爬虫·python·算法·数据分析·1024程序员节
rit84324998 小时前
Git常用命令的详细指南
大数据·git·elasticsearch
cui_win9 小时前
Minikube 安装与使用详细指南(Centos7 踩坑版)
docker·kubernetes·minikube·centos7·升级内核
赵谨言9 小时前
基于Python Web的大数据系统监控平台的设计与实现
大数据·开发语言·经验分享·python