在VMware下Hadoop分布式集群環境的配置--基于Yarn模式的一個Master節點、兩個Slaver(Worker)節點的配置

你遇到的大部分ubuntu中配置hadoop的問題這里都有解決方法!!!(近10000字)

概要

Docker虛擬容器環境下,進行Hadoop-3.2.2分布式集群環境的配置與安裝,完成基于Yarn模式的一個Master節點、兩個Slaver(Worker)節點的配置。

1.主要步驟

  1. 安裝配置啟動Docker虛擬容器
  2. 配置主機名
  3. 配置自動時鐘同步
  4. 配置hosts列表
  5. 配置免密碼登錄
  6. 安裝JDK(在三臺節點分別操作此步驟)
  7. 安裝部署Hadoop集群

2、實驗環境

虛擬機數量:3

系統版本:Centos Stream/Ubuntu 20.418.4

Hadoop版本:Apache Hadoop 3.2.23.2.1

3、相關技能

熟悉Linux操作系統

Hadoop原理

4、知識點

常見Linux命令的使用

linux系統基礎配置

配置JDK

配置Hadoop的相關參數

掌握Hadoop操作指令

在安裝Docker之前安裝一些必要的依賴包:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

添加 Docker 的官方 GPG 密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker 的 APT 源

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

更新 APT 包索引

sudo apt update

安裝 Docker CE

sudo apt install docker-ce

安裝完成后,您可以通過運行以下命令來驗證 Docker 是否成功安裝:

sudo systemctl status docker

下載Docker compose

sudo apt update
sudo apt install docker-compose
docker-compose version  

創建Docker-compose.yml

將以下內容放入yml:

version: "3"  services:  master:  image: ubuntu:latest  container_name: masternode  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.11  ports:  - 9870:9870  - 9000:9000  - 18040:18040  - 18030:18030  - 18025:18025  - 18141:18141  - 18088:18088  - 50070:50070  - 60000:60000  - 16000:16000  - 8080:8080  volumes:  - hadoop:/hadoop/master  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  slave01:  image: ubuntu:latest  container_name: slave01node  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.12  volumes:  - hadoop:/hadoop/slave01  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  slave02:  image: ubuntu:latest  container_name: slave02node  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.13  volumes:  - hadoop:/hadoop/slave02  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  slave03:  image: ubuntu:latest  container_name: slave03node  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.14  volumes:  - hadoop:/hadoop/slave03  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  volumes:  hadoop:  networks:  hadoop:  driver: bridge  ipam:  driver: default  config:  - subnet: "10.10.0.0/24" 

在docker鏡像地址中有已無法進入的地址,需要換源,具體看:完美解決Docker pull時報錯:https://registry-1.docker.io/v2/-CSDN博客

啟動Docker虛擬容器

sudo docker-compose -f docker-compose.yml  up

打開三個新的終端窗口,分別登錄master、slave01和slave02節點(按下ctrl + d可以從各節點退出

sudo docker exec -it masternode /bin/bash
sudo docker exec -it slave01node /bin/bash
sudo docker exec -it slave02node /bin/bash

使用vim編輯masternode主機名

vi /etc/hostname

docker容器中沒有vim包需要下載:

apt-get update
apt-get install -y vim

同理將slave01和slave02也改好

使用Linux命令crontab配置定時任務進行自動時鐘同步(分別進入三個節點)

apt install -y croncrontab -e

? ? 按”i ”鍵,進入INSERT模式;輸入下面的內容(星號之間和前后都有空格)??

0 1 * * * ntpdate cn.pool.ntp.org

? ?按Esc鍵退出INSERT模式,按下“shift+:”鍵,輸入wq保存修改并退出

? 手動同步時間,直接在Terminal運行下面的命令

??

apt install -y ntpdatentpdate cn.pool.ntp.org

分別在三個節點配置hosts列表

在各虛擬機中運行ifconfig命令,獲得當前節點的ip地址

apt install -y net-toolsifconfig

分別獲得三個結點的ip地址

編輯主機名列表文件

vi /etc/hosts

將下面三行添加到/etc/hosts文件中,保存退出

#master節點對應IP地址是10.10.0.11,slave01對應的IP是10.10.0.12,slave02對應的IP是10.10.0.13
10.10.0.11 master
10.10.0.12 slave01
10.10.0.13 slave02

Ping主機名,按“Ctrl+C”終止命令

ping master 
ping slave01  
ping slave02

三個虛擬節點的免密碼登錄配置

先在master節點上進行配置,生成rsa的SSH公鑰

apt install -y openssh-clientssh-keygen -t rsa

生成的密鑰在用戶根目錄中的.ssh子目錄中,進入.ssh目錄,查看目錄文件

cd ~/.ssh/ls

將id_rsa.pub 文件追加到authorized_keys文件中

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

修改authorized_keys文件的權限,命令如下:

chmod 600 ~/.ssh/authorized_keys

將專用密鑰添加到 ssh-agent 的高速緩存中

ssh-agent bashssh-add ~/.ssh/id_rsa

將authorized_keys文件復制到slave01、slave02節點root用戶的根目錄,命令(在宿主機終端下執行)如下:

     sudo docker cp  masternode:/root/.ssh/authorized_keys .sudo docker cp  authorized_keys slave01node:/root/.ssh/sudo docker cp  authorized_keys slave02node:/root/.ssh/

打開主機和三個節點的防火墻

apt install ufw -y

驗證免密登陸

ssh slave01

退出slave01遠程登錄

exit

通過apt-get安裝JDK

apt-get install openjdk-8-jdk

使用vim修改“.bashrc”

 vi ~/.bashrc 

復制粘貼以下內容添加到到上面vim打開的文件中:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

export PATH=$JAVA_HOME/bin:$PATH

使環境變量生效,查看Java版本

 source ~/.bashrcjava -version

安裝部署Hadoop集群

說明:每個節點上的Hadoop配置基本相同,在master節點操作,然后復制到slave01、slave02兩個節點。

hadoop用Ubuntu自帶的火狐瀏覽器下載,鏡像地址:

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/

將/目錄下的hadoop-3.4.1.tar.gz壓縮包解壓到/hadoop-3.4.1目錄下:

sudo tar -zxf /home/Downloads/hadoop-3.4.1.tar.gz -C /usr/local

-zxf后面的是剛才下載的壓縮包路徑,如果沒安裝輸入法打不了中文的可以直接找到剛才下載的那個壓縮包點復制然后粘貼到命令行就是路徑了

配置hadoop-env.sh文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/hadoop-env.sh

在hadoop-env.sh文件中添加JAVA環境變量:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

配置yarn-env.sh文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/yarn-env.sh

在yarn-env.sh文件中添加JAVA環境變量

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

配置core-site.xml 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/core-site.xml

復制粘貼以下內容,添加到上面vim打開的core-site.xml 文件中:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop</value>
</property>
</configuration>

配置hdfs-site.xml 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/hdfs-site.xml

復制粘貼以下內容,添加到到上面vim打開的hdfs-site.xml 文件中:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

配置yarn-site.xml 文件

 vi /usr/local/hadoop-3.4.1/etc/hadoop/yarn-site.xml

復制粘貼以下內容,添加到到上面vim打開的yarn-site.xml 文件中:

<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>

配置mapred-site.xml 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/mapred-site.xml

復制粘貼以下內容,添加到到上面vim打開的mapred-site.xml 文件中:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置workers 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/workers

復制粘貼以下內容,添加到到上面vim打開的workers文件中:

slave01slave02

將配置好的hadoop-3.4.1文件夾復制到從節點

scp -r /usr/local/hadoop-3.4.1/ root@master:/
scp -r /usr/local/hadoop-3.4.1/ root@slave01:/
scp -r /usr/local/hadoop-3.4.1/ root@slave02:/

如果輸入密碼錯誤:需要在從節點用 passwd root命令設置密碼

如果顯示無法連接錯誤:

?安裝 OpenSSH 服務端
apt update && apt install -y openssh-server
啟動 SSH 服務
service ssh start 
配置 SSH
vi /etc/ssh/sshd_config

添加:

PermitRootLogin yes     # 允許 root 登錄(僅測試環境)
PasswordAuthentication yes

重啟ssh服務:
?

service ssh restart 

結果如下:

配置Hadoop環境變量(在三臺節點分別操作此步驟)

vi ~/.bashrc

在.bashrc末尾添加如下內容:

##HADOOP
export HADOOP_HOME=/hadoop-3.4.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

使環境變量生效

source ~/.bashrc 

格式化Hadoop文件目錄(在master上執行)

說明:格式化后首次執行此命令,提示輸入y/n時,輸入y。

 hdfs namenode -format 

啟動Hadoop集群(在master上執行):

start-all.sh

查看Hadoop進程是否啟動,在master的終端執行jps命令,出現下圖效果

 jps

瀏覽器地址欄中輸入http://127.0.0.1:9870/,檢查namenode 和datanode 是否正常,如下圖所示:

在瀏覽器地址欄中輸入http://127.0.0.1:18088/,檢查Yarn是否正常,如下圖所示:

運行PI實例檢查集群是否成功,成功如下圖所示:

hadoop jar /hadoop-3.4.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar pi 10 10

其他細節事項:

首先打開VMware虛擬機,進入Ubuntu操作系統,進入終端:

然后在終端切換到root用戶:

設置 root 用戶的密碼:

sudo passwd root

輸入密碼后切換到root模式:

 su root

在Linux安裝軟件時需要用到yum命令,也可以是apt-get命令,以下介紹如何在ubtuntu中安裝配置yum




接下來是安裝build-essential程序包和yum:

apt-get install build-essential
apt-get install yum

在安裝yum后可能會遇到以下報錯:

E: Unable to locate package?yum

這時候需要手動下載yum:

  1. 備份sources.list文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

? ? ?2.更換源

sudo vim /etc/apt/sources.list

如果這個時候報錯無法發現vim

sudo apt-get update
sudo apt-get install vim

按照上述方式下載vim

? ? ?3.vim編輯

接下來會進入到sources.list的內容里進行編輯

  • 點擊insert進入編輯模式
  • 將下面網站文本復制粘貼并覆蓋,粘貼的命令是 shift + insert。記得選擇相應的Linux版本,此處為Ubuntu 20.04

在第一行添加鏡像源如下:

deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

? ? ? ?4.更新源

sudo apt-get update

? ? ? 5.安裝yum

sudo apt-get install yum

然后如果有以下提示:
The following packages have unmet dependencies:

按照提示逐一安裝依賴:

sudo apt-get install python-sqlitecachec
sudo apt-get install python-pycurl
sudo apt-get install python-urlgrabber

再次安裝yum:

sudo apt-get install yum 

安裝yum成功:

yum --version

最后將自己配置的repo文件用yum-config-manager進行yum軟件源添加:

 yum-config-manager --add-repo /etc/yum.repo.d/my.repo 

?通過使用yum repolist命令查看時,由于剛下載yum,顯示庫的軟件信息為0

這時需要配置yum源

參考這篇博主的文章:

# ubuntu 系統使用 yum命令報錯 There are no enabled repos.Run “yum repolist all“ to see the repos you have..._there are no enabled repos. run "yum repolist all"-CSDN博客

好了之后就可以安裝了

 yum upgradeyum install net-tools



設置root密碼

在docker容器內,初始化root密碼,用于下一步的登錄。

passwd root

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

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

相關文章

PID燈控算法

根據代碼分析&#xff0c;以下是針對PID算法和光敏傳感器系統的優化建議&#xff0c;分為算法優化、代碼結構優化和系統級優化三部分&#xff1a; 一、PID算法優化 1. 增量式PID 輸出平滑 // 修改PID計算函數 uint16_t PID_calculation_fun(void) {if(PID_Str_Val.Tdata >…

文件映射mmap與管道文件

在用戶態申請內存&#xff0c;內存內容和磁盤內容建立一一映射 讀寫內存等價于讀寫磁盤 支持隨機訪問 簡單來說&#xff0c;把磁盤里的數據與內存的用戶態建立一一映射關系&#xff0c;讓讀寫內存等價于讀寫磁盤&#xff0c;支持隨機訪問。 管道文件&#xff1a;進程間通信機…

在 Java 中調用 ChatGPT API 并實現流式接收(Server-Sent Events, SSE)

文章目錄 簡介OkHttp 流式獲取 GPT 響應通過 SSE 流式推送前端后端代碼消息實體接口接口實現數據推送給前端 前端代碼創建 sseClient.jsvue3代碼 優化后端代碼 簡介 用過 ChatGPT 的伙伴應該想過自己通過調用ChatGPT官網提供的接口來實現一個自己的問答機器人&#xff0c;但是…

硬盤分區格式之GPT(GUID Partition Table)筆記250407

硬盤分區格式之GPT&#xff08;GUID Partition Table&#xff09;筆記250407 GPT&#xff08;GUID Partition Table&#xff09;硬盤分區格式詳解 GPT&#xff08;GUID Partition Table&#xff09;是替代傳統 MBR 的現代分區方案&#xff0c;專為 UEFI&#xff08;統一可擴展固…

Vite環境下解決跨域問題

在 Vite 開發環境中&#xff0c;可以通過配置代理來解決跨域問題。以下是具體步驟&#xff1a; 在項目根目錄下找到 vite.config.js 文件&#xff1a;如果沒有&#xff0c;則需要創建一個。配置代理&#xff1a;在 vite.config.js 文件中&#xff0c;使用 server.proxy 選項來…

交換機與ARP

交換機與 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析協議&#xff09; 的關系主要體現在 局域網&#xff08;LAN&#xff09;內設備通信的地址解析與數據幀轉發 過程中。以下是二者的核心關聯&#xff1a; 1. 基本角色 交換機&#xff1a;工作在 數據鏈…

【Spring】小白速通AOP-日志記錄Demo

這篇文章我將通過一個最常用的AOP場景-方法調用日志記錄&#xff0c;帶你徹底理解AOP的使用。例子使用Spring BootSpring AOP實現。 如果對你有幫助可以點個贊和關注。謝謝大家的支持&#xff01;&#xff01; 一、Demo實操步驟&#xff1a; 1.首先添加Maven依賴 <!-- Sp…

git功能點管理

需求&#xff1a; 功能模塊1 已經完成&#xff0c;已經提交并推送到遠程&#xff0c;準備交給測試。功能模塊2 已經完成&#xff0c;但不提交給測試&#xff0c;繼續開發。功能模塊3 正在開發中。 管理流程&#xff1a; 創建并開發功能模塊1&#xff1a; git checkout main…

QGIS實戰系列(六):進階應用篇——Python 腳本自動化與三維可視化

歡迎來到“QGIS實戰系列”的第六期!在前幾期中,我們從基礎操作到插件應用逐步提升了 QGIS 技能。這一篇,我們將邁入進階領域,探索如何用 Python 腳本實現自動化,以及如何創建三維可視化效果,讓你的 GIS 項目更高效、更立體。 第一步:Python 腳本自動化 QGIS 內置了 Py…

高德地圖 3D 渲染-區域紋理圖添加

引入-初始化地圖&#xff08;關鍵代碼&#xff09; // 初始化頁面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申請的key值></script>// 添加地圖容器 <div idcontainer ></div>// 地圖初始化應該…

ffmpeg視頻轉碼相關

ffmpeg視頻轉碼相關 簡介參數 實戰舉栗子獲取視頻時長視頻轉碼mp4文件轉為hls m3u8 ts等文件圖片轉視頻抽取視頻第一幀獲取基本信息 轉碼日志輸出詳解轉碼耗時測試 簡介 FFmpeg 是領先的多媒體框架&#xff0c;能夠解碼、編碼、 轉碼、復用、解復用、流、過濾和播放 幾乎所有人…

【ISP】HDR技術中Sub-Pixel與DOL的對比分析

一、原理對比 Sub-Pixel&#xff08;空間域HDR&#xff09; ? 核心機制&#xff1a;在單個像素內集成一大一小兩個子像素&#xff08;如LPD和SPD&#xff09;&#xff0c;利用其物理特性差異&#xff08;靈敏度、滿阱容量&#xff09;同時捕捉不同動態范圍的信號。 ? 大像素&…

Vulnhub-IMF靶機

本篇文章旨在為網絡安全滲透測試靶機教學。通過閱讀本文&#xff0c;讀者將能夠對滲透Vulnhub系列IMF靶機有一定的了解 一、信息收集階段 靶機下載地址&#xff1a;https://www.vulnhub.com/entry/imf-1,162/ 因為靶機為本地部署虛擬機網段&#xff0c;查看dhcp地址池設置。得…

Linux內核中TCP協議棧的實現:tcp_close函數的深度剖析

引言 TCP(傳輸控制協議)作為互聯網協議族中的核心協議之一,負責在不可靠的網絡層之上提供可靠的、面向連接的字節流服務。Linux內核中的TCP協議棧實現了TCP協議的全部功能,包括連接建立、數據傳輸、流量控制、擁塞控制以及連接關閉等。本文將深入分析Linux內核中tcp_close…

java+postgresql+swagger-多表關聯insert操作(七)

入參為json&#xff0c;然后根據需要對多張表進行操作&#xff1a; 入參格式&#xff1a; [{"custstoreName":"swagger-測試經銷商01","customerName":"swagger-測試客戶01","propertyNo":"swaggertest01",&quo…

R語言——繪制生命曲線圖(細胞因子IL5)

繪制生命曲線圖&#xff08;根據細胞因子&#xff09; 說明流程代碼加載包讀取Excel文件清理數據重命名列名處理IL-5中的"<"符號 - 替換為檢測下限的一半首先找出所有包含"<"的值檢查缺失移除缺失值根據IL-5中位數將患者分為高低兩組 創建生存對象擬…

Python----計算機視覺處理(Opencv:道路檢測完整版:透視變換,提取車道線,車道線擬合,車道線顯示,)

Python----計算機視覺處理&#xff08;Opencv:道路檢測之道路透視變換) Python----計算機視覺處理&#xff08;Opencv:道路檢測之提取車道線&#xff09; Python----計算機視覺處理&#xff08;Opencv:道路檢測之車道線擬合&#xff09; Python----計算機視覺處理&#xff0…

【Oracle篇】跨字符集遷移:基于數據泵的ZHS16GBK轉AL32UTF8全流程遷移

&#x1f4ab;《博主主頁》&#xff1a;奈斯DB-CSDN博客 &#x1f525;《擅長領域》&#xff1a;擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對SQLserver、NoSQL(MongoDB)有了解 &#x1f496;如果覺得文章對你有所幫…

【C++算法】50.分治_歸并_翻轉對

文章目錄 題目鏈接&#xff1a;題目描述&#xff1a;解法C 算法代碼&#xff1a;圖解 題目鏈接&#xff1a; 493. 翻轉對 題目描述&#xff1a; 解法 分治 策略一&#xff1a;計算當前元素cur1后面&#xff0c;有多少元素的兩倍比我cur1小&#xff08;降序&#xff09; 利用單…

深入講解:智能合約中的讀寫方法

前言 在探秘區塊鏈開發:智能合約在 DApp 中的地位及與傳統開發差異一文中我提到對于智能合約中所有的寫入其實都算是交易。而在一個完整的智能合約代碼中最大的兩個組成部分就是讀取和寫入。 本文將為你深入探討該兩者方法之間的區別。 寫方法 寫方法其實就是對區塊鏈這一…