在 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. 配置变量

export HIVE_VERSION=4.0.0-alpha-2

3. 启动服务

这是轻量级的,为了快速启动,它使用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/'

详细配置

构建镜像

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 -hive 4.0.0-alpha-2

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

./build.sh -hadoop 3.1.0 -tez 0.10.1

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

运行hive服务

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

export HIVE_VERSION=4.0.0-alpha-2

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

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

Metastore

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

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

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

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}

如果要为服务使用自己的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 \--name metastore apache/hive:${HIVE_VERSION}

HiveServer2

使用嵌入式Metastore启动HiveServer2,

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

或指定远程元存储,

 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}

同时启用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:

    docker exec -it hiveserver2 beeline -u 'jdbc:hive2://hiveserver2:10000/'
    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.mzph.cn/news/37874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitlab修改远程仓库地址

目录 背景&#xff1a; 解决&#xff1a; 1.删除本地仓库关联的远程地址&#xff0c;添加新的远程仓库地址 2.直接修改本地仓库关联的远程仓库地址 3.打开.git隐藏文件修改远程仓库地址 4.拉取代码报错(git host key verification failed) 背景&#xff1a; 公司搬家&#…

数字图像处理 - 图像处理结合机器学习的应用示例

在本文中,特别关注树叶分类机器学习技术的实现。我们的目标是演示如何利用机器学习算法来分析一系列叶子照片,从而实现准确分类并提供对植物领域有价值的算法。 图像处理中机器学习的本质 机器学习使计算机能够学习模式并根据视觉数据进行预测,彻底改变了图像处理领域。在叶…

image has dependent child images

问题&#xff1a;很多none的镜像无法被删除 解决过程&#xff1a; 1、通过 docker image prune -f 提示可删除为 0 2、直接进行删除报错&#xff1a; docker rmi 8f5116cbc201Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - im…

银河麒麟安装php7.1.33

银河麒麟V10兼容CentOS 8 安装过程与CentOS类似。 TencentOS3.1安装PHPNginxredis测试系统_乐大师的博客-CSDN博客 可以参考之前我写的文章。 不过有2个细节不同&#xff0c;下面说下。 问题1&#xff1a;编译错误提示“error:off_t undefined” 解决方法&#xff1a; 编…

TCP收发信息(C++)

目录 一、介绍 二、收数据 三、发数据 一、介绍 tcp和udp的区别之一&#xff0c;即tcp是有连接的&#xff0c;udp是无连接的&#xff0c;udp收发数据的代码可以独立运行&#xff0c;tcp发数据前必须确保收数据的一方是打开的&#xff0c;否则无法建立连接。 二、收数据 tc…

宋浩线性代数笔记(五)矩阵的对角化

本章的知识点难度和重要程度都是线代中当之无愧的T0级&#xff0c;对于各种杂碎的知识点&#xff0c;多做题复盘才能良好的掌握&#xff0c;良好掌握的关键点在于&#xff1a;所谓的性质A与性质B&#xff0c;是谁推导得谁~

MyBatis的SqlSession使用步骤

对MyBatis的SqlSession理解 SqlSession是 MyBatis 框架中的一个接口&#xff0c;用于执行与数据库相关的操作。它提供了一系列方法&#xff0c;用于查询、插入、更新和删除数据等数据库操作。 SqlSession接口是通过SqlSessionFactory创建的&#xff0c;每个SqlSession实例都代…

Ubuntu22.04复现SHADEWACHER(手动安你就慢了)

因为我是打算跑TC数据集&#xff0c;所以跳过audit安装。 我的Ubuntu使用的是清华源。 1. Parser Setup 1.1 g apt install g1.2 neo4j Ubuntu22.04换什么源都会导致无法定位软件包&#xff0c;添加neo4j的官方源又会导致不信任的源。 22.04以下的版本&#xff0c;直接用命…

MySQL 根据多字段查询重复数据

MySQL 根据多字段查询重复数据 在实际的数据库应用中&#xff0c;我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能&#xff0c;让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据&#xff0c;并提供…

SIFT 算法 | 如何在 Python 中使用 SIFT 进行图像匹配

介绍 人类通过记忆和理解来识别物体、人和图像。你看到某件事的次数越多,你就越容易记住它。此外,每当一个图像在你的脑海中弹出时,它就会将该项目或图像与一堆相关的图像或事物联系起来。如果我告诉你我们可以使用一种称为 SIFT 算法的技术来教机器做同样的事情呢? 尽管…

C语言——动态内存函数(malloc、calloc、realloc、free)

了解动态内存函数 前言&#xff1a;一、malloc函数二、calloc函数三、realloc函数四、free函数 前言&#xff1a; 在C语言中&#xff0c;动态内存函数是块重要的知识点。以往&#xff0c;我们开辟空间都是固定得&#xff0c;数组编译结束后就不能继续给它开辟空间了&#xff0…

贴吧照片和酷狗音乐简单爬取

爬取的基本步骤 很简单&#xff0c;主要是两大步 向url发起请求 这里注意找准对应资源的url&#xff0c;如果对应资源不让程序代码访问&#xff0c;这里可以伪装成浏览器发起请求。 解析上一步返回的源代码&#xff0c;从中提取想要的资源 这里解析看具体情况&#xff0c;一…

13 计算机视觉-代码详解

13.2 微调 为了防止在训练集上过拟合&#xff0c;有两种办法&#xff0c;第一种是扩大训练集数量&#xff0c;但是需要大量的成本&#xff1b;第二种就是应用迁移学习&#xff0c;将源数据学习到的知识迁移到目标数据集&#xff0c;即在把在源数据训练好的参数和模型&#xff…

浅谈现代医院手术室IT供配电系统的设计与研究

安科瑞 华楠 &#xff3b;摘要&#xff3d; 随着人们的生活水平的不断提高&#xff0c;医疗条件的不断改善&#xff0c;人们对健康越来越重视同时对医疗条件的要求也越来越高&#xff0c;对医院手术室医疗设施提出了新的要求。以往医院普通手术室状况已不能满足人们的要求&…

GPT的第一个创作

嗨&#xff0c;大家好&#xff0c;我是赖兴泳&#xff01;今天&#xff0c;我要和大家聊一聊前端开发&#xff0c;就像我用音符创造音乐一样&#xff0c;前端开发也是创造美丽的用户界面的过程。 前端开发是构建网站和应用程序用户界面的关键部分。就像音乐家需要精心编排音符…

腾讯云CVM服务器端口在安全组中打开!

腾讯云服务器CVM端口怎么开通&#xff1f;腾讯云服务器端口是通过配置安全组规则来开通的&#xff0c;腾讯云服务器网以开通80端口为例来详细说下腾讯云轻量应用服务器开启端口的方法&#xff0c;其他的端口的开通如8080、1433、443、3306、8888等端口也适用于此方法&#xff0…

基于Yolov5与LabelMe训练自己数据的图像分割完整流程

基于Yolov5与LabelMe训练自己数据的实例分割完整流程 1. Yolov5配置2. 创建labelme虚拟环境4. 接下来开始使用labelme绘制分割数据集4.1 json to txt4.2 划分数据集(可分可不分) 5. 训练 1. Yolov5配置 参照这边文章&#xff1a; https://blog.csdn.net/ruotianxia/article/de…

okcc对接ASR平台,okcc客户投诉的安全问题

客户投诉: 客户为什么要投诉&#xff1f;实际上分为两种情况&#xff0c;一是客户被冒犯到不能容忍导致的投诉&#xff0c;二是恶意投诉。降低客户被冒犯投诉的概率&#xff0c;无非就是选择客户、规范用语、降低频度&#xff1b;减少恶意投诉&#xff0c;回避是实践证明最有效…

前端= 结构(HTML)+ 样式(CSS)+ 行为(JavaScript)

前端开发确实涵盖了行为&#xff08;JavaScript&#xff09;、样式&#xff08;CSS&#xff09;和结构&#xff08;HTML&#xff09;这三个主要方面。这三个方面在前端开发中密切协作&#xff0c;共同构建用户界面和用户体验。 结构&#xff08;Structure&#xff09;&#xff…

java # Servlet

一、什么是Servlet&#xff1f; Servlet是javaEE规范之一。规范就是接口。JavaWeb三大组件分别是&#xff1a;Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个Java小程序&#xff0c;它可以接收客户端发送来的请求&#xff0c;并响应数据给客户端。…