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

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.kler.cn/a/377843.html

相关文章:

  • 重温设计模式--2、设计模式七大原则
  • windows11家庭版安装docker无法识别基于wsl2的Ubuntu
  • springboot472基于web网上村委会业务办理系统(论文+源码)_kaic
  • P1596 [USACO10OCT] Lake Counting S 洛谷 -池塘计数
  • CSPM认证最推荐学习哪个级别?
  • GOC编程 第2课 简单命令---直走和转弯命令
  • 华为OD机试真题-组装最大可靠性设备-2024年OD统一考试(E卷)
  • Linux下安装Redis基本步骤
  • 总结一些高级的SQL技巧
  • 收音机天线的耦合方式
  • 6.1、实验一:静态路由
  • java毕业设计之基于Bootstrap的常州地方旅游管理系统的设计与实现(springboot)
  • 【Android】初识路由框架及ARouter基本使用方法
  • eclipse软件路径报错重启后,项目都不见了!(解决办法)
  • 企业选择裸金属服务器的好处有哪些?
  • UBUNTU查看CPU核心数
  • 精美的美食食谱分享首页
  • 【C++笔记】容器适配器及deque和仿函数
  • 甘肃美食,一抹难以割舍的乡愁
  • 判断是否是变位词
  • 探究Spring中所有的扩展点
  • c++中局部变量和全局变量同名,使用::访问全局变量
  • postman 获取登录接口中的返回token并设置为环境变量的方法 postman script
  • GB/T 28046.3-2011 道路车辆 电气及电子设备的环境条件和试验 第3部分:机械负荷(4)
  • Spring Boot 集成 ActiveMQ 实战指南
  • Rust 文档生成与发布