在 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.pswp.cn/news/37874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37874.shtml
英文地址,請注明出處:http://en.pswp.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;并響應數據給客戶端。…