0


在 docker 中快速启动 Apache Hive

介绍

在伪分布式模式下,在Docker容器内运行Apache Hive,可以提供以下功能:快速启动/调试/为Hive准备测试环境。

快速开始

1. 拉取镜像

从DockerHub:https://hub.docker.com/r/apache/hive/tags中拉取镜像。目前发布了3个镜像:

  • 4.0.0-alpha-2
  • 4.0.0-alpha-1
  • 3.1.3
docker pull apache/hive:4.0.0-alpha-2
2. 配置变量
exportHIVE_VERSION=4.0.0-alpha-2
3. 启动服务

这是轻量级的,为了快速启动,它使用Derby存储元数据。

docker run -d-p10000:10000 -p10002:10002 --envSERVICE_NAME=hiveserver2 --name hive4 apache/hive:${HIVE_VERSION}
4. 使用beeline连接
dockerexec-it hiveserver2 beeline -u'jdbc:hive2://hiveserver2:10000/'

详细配置

构建镜像

Apache Hive依靠Hadoop、Tez和其他一些工具来方便读取、写入和管理大型数据集。 /packaging/src/docker/build.sh提供了针对指定版本的依赖项构建映像以及从源代码构建映像的方法。

从源码构建
mvn clean package -pl packaging -DskipTests-Pdocker
构建指定版本

添加参数如下:

-hadoop<hadoop version>-tez<tez version>-hive<hive version>

如果没有提供版本,它会从当前pom. xml:project.version、hadoop.version和tez.version中分别读取Hive、Hadoop和Tez的版本。例如下面的命令使用Hive4.0.0-alpha-2、Hadoop hadoop.version和Tez tez.version构建镜像。

./build.sh -hive4.0.0-alpha-2

如果命令没有指定Hive版本,它将使用本地的apache-hive-${project. version}-bin.tar.gz(如果不存在将触发构建),连同Hadoop3.1.0和Tez0.10.1构建镜像。

./build.sh -hadoop3.1.0 -tez0.10.1

构建成功后,我们可以默认得到一个名为apache/hive的Docker镜像,镜像由提供的Hive版本标记。

运行hive服务

在继续之前,我们应该先定义环境变量HIVE_VERSION。例如,如果指定-hive4.0.0-alpha-2来构建映像。

exportHIVE_VERSION=4.0.0-alpha-2

或者假设您依赖于pom. xml中的当前project.version。

exportHIVE_VERSION=$(mvn -f pom.xml -q help:evaluate -Dexpression=project.version -DforceStdout)

Metastore

为了快速开始,请使用Derby启动Metastore。

docker run -d-p9083:9083 --envSERVICE_NAME=metastore --name metastore-standalone apache/hive:${HIVE_VERSION}

当服务关闭时,一切都会丢失。为了保存Hive表的架构和数据,请使用外部Postgres和Volume启动容器以保留它们。

docker run -d-p9083:9083 --envSERVICE_NAME=metastore \--envDB_DRIVER=postgres \--envSERVICE_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"\--mountsource=warehouse,target=/opt/hive/data/warehouse \--name metastore-standalone apache/hive:${HIVE_VERSION}

如果要为服务使用自己的hdfs-site. xml或yarn-site.xml,可以为命令提供环境变量HIVE_CUSTOM_CONF_DIR,例如将自定义配置文件放在 /opt/hive/conf目录下,然后运行。

docker run -d-p9083:9083 --envSERVICE_NAME=metastore \--envDB_DRIVER=postgres -v /opt/hive/conf:/hive_custom_conf --envHIVE_CUSTOM_CONF_DIR=/hive_custom_conf \--name metastore apache/hive:${HIVE_VERSION}

HiveServer2

使用嵌入式Metastore启动HiveServer2,

docker run -d-p10000:10000 -p10002:10002 --envSERVICE_NAME=hiveserver2 --name hiveserver2-standalone apache/hive:${HIVE_VERSION}

或指定远程元存储,

docker run -d-p10000:10000 -p10002:10002 --envSERVICE_NAME=hiveserver2 \--envSERVICE_OPTS="-Dhive.metastore.uris=thrift://metastore:9083"\--envIS_RESUME="true"\--name hiveserver2-standalone apache/hive:${HIVE_VERSION}

要在容器重新启动之间保存数据,您可以使用Volume启动HiveServer2,

docker run -d-p10000:10000 -p10002:10002 --envSERVICE_NAME=hiveserver2 \--envSERVICE_OPTS="-Dhive.metastore.uris=thrift://metastore:9083"\--mountsource=warehouse,target=/opt/hive/data/warehouse \--envIS_RESUME="true"\--name hiveserver2 apache/hive:${HIVE_VERSION}

同时启用Metastore和HiveServer2

要快速了解HiveServer2和Metastore,您可以运行:

cd packaging/src/docker
docker compose up -d

卷用于将Hive生成的数据保存在Postgres和HiveServer2容器中: hive_db 卷将Hive表的元数据保存在Postgres容器中。 该卷将表的文件存储在HiveServer2容器中。

  • hive_db - 卷将Hive表的元数据保存在Postgres容器中。
  • warehouse - 该卷将表的文件存储在HiveServer2容器中。

更多

  • HiveServer2 web- 在浏览器上访问http://localhost:10002/
  • Beeline:dockerexec-it hiveserver2 beeline -u'jdbc:hive2://hiveserver2:10000/'beeline -u'jdbc:hive2://localhost:10000/'
  • 运行一些查询showtables;createtable hive_example(a string, b int) partitioned by(c int);altertable hive_example addpartition(c=1);insertinto hive_example partition(c=1)values('a',1),('a',2),('b',3);selectcount(distinct a)from hive_example;selectsum(b)from hive_example;
标签: docker apache hive

本文转载自: https://blog.csdn.net/weixin_46376562/article/details/132282458
版权归原作者 程序员 Harry 所有, 如有侵权,请联系我们删除。

“在 docker 中快速启动 Apache Hive”的评论:

还没有评论