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

Apache Hive 通过Docker快速入门

 QuickStarted

介绍

在伪分布式模式下在 docker 容器内运行 Apache Hive,以便为 Hive 提供以下快速启动/调试/准备测试环境

快速入门

  • 步骤 1:拉取镜像

从 DockerHub 拉取镜像:https://hub.docker.com/r/apache/hive/tags。以下是最新的镜像:

  • 4.0.0
  • 3.1.3
     
docker pull apache/hive:4.0.0
  • 步骤 2:导出 Hive 版本
     
export HIVE_VERSION=4.0.0
  • 步骤 3:启动带有嵌入式 Metastore 的 HiveServer2。

它是轻量级的,并且为了快速设置,它使用 Derby 作为元存储数据库。

docker run -d -p 10000:10000 -p 10002:10002 --env SERVICE_NAME=hiveserver2 --name hive4 apache/hive:${HIVE_VERSION}
  • 步骤 4:连接到 beeline
     
docker exec -it hiveserver2 beeline -u 'jdbc:hive2://hiveserver2:10000/'

注意:启动独立 Metastore 要将独立 Metastore 与 Derby 一起使用,
 

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

详细设置

  • - 构建图像

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 的版本。例如,以下命令使用 Hive 4.0.0、Hadoophadoop.version和 Teztez.version构建映像,

./build.sh -hive 4.0.0


如果命令未指定 Hive 版本,它将使用本地apache-hive-${project.version}-bin.tar.gz(如果不存在则会触发构建),以及 Hadoop 3.3.6 和 Tez 0.10.3 来构建镜像,

./build.sh -hadoop 3.3.6 -tez 0.10.3

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

运行服务


在继续之前,我们应该HIVE_VERSION先定义环境变量。例如,如果-hive 4.0.0指定构建映像,

export HIVE_VERSION=4.0.0


或者假设你依赖于project.versionpom.xml 中的 current ,

export HIVE_VERSION=$(mvn -f pom.xml -q help:evaluate -Dexpression=project.version -DforceStdout)
  • - 元存储

要快速启动,请使用 Derby 启动 Metastore,

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


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

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 \--mount type=bind,source=`mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout`/org/postgresql/postgresql/42.5.1/postgresql-42.5.1.jar,target=/opt/hive/lib/postgres.jar \--name metastore-standalone apache/hive:${HIVE_VERSION}


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

docker run -d -p 9083:9083 --env SERVICE_NAME=metastore --env DB_DRIVER=postgres \-v /opt/hive/conf:/hive_custom_conf --env HIVE_CUSTOM_CONF_DIR=/hive_custom_conf \--mount type=bind,source=`mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout`/org/postgresql/postgresql/42.5.1/postgresql-42.5.1.jar,target=/opt/hive/lib/postgres.jar \--name metastore apache/hive:${HIVE_VERSION}


对于 4.0 之前的 Hive 版本,如果要将现有的外部 Metastore 架构升级到目标版本,则添加--env SCHEMA_COMMAND=upgradeSchema到命令中。要跳过 schematool 初始化或升级 metastore 使用--env IS_RESUME="true",请为详细日志记录设置--env VERBOSE="true"。

  • -HiveServer2

启动带有嵌入式 Metastore 的 HiveServer2,

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


或者指定一个远程 Metastore(如果可用),

 docker run -d -p 10000:10000 -p 10002:10002 --env SERVICE_NAME=hiveserver2 \--env SERVICE_OPTS="-Dhive.metastore.uris=thrift://metastore:9083" \--env IS_RESUME="true" \--name hiveserver2-standalone apache/hive:${HIVE_VERSION}


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

docker run -d -p 10000:10000 -p 10002:10002 --env SERVICE_NAME=hiveserver2 \--env SERVICE_OPTS="-Dhive.metastore.uris=thrift://metastore:9083" \--mount source=warehouse,target=/opt/hive/data/warehouse \--env IS_RESUME="true" \--name hiveserver2 apache/hive:${HIVE_VERSION}
  • - HiveServer2,元存储

为了快速了解 HiveServer2 和 Metastore,下面有一个为此目的docker-compose.yml放置的内容,请指定第一个:packaging/src/dockerPOSTGRES_LOCAL_PATH

export POSTGRES_LOCAL_PATH=your_local_path_to_postgres_driver


例子:

mvn dependency:copy -Dartifact="org.postgresql:postgresql:42.5.1" && \
export POSTGRES_LOCAL_PATH=`mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout`/org/postgresql/postgresql/42.5.1/postgresql-42.5.1.jar


如果你没有安装 maven 或者无法解析 postgres 驱动程序,你可以自己下载这个 jar,将 更改POSTGRES_LOCAL_PATH为下载的 jar 的路径。然后,

docker compose up -d


因此将启动 HiveServer2、Metastore 和 Postgres 服务。卷用于在 Postgres 和 HiveServer2 容器内保存 Hive 生成​​的数据:

  • 配置单元数据库

         该卷将 Hive 表的元数据保存在 Postgres 容器内。

  • 仓库

           该卷将表的文件存储在 HiveServer2 容器内。
要停止/删除它们,

docker compose down


用法


HiveServer2 Web
在浏览器上访问 http://localhost:10002/

  • 直线:
 docker exec -it hiveserver2 beeline -u 'jdbc:hive2://hiveserver2:10000/'# If beeline is installed on host machine, HiveServer2 can be simply reached via:beeline -u 'jdbc:hive2://localhost:10000/'

  • 运行一些查询
  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.mrgr.cn/news/61904.html

相关文章:

  • 嵌入式浏览器 -- Chromium VS Firefox
  • ChangeCLIP环境配置
  • Spark RDD
  • 计算机毕业设计——ssm基于HTML5的互动游戏新闻网站的设计与实现录像演示2021
  • 戴尔 Inspiron 14 5418 (11代)安装win10 ltsc lot 企业版
  • 解决edge浏览器无法同步问题
  • 深入解析Sysmon日志:增强网络安全与威胁应对的关键一环
  • Leetcode—3216. 交换后字典序最小的字符串【简单】
  • 先验概率、似然概率、后验概率
  • Qt5 读写共享内存,已验证,支持汉字的正确写入和读取
  • Java 中 InputStream 的使用:try-with-resources 与传统方式的比较
  • 解密自闭症全托寄宿肇庆:专业照顾与培养一站式服务
  • node学习记录-os
  • 比较24个结构的迭代次数
  • 量化与知识蒸馏的区别
  • 加密软件有什么功能?
  • flume系列之:flume机器做条带划分提高磁盘性能和吞吐量的详细步骤
  • Xss_less靶场攻略(1-18)
  • 电容的基本知识
  • 大语言模型(LLM)入门级选手初学教程 II
  • 开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的
  • 无人机之集群控制方法篇
  • 码的界MDS码完备码
  • C语言字符串函数的使用方法
  • Pandas 数据可视化指南:从散点图到面积图的全面展示
  • 深入布局- grid布局