Hadoop完全分散式集群搭建

来源:https://www.cnblogs.com/heihaozi/archive/2019/12/16/12020688.html
-Advertisement-
Play Games

完全分散式集群模式,是真正的生產環境,這裡詳細講解的就是如何搭建一個Hadoop完全分散式集群。 ...


Hadoop的運行模式

Hadoop一般有三種運行模式,分別是:

  • 單機模式(Standalone Mode),預設情況下,Hadoop即處於該模式,使用本地文件系統,而不是分散式文件系統。,用於開發和調試。
  • 偽分散式模式(Pseudo Distrubuted Mode),使用的是分散式文件系統,守護進程運行在本機機器,模擬一個小規模的集群,在一臺主機模擬多主機,適合模擬集群學習。
  • 完全分散式集群模式(Full Distributed Mode),Hadoop的守護進程運行在由多台主機搭建的集群上,是真正的生產環境。

這裡介紹的就是如何搭建一個Hadoop完全分散式集群。

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

安裝環境介紹

準備了四個伺服器,IP為192.168.0.236、192.168.0.237、192.168.0.238、192.168.0.239,其中192.168.0.236作為主節點,其他3個作為從節點。具體版本信息如下:

  • CentOS 7.4
  • JDK 8
  • Hadoop 2.10.0

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

準備安裝環境

設置主機名

在各個伺服器上修改對應的主機名:

#在192.168.0.236上執行:
hostnamectl set-hostname onemore-hadoop-master

#在192.168.0.237上執行:
hostnamectl set-hostname onemore-hadoop-slave1

#在192.168.0.238上執行:
hostnamectl set-hostname onemore-hadoop-slave2

#在192.168.0.239上執行:
hostnamectl set-hostname onemore-hadoop-slave3

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

關閉SELINUX

編輯/etc/selinux/config文件:

vi /etc/selinux/config

SELINUX=enforcing

修改為:

SELINUX=disabled

重啟伺服器

reboot

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

設置hosts

cat >> /etc/hosts <<EOF

192.168.0.236 onemore-hadoop-master
192.168.0.237 onemore-hadoop-slave1
192.168.0.238 onemore-hadoop-slave2
192.168.0.239 onemore-hadoop-slave3
EOF

關閉防火牆

停止防火牆

systemctl stop firewalld.service

禁止防火牆開機啟動

systemctl disable firewalld.service

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

設置免密登錄

分散式集群搭建需要主節點能夠免密登錄至各個從節點上。因此,需要在主節點上生成公鑰,把將主節點的公鑰在從節點中加入授權。

  1. 在192.168.0.236上生成公鑰。
ssh-keygen -t rsa
  1. 在192.168.0.236上,把公鑰發送到各個從節點
scp ~/.ssh/id_rsa.pub 192.168.0.237:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.238:~/.ssh
scp ~/.ssh/id_rsa.pub 192.168.0.239:~/.ssh

這時還不是免密登錄登錄的,需要輸入用戶名和密碼。

  1. 將公鑰追加到各個從節點的授權里。

在每個從節點執行一下命令:

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

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

安裝JDK

參見之前的《詳解在Linux系統中安裝JDK》,這裡就不再贅述了。

Hadoop環境配置

主節點配置

下載Hadoop

從北京理工大學的鏡像上下載Hadoop:

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

創建文件夾

mkdir /usr/local/hadoop

解壓

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

配置環境變數

追加Hadoop的環境變數到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin 
EOF

使環境變數生效

source /etc/profile

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

修改配置文件

修改core-site.xml配置文件

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

修改其內容為:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://onemore-hadoop-master:9000</value>
    </property>
</configuration>

修改hdfs-site.xml配置文件

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

修改其內容為:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>
    </property>
</configuration>

複製mapred-site.xml.template為mapred-site.xml

cp /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml

再修改mapred-site.xml配置文件

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

修改其內容為:

<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://onemore-hadoop-master:9001</value>
  </property>
</configuration>

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

修改yarn-site.xml配置文件

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

修改其內容為:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>onemore-hadoop-master</value>
    </property>
</configuration>

新建masters配置文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters

新增內容為:

onemore-hadoop-master

配置slaves文件

vi /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

修改其內容為:

onemore-hadoop-slave1
onemore-hadoop-slave2
onemore-hadoop-slave3

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

從節點配置

下麵以onemore-hadoop-slave1從節點為例進行敘述,您需參照以下步驟完成onemore-hadoop-slave2和onemore-hadoop-slave3從節點的配置。

下載Hadoop

還是從北京理工大學的鏡像上下載Hadoop(如果下載速度慢,可以在主節點上發送到從節點):

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz

創建文件夾

mkdir /usr/local/hadoop

解壓

tar -xzvf  hadoop-2.10.0.tar.gz -C /usr/local/hadoop

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

配置環境變數

追加Hadoop的環境變數到/etc/profile文件中

cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export PATH=\$PATH:\$HADOOP_HOME/bin 
EOF

使環境變數生效

source /etc/profile

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

修改配置文件

刪除slaves文件

rm -rfv /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/slaves

在主節點上把5個配置文件發送到從節點上

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/core-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hdfs-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/mapred-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/yarn-site.xml onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/masters onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

啟動Hadoop集群

格式化namenode

第一次啟動服務前需要執行詞操作,以後就不需要執行了。

hadoop namenode -format

啟動hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

訪問http://onemore-hadoop-master:50070/,就可以查看Hadoop集群的相關信息了,如圖:

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

常用命令

查看Hadoop集群的狀態

hadoop dfsadmin -report

重啟Hadoop

/usr/local/hadoop/hadoop-2.10.0/sbin/stop-all.sh
/usr/local/hadoop/hadoop-2.10.0/sbin/start-all.sh

啟動dfs服務

/usr/local/hadoop/hadoop-2.10.0/sbin/start-dfs.sh

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。

常見錯誤

Error: JAVA_HOME is not set and could not be found.

這個錯誤大概意思是沒有找到JDK的環境變數,可以修改hadoop-env.sh。

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

增加JDK的環境變數,比如:

export JAVA_HOME=/usr/local/java/jdk1.8.0_231

因為是在主節點上修改的,還需要發送到各個從節點:

scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave1:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave2:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/
scp -r /usr/local/hadoop/hadoop-2.10.0/etc/hadoop/hadoop-env.sh onemore-hadoop-slave3:/usr/local/hadoop/hadoop-2.10.0/etc/hadoop/

歡迎關註微信公眾號:萬貓學社,每周一分享Java技術乾貨。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,I/O重定向 重定向正常輸出 \ :覆蓋以存在文件的內容,很危險的操作 \ :如果文件已經存在,則是在原內容的最後追加。 可以禁止 的覆蓋行為,使用 。只在當前會話有效。 恢復覆蓋行為。 \ |: 已經禁止了覆蓋,但是確認就是要覆蓋,可以使用。 重定向錯誤輸出 2 :覆蓋以存在文件的內容,很危險 ...
  • 關係型資料庫: 1、定義: 創建在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據 2、關係模型常用概念: (1)關係:可以理解為一張二維表,每個關係都具有一個關係名,就是通常說的表名 (2)元組:可以理解為二維表中的一行,在資料庫中經常被稱為記錄 (3)屬性:可以理解為二 ...
  • 總結一下平時用到最多的sql語句 1.特殊日期 --今天凌晨SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)--明天凌晨SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE())+1,0)--當周周一(每周從周日開始)SELECT ...
  • 數據挖掘第三篇 文本分類 文本分類總體上包括8個步驟。數據探索分析 》數據抽取 》文本預處理 》分詞 》去除停用詞 》文本向量化表示 》分類器 》模型評估.重要python庫包括numpy(數組),pandas(用於處理結構化數據),matplotlib(繪製詞雲,便於直觀表示),sklearn(提 ...
  • MySQL的安裝 一、前期準備 獲取MySQL解壓版安裝包(本文使用的是 【mysql-5.7.28-winx64.zip】版本) 獲取方式: 通過官網下載,官方下載地址:“https://dev.mysql.com/downloads/mysql/” 。(註意:需要oracle賬號登錄後方可下載) ...
  • low等級 代碼如下: 1 <?php 2 3 if( isset( $_REQUEST[ 'Submit' ] ) ) { 4 // Get input 5 $id = $_REQUEST[ 'id' ]; 6 7 // Check database 8 $query = "SELECT firs ...
  • 目錄 1、認識關係型資料庫 1.1.1 什麼是關係型資料庫 1.1.2 實體關係模型 1.1.3 關係型資料庫管理系統RDBMS 1.1.4 使用SQL語言管理資料庫 1、認識關係型資料庫 資料庫簡而言之就是數據的集合,它是由文件系統存儲數據發展起來的,資料庫系統解決了多人資料庫讀取和寫入的併發性問 ...
  • 1、需求,手動給會員新增京幣,並且添加分配日誌,返回修改是否成功 CREATE DEFINER=`jszapi`@`%` PROCEDURE `p_allot_user_coin`(IN `_member_id` int,IN `_coin` int,OUT `_res` tinyint) BEGI ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...