docker單點安裝Hadoop

1、Docker中拉取jdk8鏡像

拉取鏡像

docker pull openjdk:8-jdk 

查看jdk

docker run -it openjdk:8-jdk bash
which java

2、安裝ubuntu源

拉取鏡像

docker pull ubuntu:22.04

保存?

docker save -o ubuntu-22.04.tar.gz ubuntu:22.04

移動到自己想要的目錄

mv /root/ubuntu-22.04.tar.gz /www/wwwroot/hadoop/docker-files/

3、準備Hadoop所需配置

hadoop3.4.1的下載鏈接:

https://downloads.apache.org/hadoop/common/hadoop-3.4.1/hadoop-3.4.1.tar.gz

目錄結構簡圖:

/www/wwwroot/hadoop
│
├── conf
│   ├── core-site.xml
│   ├── hdfs-site.xml
│   ├── mapred-site.xml
│   └── yarn-site.xml
│
├── docker-files
│   ├── hadoop-3.4.1.tar.gz
│   └── ubuntu-22.04.tar.gz
│
└── Dockerfile

Dockerfile:

注意開放這幾個端口:9870 8088 9000,并且注意剛剛jdk的路徑

# 使用 OpenJDK 8(基于 Debian)
FROM openjdk:8-jdk# 設置 JAVA_HOME,改為實際路徑
ENV JAVA_HOME=/usr/local/openjdk-8
ENV PATH=$JAVA_HOME/bin:$PATH# 設置 Hadoop 版本和環境變量
ENV HADOOP_VERSION=3.4.1
ENV HADOOP_HOME=/usr/local/hadoop
ENV PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# 更換為阿里云 Debian 鏡像源并安裝必要工具
RUN echo 'deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free' > /etc/apt/sources.list && \echo 'deb http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free' >> /etc/apt/sources.list && \echo 'deb http://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free' >> /etc/apt/sources.list && \echo 'deb http://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free' >> /etc/apt/sources.list && \apt-get update && \apt-get install -y wget ssh rsync vim && \apt-get clean && \rm -rf /var/lib/apt/lists/*# 創建工作目錄
RUN mkdir -p /data/hadoop# 復制本地 Hadoop 壓縮包到容器內
COPY docker-files/hadoop-${HADOOP_VERSION}.tar.gz /tmp/# 解壓 Hadoop 到指定目錄
RUN tar -xzf /tmp/hadoop-${HADOOP_VERSION}.tar.gz -C /usr/local/ && \mv /usr/local/hadoop-${HADOOP_VERSION} ${HADOOP_HOME} && \rm /tmp/hadoop-${HADOOP_VERSION}.tar.gz# 配置 SSH(用于啟動 Hadoop)
RUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa && \cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && \chmod 600 ~/.ssh/authorized_keys# 拷貝配置文件
COPY conf/core-site.xml ${HADOOP_HOME}/etc/hadoop/core-site.xml
COPY conf/hdfs-site.xml ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
COPY conf/yarn-site.xml ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
COPY conf/mapred-site.xml ${HADOOP_HOME}/etc/hadoop/mapred-site.xml# 暴露 Hadoop 服務端口
EXPOSE 9870 8088 9000# 啟動 SSH 服務并保持容器運行
CMD ["bash", "-c", "service ssh start && bash"]

core-site.xml:

<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>

hdfs-site.xml:

<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>

mapred-site.xml:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value></property>
</configuration>

yarn-site.xml:

<configuration><property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>0.0.0.0:8088</value></property>
</configuration>

4、構建 Docker 鏡像

先進入對應的目錄:

cd /www/wwwroot/hadoop

構建:

docker build -t hadoop-single-node .

幾個端口的作用:

端口號服務/用途說明
9870HDFS NameNode Web UINameNode 的 Web 界面,顯示 HDFS 文件系統狀態、存儲信息等,默認端口是 9870。訪問地址示例:http://localhost:9870
8088YARN ResourceManager Web UIResourceManager 的 Web 界面,展示集群資源、作業狀態、隊列等,默認端口是 8088。訪問地址示例:http://localhost:8088
9000HDFS NameNode RPC 端口NameNode 的 RPC 服務端口,用于客戶端和 DataNode 連接 NameNode(實際存儲和訪問通信端口),配置文件 core-site.xmlfs.defaultFS 常使用此端口,如 hdfs://localhost:9000

5、啟動docker

docker run -it --name hadoop -p 9870:9870 -p 8088:8088 -p 9000:9000 hadoop-single-node

6、格式化 HDFS:

hdfs namenode -format

7、退出容器重新構建鏡像

exit

?如果容器正在進行就stop,沒的話就直接rm

docker stop hadoop
docker rm hadoop

cd /www/wwwroot/hadoop
docker build -t hadoop-single-node .
docker run -it --name hadoop -p 9870:9870 -p 8088:8088 -p 9000:9000 hadoop-single-node

8、容器里面創建新的用戶

adduser hadoop

這里為了方便密碼我就設置為:

qwer1234

不然使用后續使用start-dfs.sh會報錯:

切換用戶?:

su - hadoop

9、配置環境變量

依次執行下面的命令

echo 'export JAVA_HOME=/usr/local/openjdk-8' >> ~/.bashrc
echo 'export HADOOP_HOME=/usr/local/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc

刷新環境變量:

source ~/.bashrc

10、給Hadoop用戶生成 SSH 密鑰對

生成 SSH 密鑰對(如果還沒有的話):

ssh-keygen -t rsa -P ''

然后回車就好?

將生成的公鑰添加到授權密鑰文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

設置正確的權限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

測試 SSH 無密碼登錄

ssh localhost

AI純享[狗頭]:

11、在容器中追加環境變量

先切換root用戶給對應文件賦予權限

chown hadoop:hadoop /usr/local/hadoop/etc/hadoop/hadoop-env.sh

切換回 hadoop 用戶:

su - hadoop

依次執行

echo 'export JAVA_HOME=/usr/local/openjdk-8' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
echo 'export HADOOP_HOME=/usr/local/hadoop' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh

刷新環境變量:

source ~/.bashrc

?

給hadoop用戶配置讀取/usr/local/hadoop/logs的權限問題,繼續切換回root用戶:

mkdir -p /usr/local/hadoop/logs
chown -R hadoop:hadoop /usr/local/hadoop/logs
chmod -R 755 /usr/local/hadoop/logs

12、重新啟動yarn

start-yarn.sh

會發現無法使用jps,給hadoop用戶jps權限:

切換會root用戶:

查看jps目前只有哪個用戶可以使用:

ls -l /usr/local/openjdk-8/bin/jps

修改權限:

chmod +x /usr/local/openjdk-8/bin/jps
chown hadoop:hadoop /usr/local/openjdk-8/bin/jps

再次查看:

可能你還會發現jps執行不了,可以去檢查一下這個文件:

vi ~/.bashrc

在最后添加或者檢查最后是不是這個:

export JAVA_HOME=/usr/local/openjdk-8
export HADOOP_HOME=/usr/local/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

然后esc,輸出:w保存然后:q退出

刷新配置:

source ~/.bashrc

繼續jps:

會發現沒有namenode,重新格式化一下再啟動:

hdfs namenode -format

然后重新啟動:

start-dfs.sh

13、啟動成功

檢查(具體localhost替換成你的服務器IP):

localhost:9870 發現

localhost:9870 發現

測試創建一個文件夾:

hdfs dfs -mkdir /test
hdfs dfs -ls /

14、關于博主遇到的bug和?停止和啟動hadoop 指令

關于怎么去停止和啟動hadoop:

docker exec -it hadoop /bin/bash
su - hadoop
cd /usr/local/hadoop

sbin/stop-all.sh
sbin/start-all.sh

或者:

$HADOOP_HOME/sbin/stop-yarn.sh 
$HADOOP_HOME/sbin/start-yarn.sh

為啥會需要這些呢,因為我之前以為前面的配置問題導致一些xml文件配置有些問題,無法展示8088和9000的界面,不過9000是rpc的通信界面,用localhost也行,畢竟這個也是docker本地騰訊,后期通過手動修改配置文件在容器里面vim他們,然后就需要進行重新啟動。

修改的過程大概是這樣子:

15、參考

超詳細!關于在Docker里安裝Hadoop的詳細操作(部署單點集群)_docker安裝hadoop-CSDN博客文章瀏覽閱讀2.6k次,點贊21次,收藏22次。同時,未定義 HDFS_NAMENODE_USER、HDFS_DATANODE_USER 和 HDFS_SECONDARYNAMENODE_USER 環境變量。這個問題的核心原因是 Hadoop 的分布式模式需要 SSH 無密碼訪問,而當前用戶 hadoop 無法通過 SSH 無密碼訪問自身或 localhost。這一步很有可能會報錯,報錯:找不到你的JAVA_HOME,原因是你的JDK鏡像容器文件的地址可能跟你配置的Dockerfile文件中的地址不同。這個時候你需要運行JDK8鏡像容器,然后查找路徑。_docker安裝hadoop https://blog.csdn.net/ffhhsxvhh/article/details/144215118

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84093.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp項目之小兔鮮兒小程序商城(二) 首頁的實現:自定義導航欄,輪撥圖,前臺分類,熱門推薦,猜你喜歡,下拉刷新,骨架屏

文章目錄 零.首頁最終效果一.自定義導航欄1.新建pages/index/components/CustomNavbar.vue首頁子組件2.在首頁pages/index/index.vue中引入3.隱藏默認導航欄修改標題顏色4.適配不同機型使用到了uniapp的一個api:獲取屏幕邊界到安全區域的距離在子組件中使用 二.輪撥圖1.新建 sr…

RustDesk自建遠程服務器

目錄 服務端 環境linux 安裝 開放端口 客戶端配置 下載客戶端 安裝后配置網絡 參考&#xff1a;RustDesk自建遠程服務器_rustdesk自建服務器-CSDN博客 服務端 環境 linux 安裝 下載 wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.8-2/r…

【Axure高保真原型】圖片伸縮展示列表

今天和大家分享圖片伸縮展示列表的3個原型案例&#xff0c;模版都是用中繼器制作的&#xff0c;所以使用也很方便&#xff0c;在中繼器表格里導入對應的圖片&#xff0c;即可自動生成交互效果&#xff0c;具體效果可以點擊下方視頻觀看或打開下方預覽地址查看哦 【原型效果】 …

keil新建工程文件結構和每個文件的作用解析(標準庫版本)

通過網盤分享的文件:STM32工程模板 鏈接:https://pan.baidu.com/s/1YPFgXu1kwuwsCVxrXFSjZg?pwd=1111 提取碼: 1111 --來自百度網盤超級會員v5的分享 這個工程模版是來源于B站江科大的模版,每個人搭建工程文件結構不一樣,僅供參考。 工程文件目錄結構如圖所示 1、DebugC…

【AI論文】Saffron-1:LLM安全保證的推理縮放范例

摘要&#xff1a;現有的安全保證研究主要集中在培訓階段的協調&#xff0c;以向LLM灌輸安全行為。 然而&#xff0c;最近的研究表明這些方法容易受到各種越獄攻擊。 同時&#xff0c;推理擴展顯著提高了LLM推理能力&#xff0c;但在安全保證方面仍未得到探索。 為了解決這一差距…

LLM 支持的基于意圖的分類 網絡釣魚電子郵件

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 抽象 網絡釣魚攻擊仍然是現代網絡安全的重大威脅&#xff0c;因為它們成功地欺騙了人類和旨在保護他們的防御機制。傳統的檢測系統主要關注用戶在收件箱中看不到的電子郵件元數據。此外&#xff0c;這些…

C++新特性技術發展路徑和時間

C 的新特性發展路徑和時間線是一個持續演進的過程。以下是一個概覽&#xff0c;涵蓋了主要的 C 標準及其關鍵特性&#xff0c;以及它們發布的時間&#xff1a; C 標準版本及發布時間線: C98 (ISO/IEC 14882:1998): 第一個正式的 C 標準。 發布時間: 1998年關鍵特性: 標準模板庫…

OpenAI 如何在激烈的AI人才爭奪戰中搶占先機?

在這個快速發展的人工智能時代&#xff0c;OpenAI 正處于一個至關重要的發展階段。隨著技術的不斷進步&#xff0c;人工智能行業的競爭日益激烈。如何在這場巨大的競爭中立于不敗之地&#xff0c;成為了每一個AI公司的核心挑戰。就在近日&#xff0c;OpenAI 的新招聘主管華金?…

【Java學習筆記】Java繪圖基礎

Java繪圖基礎 一、Java 坐標體系 1. 像素的概念 計算機在屏幕上顯示的內容都是由屏幕上的每一個像素組成的 例如&#xff0c;計算機顯示器的分辨率是 800600&#xff0c;表示計算機屏幕上的每一行由 800 個點組成&#xff0c;共有 600 行&#xff0c;整個計算機屏幕共有 480…

資深Java工程師的面試題目(一)基礎到高級概述

以下是幾道面向資深Java工程師的面試題目&#xff0c;涵蓋了從基礎知識到高級概念及參考答案&#xff1a; 1. Java內存模型和垃圾回收 問題: 請解釋一下Java的內存模型&#xff0c;并描述不同類型的內存區域。如何選擇適合特定應用需求的垃圾收集器&#xff1f;請比較幾種常…

Spring Retry:優雅地實現方法重試機制

前言 在實際的軟件開發中&#xff0c;尤其是在涉及網絡請求、數據庫操作或外部服務調用的場景下&#xff0c;我們常常會遇到一些臨時性故障&#xff08;Transient Failures&#xff09;&#xff0c;例如網絡波動、數據庫連接超時、第三方 API 暫時不可用等。面對這些問題&…

Mysql報錯

1.權限問題 MySQL 認證協議不兼容問題解決方案 這個錯誤表明您的 MySQL 客戶端與服務器要求的認證協議不兼容&#xff0c;通常發生在 MySQL 8.0 服務器與舊版客戶端之間。 nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database. …

小米汽車5月交付量超過28000臺,與上月持平

6月1日&#xff0c;小米汽車公布5月交付數據&#xff0c;2025年5月&#xff0c;小米汽車交付量超過28000臺&#xff0c;4月官方披露的交付數據也為28000臺。 此外&#xff0c;小米汽車5月新增29家門店&#xff0c;全國82城已有298家門店&#xff1b;6月計劃新增37家門店&#x…

嚴格一致性模型

SC 的第二點約束 :store 必須被 所有(包括自身)執行流 同時看到 ,但是不要求寫操作“立即”對其他處理器可見&#xff1b;允許寫操作延遲一會兒被其他核觀察到。 而 嚴格一致性模型,包括1. store 必須被 所有(包括自身)執行流 同時看到2. 看到的時間 必須是 某個處理器完成寫操…

結合 STM32CubeMX 使用 FreeRTOS 實時操作系統

前言 在STM32CubeMX軟件出現以后&#xff0c;創建嵌入式項目變得簡潔了許多&#xff0c;開發者無需重復編寫MCU的外設初始化配置&#xff0c;只需在STM32CubeMX軟件中動動鼠標配置完畢&#xff0c;就可以自動生成基于HAL/LL庫的Keil項目文件&#xff0c;提高了開發效率。 最近想…

一致性框架:供應鏈分布式事務問題解決方案

來源&#xff1a;得物技術 一、前言 二、一致性理論基礎 1. 一致性模型概述 2. 最終一致性的必要性 三、供應鏈一致性框架總體架構 1. 一致性框架的核心功能 2. 一致性框架整體框架 3. 一致性框架整體流程 四、一致性框架實現原理 1. 核心組件設計 2. 異步執行實現原…

民國大模型:智能重構下的亂世覺醒與文明轉型

引言&#xff1a;當外灘鐘聲遇見生成式AI 在歷史博物館的數字化展廳中&#xff0c;一幅動態的《民國百景圖》正通過全息投影技術演繹十里洋場的繁華與滄桑。這個虛實交融的場景&#xff0c;恰似民國大模型技術的隱喻——以人工智能為紐帶&#xff0c;連接起北洋軍閥混戰與民族…

ROS2 筆記匯總(2) 通信接口

在 ROS 系統中&#xff0c;通信接口&#xff08;Interface&#xff09; 是節點之間傳遞信息的標準“語言協議”&#xff0c;確保了不同功能節點之間可以正確理解和使用彼此傳送的數據內容。我們可以將其理解為“數據結構格式定義”&#xff0c;貫穿于話題&#xff08;Topic&…

微信小程序:將搜索框和表格封裝成組件,頁面調用組件

一、實現效果 實現搜索框,表格和翻頁效果 二、組件實現 1、創建表格組件頁面 (1)創建文件 在文件根目錄(與pages同級)直接創建components文件夾,并創建表格的頁面common-table/index (2)視圖層 a、寫入表頭 循環由主頁面傳遞的columns,數據為字段名label,寬度為設置…

基于貝葉斯學習方法的塊稀疏信號壓縮感知算法

基于貝葉斯學習方法的塊稀疏信號壓縮感知算法 BSBL-FM-master/BSBL_BO.m , 15593 BSBL-FM-master/BSBL_FM.m , 12854 BSBL-FM-master/Phi.mat , 131256 BSBL-FM-master/README.md , 3954 BSBL-FM-master/demo.mat , 1610 BSBL-FM-master/demo_fecg.m , 1481 BSBL-FM-master/de…