当前位置: 首页 > ops >正文

Docker部署Hive大数据组件

搭建过程

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

export HIVE_VERSION=4.0.1

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

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

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

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

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

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),拉起独立元存储

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进行管理

首先,进行环境准备

useradd hive
usermod -a -G docker hive
su - hiveecho "export HIVE_VERSION=4.0.1" ~/.bash_profilesource ~/.bash_profile

然后,定义docker-compose yaml

cat >docker-compose.yaml <<'EOF'
services:postgres:image: postgresenvironment:POSTGRES_PASSWORD: passwordPOSTGRES_USER: hivePOSTGRES_DB: metastore_dbports:- "5432:5432"volumes:- ./postgres_data:/var/lib/postgresql/data  # 挂载卷到宿主机networks:- zookeeper-netmetastore-standalone:image: apache/hive:${HIVE_VERSION}environment:SERVICE_NAME: metastoreDB_DRIVER: postgresSERVICE_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=passwordports:- "9083:9083"depends_on:- postgresvolumes:- ./metastore:/opt/hive/data/warehouse  # 挂载卷到宿主机- ./postgresql-42.6.2.jar:/opt/hive/lib/postgresql-42.6.2.jarnetworks:- zookeeper-nethiveserver2-standalone:image: apache/hive:${HIVE_VERSION}environment:SERVICE_NAME: hiveserver2SERVICE_OPTS: "-Dhive.metastore.uris=thrift://metastore-standalone:9083"IS_RESUME: "true"ports:- "10000:10000"- "10002:10002"depends_on:- metastore-standalonevolumes:- ./hiveserver2:/opt/hive/data/warehouse  # 挂载卷到宿主机networks:- zookeeper-netnetworks:zookeeper-net:external: true
EOF

拉起hive服务

docker-compose up -d

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

chmod 777 hiveserver2/
chmod 777 metastore/

访问HiveServer2 Web UI

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

在Beeline中要执行命令举例

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;

http://www.xdnf.cn/news/12357.html

相关文章:

  • Vue 渲染 Markdown 文件完全指南
  • 前端项目初始化
  • 浏览器工作原理06 [#]渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
  • 【Python】数据类型
  • 赋能大型语言模型与外部世界交互——函数调用的崛起
  • 数据治理在制造业的实践案例
  • 北斗卫星导航系统(BDS)的 RNSS 和 RDSS
  • VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色,然后再运
  • PostgreSQL17 编译安装+相关问题解决
  • spring:实例化类过程中方法执行顺序。
  • 使用 Mechanical 脚本获取联合反作用力和力矩
  • Python Day43 学习(日志Day10-11复习)
  • 简单了解以下Hugging Face(抱抱脸)
  • 负载均衡LB》》HAproxy
  • php执行系统命令的四个常用函数
  • 西北某省级联通公司:3D动环模块如何实现机房“一屏统管”?
  • [蓝桥杯]轨道炮
  • android debug包和release包的区别
  • 解决 VSCode 中无法识别 Node.js 的问题
  • Python训练营打卡DAY46
  • day 46
  • UNECE R158——解读自动驾驶相关标准法规(VRU)
  • 实践提炼,EtherNet/IP转PROFINET网关实现乳企数字化工厂增效
  • MySQL 回表、索引覆盖与查询优化
  • 5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
  • 高等数学》(同济大学·第7版)第二章第一节“导数的概念“
  • 西安国际数字科创产业园:数字产业生态的开拓者
  • [Spring]-AOP
  • STM32外设问题总结
  • C/C++ 面试复习笔记(4)