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

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

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

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

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

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

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

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

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

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

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

三、逐個文件內(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)境變量寫入系統(tǒng)級配置,確保任何登錄方式都能加載
# 將環(huán)境變量文件拷貝到系統(tǒng)目錄,所有用戶登錄時自動加載
COPY hadoop-profile.sh /etc/profile.d/hadoop.sh

# 硬寫入 JAVA_HOME 到 hadoop-env.sh,避免 SSH 啟動時找不到
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

# 拷貝啟動腳本
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"]

這個四個配置文件: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òu)建鏡像

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

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

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

五、啟動容器

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

參數(shù)解釋:

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

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

docker ps

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

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

1. 瀏覽器訪問

打開 Mac 的瀏覽器,輸入:

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

如果頁面正常顯示,說明 Hadoop 啟動成功。

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

docker exec -it hadoop-prod su - hadoop

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

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

輸出 hello hadoop 即表示 HDFS 讀寫正常。

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    詳解在Ubuntu 14.04安裝和使用Docker

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

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

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

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

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

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

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

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

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

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

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

最新評論

马关县| 沙坪坝区| 隆德县| 龙海市| 绍兴市| 永靖县| 新郑市| 襄汾县| 阜南县| 鹤峰县| 锡林浩特市| 井研县| 通化市| 通州市| 淮安市| 嵊州市| 监利县| 郓城县| 陵川县| 扶余县| 东丽区| 淳化县| 静乐县| 南华县| 新源县| 怀柔区| 永仁县| 咸丰县| 巴林左旗| 肃宁县| 六枝特区| 交城县| 雅江县| 介休市| 资源县| 武安市| 民勤县| 诸暨市| 盐津县| 滦南县| 绍兴县|