第3章 Hadoop 2.x分散式集群搭建

来源:https://www.cnblogs.com/dreamboy/archive/2018/07/10/9287797.html
-Advertisement-
Play Games

[TOC] 3.1 配置各節點SSH無密鑰登錄 【操作目的】 Hadoop的進程間通信使用SSH(Secure Shell)方式。SSH是一種通信加密協議,使用非對稱加密方式,可以避免網路竊聽。為了使Hadoop各節點之間能夠無密碼相互訪問,需要配置各節點的SSH無秘鑰登錄。 【登錄原理】 SSH無 ...


目錄

3.1 配置各節點SSH無密鑰登錄

【操作目的】
Hadoop的進程間通信使用SSH(Secure Shell)方式。SSH是一種通信加密協議,使用非對稱加密方式,可以避免網路竊聽。為了使Hadoop各節點之間能夠無密碼相互訪問,需要配置各節點的SSH無秘鑰登錄。
【登錄原理】
SSH無密鑰登錄的原理如下圖:

【操作步驟】
方法一

1.將各節點的秘鑰加入到同一個授權文件中

無秘鑰登錄的原理是,登錄節點的秘鑰信息是否存在於被登錄節點的授權文件中,如果存在,則允許登錄。為了所有節點之間 能夠相互登錄,首先我們需要將各個節點的秘鑰加入到同一個授權文件中,步驟如下:
(1)在centos01節點中,生成秘鑰文件,並將秘鑰信息加入到授權文件中。所需命令如下:

cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa              # 生成秘鑰文件,會有提示,都按回車就可以
cat ./id_rsa.pub >> ./authorized_keys  # 將秘鑰內容加入到授權文件中

(2)在centos02節點中,生成秘鑰文件,並將秘鑰文件遠程拷貝到centos01節點的相同目錄,且重命名為id_rsa.pub.centos02。相關命令如下:

cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa              # 生成秘鑰文件,會有提示,都按回車就可以
scp ~/.ssh/id_rsa.pub hadoop@centos01:~/.ssh/id_rsa.pub.centos02 #遠程拷貝

(3)在centos03節點中,執行與centos02相同的操作(生成秘鑰文件,並將秘鑰文件遠程拷貝到centos01節點的相同目錄,且重命名為id_rsa.pub.centos03)。相關命令如下:

cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa              # 生成秘鑰文件,會有提示,都按回車就可以
scp ~/.ssh/id_rsa.pub hadoop@centos01:~/.ssh/id_rsa.pub.centos03 #遠程拷貝

(4)回到centos01節點,將centos02和centos03節點的秘鑰文件信息都加入到授權文件中。相關命令如下:

cat ./id_rsa.pub.centos02 >> ./authorized_keys  #將centos02的秘鑰加入到授權文件中
cat ./id_rsa.pub.centos03 >> ./authorized_keys  #將centos03的秘鑰加入到授權文件中

2.拷貝授權文件到各個節點

將centos01節點中的授權文件遠程拷貝到其它節點,命令如下:

scp ~/.ssh/authorized_keys hadoop@centos02:~/.ssh/
scp ~/.ssh/authorized_keys hadoop@centos03:~/.ssh/

3.測試無秘鑰登錄

接下來可以測試從centos01無秘鑰登錄到centos02,命令如下:

ssh centos02

如果登錄失敗,可能的原因是授權文件authorized_keys許可權過高,分別在每個節點上執行如下命令,更改文件許可權:

chmod 700 ~/.ssh  #只有擁有者有讀寫許可權。
chmod 600 ~/.ssh/authorized_keys  #只有擁有者有讀、寫、執行許可權。

到此,各節點的SSH無秘鑰登錄就配置完成了。

方法二
ssh-copy-id命令可以把本地主機的公鑰複製並追加到遠程主機的authorized_keys文件中,ssh-copy-id命令也會給遠程主機的用戶主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設置合適的許可權。
(1)分別在三個節點中執行以下命令,生成秘鑰文件:

cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
ssh-keygen -t rsa              # 生成秘鑰文件,會有提示,都按回車就可以

(2)分別在三個節點中執行以下命令,將公鑰信息拷貝並追加到對方節點的授權文件authorized_keys中:

ssh-copy-id centos01
ssh-copy-id centos02
ssh-copy-id centos03

最後測試SSH無秘鑰登錄。

3.2 搭建Hadoop集群

【操作目的】
本例的搭建思路是,在節點centos01中安裝Hadoop並修改配置文件,然後將配置好的Hadoop安裝文件遠程拷貝到集群中其它節點。各節點的角色分配如下表:

節點 角色
centos01 NameNode SecondaryNameNode DataNode ResourceManager NodeManager
centos02 DataNode NodeManager
centos03 DataNode NodeManager

【操作步驟】
Hadoop集群搭建的操作步驟如下:

1.上傳Hadoop並解壓

在centos01節點中,將Hadoop安裝文件hadoop-2.7.1.tar.gz上傳到/opt/softwares/目錄,進入該目錄,解壓hadoop到/opt/modules/,命令如下:

[hadoop@centos01 ~]$ cd /opt/softwares/
[hadoop@centos01 softwares]$ tar -zxf hadoop-2.7.1.tar.gz -C /opt/modules/

2.配置Hadoop環境變數

Hadoop所有的配置文件都存在於安裝目錄下的/etc/hadoop中,修改如下配置文件:

hadoop-env.sh
mapred-env.sh
yarn-env.sh

三個文件分別加入JAVA_HOME環境變數,如下:

export JAVA_HOME=/opt/modules/jdk1.8.0_101

3.配置HDFS

(1)修改配置文件core-site.xml,加入以下內容:

<configuration>
   <property>
     <name>fs.defaultFS</name>
     <value>hdfs://centos01:9000</value>
   </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/modules/hadoop-2.7.1/tmp</value>
     </property>
</configuration>

參數解析:
fs.defaultFS:HDFS的預設訪問路徑。
hadoop.tmp.dir:Hadoop臨時文件的存放目錄,可自定義。
(2)修改配置文件hdfs-site.xml,加入以下內容:

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>2</value>
    </property>
    <property><!--不檢查用戶許可權-->
      <name>dfs.permissions.enabled</name>
      <value>false</value>
    </property>
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/opt/modules/hadoop-2.7.1/tmp/dfs/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/opt/modules/hadoop-2.7.1/tmp/dfs/data</value>
    </property>
</configuration>

參數解析:
dfs.replication:文件在HDFS系統中的副本數。
dfs.namenode.name.dir:HDFS名稱節點數據在本地文件系統的存放位置。
dfs.datanode.data.dir:HDFS數據節點數據在本地文件系統的存放位置。
(3)修改slaves文件,配置DataNode節點。slaves文件原本無任何內容,需要將所有DataNode節點的主機名都添加進去,每個主機名占一整行。本例中,DataNode為三個節點,因此slaves文件的內容如下:

centos01
centos02
centos03

4.配置YARN

(1)重命名mapred-site.xml.template文件為mapred-site.xml,修改mapred-site.xml文件,添加以下內容,指定使用yarn來運行mapreduce任務。

<configuration>  
    <property>  
       <name>mapreduce.framework.name</name>  
       <value>yarn</value> 
    </property> 
</configuration>

(2)修改yarn-site.xml文件,添加以下內容:

<configuration>  
    <property>  
       <name>yarn.nodemanager.aux-services</name>  
       <value>mapreduce_shuffle</value>  
    </property>     
</configuration>

參數解析:
yarn.nodemanager.aux-services :NodeManager上運行的附屬服務。需配置成mapreduce_shuffle才可運行MapReduce程式。

5.拷貝Hadoop安裝文件到其它主機

在centos01節點上,將配置好的整個Hadoop安裝目錄,拷貝到其它節點(centos02與centos03)。命令如下:

[hadoop@centos01 modules]$ scp -r hadoop-2.7.1/ hadoop@centos02:/opt/modules/
[hadoop@centos01 modules]$ scp -r hadoop-2.7.1/ hadoop@centos03:/opt/modules/

6.啟動Hadoop

啟動Hadoop之前,需要先格式化NameNode。格式化NameNode可以初始化HDFS文件系統的一些目錄和文件,在centos01節點上執行以下命令,進行格式化操作:

hadoop namenode -format

格式化成功後,在centos01節點上執行以下命令,啟動Hadoop集群:

start-all.sh

也可以執行start-dfs.sh和start-yarn.sh分別啟動HDFS和YARN集群。

7.查看各節點啟動進程

集群啟動成功後,分別在各個節點上執行jps命令,查看啟動的Java進程。可以看到,各節點的Java進程如下:
centos01節點的進程:

[hadoop@centos01 hadoop-2.7.1]$ jps
13524 SecondaryNameNode
13813 NodeManager
13351 DataNode
13208 NameNode
13688 ResourceManager
14091 Jps

centos02節點的進程:

[hadoop@centos02 ~]$ jps
7585 NodeManager
7477 DataNode
7789 Jps

centos03節點的進程:

[hadoop@centos03 ~]$ jps
8308 Jps
8104 NodeManager
7996 DataNode

8.測試HDFS

在centos01節點的HDFS根目錄創建文件夾input,並將Hadoop安裝目錄下的文件README.txt上傳到新建的input文件夾中。命令如下:

hdfs dfs -mkdir /input
hdfs dfs -put /opt/modules/hadoop-2.7.1/README.txt /input

訪問網址:http://192.168.170.133:50070 可以查看HDFS的NameNode信息,界面如下:

9.測試MapReduce

在centos01節點中執行以下命令,運行Hadoop自帶的MapReduce單詞計數程式,統計/input文件夾中的所有文件的單詞數量:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar /input /output

統計完成後,執行以下命令,查看MapReduce執行結果:

hdfs dfs -cat /output/*

如果以上測試沒有問題,則Hadoop集群搭建成功。

原創文章,轉載請註明出處!!


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

-Advertisement-
Play Games
更多相關文章
  • 前言 一提到跟蹤倆字,很多人想到警匪片中的場景,同樣在我們的SQL Server資料庫中“跟蹤”也是無處不在的,如果我們利用好了跟蹤技巧,就可以針對某些特定的場景做定向分析,找出充足的證據來破案。 簡單的舉幾個應用場景: 線上生產庫為何突然宕機?數百張數據表為何不翼而飛?剛打好補丁的系統為何屢遭黑手 ...
  • [TOC] 本章通過幾個案例詳細講解MapReduce程式的編寫與運行。 5.1 案例分析:單詞計數 假如有這樣一個例子,需要統計過去10年電腦論文中出現次數最多的幾個單詞,以分析當前的熱點研究議題是什麼。那麼,在將論文樣本收集完畢之後,接下來應該怎樣做呢? 這一經典的單詞計數案例可以採用MapR ...
  • 介紹: 作為一名開發人員都會知道我們做的項目都要用到資料庫,資料庫都需要賬號和密碼,然而問題來了,做的東西多了那些沒用的賬號和密碼還在哪裡糾纏著我們。所有我們不能忍了刪除掉他。 網上很多都是2008的是刪除方案,知道我看到了這篇:http://stackoverflow.com/questions/ ...
  • 給mysql的root用戶設置密碼 1.剛安裝好的mysql是沒有設置密碼的 2.設置密碼 ******************************************************************************************************** ...
  • 在Linux上登錄MySQL時出現如下提示,如下圖: 通過查找資料瞭解到: MySQL有兩種連接方式: (1)TCP/IP (2)socket 對mysql.sock來說,其作用是程式與mysqlserver處於同一臺機器,發起本地連接時可用。 例如你無須定義連接host的具體IP地址,只要為空或l ...
  • MYSQL介紹 MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System ...
  • 1 資料庫事務處理 一個資料庫事務通常包含對資料庫進行讀或寫的一個操作序列 . 當一個事務被提交給了DBMS(資料庫管理系統),則DBMS需要確保該事務中的所有操作都成功完成且其結果被永久保存在資料庫中,如果事務中有的操作沒有成功完成,則事務中的所有操作都需要被回滾. 1 為資料庫提供了一個從失敗恢 ...
  • 1.MySQL具有以下優勢: (1)MySQL是一個關係資料庫管理系統。 (2)MySQL是開源的。 (3)MySQL伺服器是一個快速的、可靠的和易於使用的資料庫伺服器。 (4)MySQL伺服器工作在客戶/伺服器或嵌入系統中。 (5)有大量的MySQL軟體可以使用。 2.sqlserver 優點: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...