最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dockerfile 一鍵構(gòu)建 Hadoop 鏡像的實(shí)現(xiàn)

 更新時(shí)間:2026年06月22日 09:37:18   作者:對(duì)齊token  
本文主要介紹了Dockerfile一鍵構(gòu)建Hadoop鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

讀完這篇,你會(huì)用 Dockerfile + 外部配置文件的方式,從零構(gòu)建一個(gè) Hadoop 3.3.6 鏡像。

所有 XML 和啟動(dòng)腳本都放在宿主機(jī)目錄里,修改方便,排錯(cuò)清晰。

一、為什么要把配置文件放在外面?

之前我們把四個(gè) XML 和 entrypoint.sh 全寫(xiě)在 Dockerfile 里,雖然能跑,但修改配置每次都要重新編輯 Dockerfile,維護(hù)起來(lái)不夠直觀。

把配置文件獨(dú)立出來(lái),目錄結(jié)構(gòu)清晰,將來(lái)?yè)Q集群、改參數(shù),只需動(dòng)一兩個(gè)文件,不用再碰 Dockerfile 主體。

二、最終目錄結(jié)構(gòu)

在你的 Mac 上創(chuàng)建一個(gè)新文件夾,比如 hadoop-docker,里面放這 6 個(gè)文件:

hadoop-docker/
├── Dockerfile
├── core-site.xml
├── hdfs-site.xml
├── yarn-site.xml
├── mapred-site.xml
└── entrypoint.sh

三、逐個(gè)文件內(nèi)容(直接復(fù)制粘貼)

1. Dockerfile

FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive

# 安裝必要軟件
RUN apt-get update && apt-get install -y --no-install-recommends \
    wget curl sudo openssh-server openssh-client openjdk-11-jdk net-tools vim \
    && rm -rf /var/lib/apt/lists/*

# 創(chuàng)建 hadoop 用戶并授予 sudo 權(quán)限
RUN useradd -m hadoop -s /bin/bash && \
    echo "hadoop:hadoop" | chpasswd && \
    echo "hadoop ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

USER hadoop
WORKDIR /home/hadoop

# 配置 SSH 免密登錄
RUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && \
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \
    chmod 600 ~/.ssh/authorized_keys

# 下載并解壓 Hadoop
RUN wget -q https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz && \
    tar -xzf hadoop-3.3.6.tar.gz && mv hadoop-3.3.6 hadoop && rm hadoop-3.3.6.tar.gz

# 創(chuàng)建 Hadoop 所需目錄
RUN mkdir -p /home/hadoop/hdfs/namenode /home/hadoop/hdfs/datanode /home/hadoop/hadoop/logs

# 拷貝外部配置文件(從構(gòu)建上下文目錄復(fù)制進(jìn)鏡像)
COPY core-site.xml /home/hadoop/hadoop/etc/hadoop/
COPY hdfs-site.xml /home/hadoop/hadoop/etc/hadoop/
COPY yarn-site.xml /home/hadoop/hadoop/etc/hadoop/
COPY mapred-site.xml /home/hadoop/hadoop/etc/hadoop/

# 將環(huán)境變量寫(xiě)入系統(tǒng)級(jí)配置,確保任何登錄方式都能加載
# 將環(huán)境變量文件拷貝到系統(tǒng)目錄,所有用戶登錄時(shí)自動(dòng)加載
COPY hadoop-profile.sh /etc/profile.d/hadoop.sh

# 硬寫(xiě)入 JAVA_HOME 到 hadoop-env.sh,避免 SSH 啟動(dòng)時(shí)找不到
RUN sudo sed -i 's|# export JAVA_HOME=.*|export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64|' /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh

# 提前格式化 NameNode
RUN /home/hadoop/hadoop/bin/hdfs namenode -format -force

# 拷貝啟動(dòng)腳本
COPY entrypoint.sh /home/hadoop/entrypoint.sh
RUN sudo chmod +x /home/hadoop/entrypoint.sh

EXPOSE 9870 9000 9864 8088 8032 22
ENTRYPOINT ["/home/hadoop/entrypoint.sh"]

這個(gè)四個(gè)配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 跟這篇【用 Docker 裝 Hadoop,看這篇就夠了】的一樣,不再啰嗦

2. entrypoint.sh

#!/bin/bash
sudo service ssh start
sudo -u hadoop bash -c "source /etc/profile.d/hadoop.sh && start-dfs.sh && start-yarn.sh"
tail -f /dev/null

所有文件粘貼好后,你的 hadoop-docker 目錄就應(yīng)該有這 6 個(gè)文件。

四、構(gòu)建鏡像

hadoop-docker 目錄下打開(kāi)終端,執(zhí)行:

docker build -t hadoop-single:v1 .
  • -t hadoop-single:v1:給鏡像起名和打標(biāo)簽。
  • 最后的 . 表示構(gòu)建上下文為當(dāng)前目錄,Docker 會(huì)從這里讀取 Dockerfile 和配置文件。

構(gòu)建過(guò)程大約需要幾分鐘??吹?Successfully tagged hadoop-single:v1 即為成功。

五、啟動(dòng)容器

docker run -d --name hadoop-prod \
    -p 9870:9870 \
    -p 8088:8088 \
    -p 9000:9000 \
    -p 2222:22 \
    hadoop-single:v1

參數(shù)解釋:

  • -d:后臺(tái)運(yùn)行
  • --name hadoop-prod:容器名稱
  • -p 宿主機(jī)端口:容器端口:映射關(guān)鍵端口,方便從 Mac 訪問(wèn)
    • 9870:HDFS NameNode Web UI
    • 8088:YARN ResourceManager Web UI
    • 9000:HDFS RPC 端口(Spark、Flink 等客戶端讀寫(xiě)用)
    • 2222:SSH 端口(避免和 Mac 自身的 22 端口沖突)

檢查容器運(yùn)行狀態(tài):

docker ps

看到 hadoop-prod 狀態(tài)為 Up 即正常。

六、驗(yàn)證 Hadoop 服務(wù)

1. 瀏覽器訪問(wèn)

打開(kāi) Mac 的瀏覽器,輸入:

  • HDFS NameNode:http://localhost:9870
  • YARN ResourceManager:http://localhost:8088

如果頁(yè)面正常顯示,說(shuō)明 Hadoop 啟動(dòng)成功。

2. 進(jìn)入容器使用命令行

docker exec -it hadoop-prod su - hadoop

因?yàn)槲覀冊(cè)?/etc/profile.d/hadoop.sh 里寫(xiě)了環(huán)境變量,所以使用 su - 登錄后,HADOOP_HOME 和 PATH 都已經(jīng)自動(dòng)生效,直接就能用命令:

hdfs dfs -mkdir /test
echo "hello hadoop" | hdfs dfs -put - /test/hello.txt
hdfs dfs -cat /test/hello.txt

輸出 hello hadoop 即表示 HDFS 讀寫(xiě)正常。

七、環(huán)境變量為何再也不會(huì)丟?

  • 我們放棄了僅在 ~/.bashrc~/.profile 里設(shè)變量,而是把 export 寫(xiě)到了 /etc/profile.d/hadoop.sh。
  • 這個(gè)目錄下的腳本會(huì)被任何用戶的登錄 shellsu -、SSH 登錄)自動(dòng)加載,連非交互式 shell 也能讀到。
  • 同時(shí)還修改了 hadoop-env.sh,顯式指定 JAVA_HOME,即使通過(guò) SSH 遠(yuǎn)程啟動(dòng) Hadoop 腳本,也絕不會(huì)再報(bào) JAVA_HOME is not set

到此這篇關(guān)于Dockerfile 一鍵構(gòu)建 Hadoop 鏡像的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Dockerfile構(gòu)建 Hadoop 鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何給一個(gè)正在運(yùn)行的Docker容器動(dòng)態(tài)添加Volume

    如何給一個(gè)正在運(yùn)行的Docker容器動(dòng)態(tài)添加Volume

    這篇文章主要介紹了如何給一個(gè)正在運(yùn)行的Docker容器動(dòng)態(tài)添加Volume,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • Docker實(shí)踐--部署Nodejs應(yīng)用

    Docker實(shí)踐--部署Nodejs應(yīng)用

    本篇文章主要介紹了Docker實(shí)踐--部署Nodejs應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • docker安裝mysql完美教程(建議收藏!)

    docker安裝mysql完美教程(建議收藏!)

    最近使用docker,故將數(shù)據(jù)庫(kù)和程序都用docker來(lái)一遍,下面這篇文章主要給大家介紹了關(guān)于docker安裝mysql完美教程的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • CentOS 8.4安裝Docker的詳細(xì)教程

    CentOS 8.4安裝Docker的詳細(xì)教程

    這篇文章主要介紹了CentOS 8.4安裝Docker的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 詳解在Ubuntu 14.04安裝和使用Docker

    詳解在Ubuntu 14.04安裝和使用Docker

    Docker是一個(gè)開(kāi)源軟件,它可以把一個(gè)Linux應(yīng)用和它所依賴的一切(比如配置文件)都封裝到一個(gè)容器。本篇文章主要介紹了在Ubuntu 14.04安裝和使用Docker,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • docker之如何設(shè)置日志文件大小及個(gè)數(shù)

    docker之如何設(shè)置日志文件大小及個(gè)數(shù)

    這篇文章主要介紹了docker之如何設(shè)置日志文件大小及個(gè)數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法

    Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法

    這篇文章主要介紹了Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法,Docker與虛擬機(jī)及搭建過(guò)程,介紹的非常詳細(xì),需要的朋友可以參考下
    2016-10-10
  • docker中間件部署超詳細(xì)步驟

    docker中間件部署超詳細(xì)步驟

    docker是現(xiàn)在很火的一項(xiàng)容器技術(shù),能夠幫助來(lái)部署我們來(lái)快速部署各類環(huán)境,這篇文章主要介紹了docker中間件部署的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn)

    Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn)

    本文主要介紹了Docker Buildx構(gòu)建多平臺(tái)鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Docker Compose引用環(huán)境變量的方法示例

    Docker Compose引用環(huán)境變量的方法示例

    在項(xiàng)目中,往往需要在 docker-compose.yml 文件中使用環(huán)境變量來(lái)控制不同的條件和使用場(chǎng)景。本文集中介紹 docker compose 引用環(huán)境變量的方式,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評(píng)論

密山市| 崇礼县| 合山市| 青田县| 镇康县| 呼玛县| 宁远县| 墨竹工卡县| 区。| 杭州市| 方城县| 老河口市| 大城县| 固镇县| 宁都县| 武鸣县| 义马市| 浦城县| 林西县| 正镶白旗| 盈江县| 灯塔市| 营口市| 神木县| 马尔康县| 上杭县| 延庆县| 永平县| 闽清县| 鄂托克前旗| 金寨县| 北宁市| 札达县| 子长县| 宿迁市| 个旧市| 太原市| 陆丰市| 太保市| 通榆县| 西林县|