> 技术文档 > Docker部署Hive大数据组件_docker hive

Docker部署Hive大数据组件_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 hiveusermod -a -G docker hivesu - hiveecho \"export HIVE_VERSION=4.0.1\" ~/.bash_profilesource ~/.bash_profile

然后,定义docker-compose yaml

cat >docker-compose.yaml <        -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-netnetworks:  zookeeper-net:    external: trueEOF

拉起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;