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;