用三台虛擬機搭建Hadoop全分佈集群

来源:https://www.cnblogs.com/qyws/archive/2019/07/04/11134191.html
-Advertisement-
Play Games

用三台虛擬機搭建Hadoop全分佈集群 所有的軟體都裝在/home/software下 虛擬機系統:centos6.5 jdk版本:1.8.0_181 zookeeper版本:3.4.7 hadoop版本:2.7.1 1.安裝jdk 準備好免安裝壓縮包放在/home/software下 配置環境變數 ...


用三台虛擬機搭建Hadoop全分佈集群

所有的軟體都裝在/home/software下

虛擬機系統:centos6.5

jdk版本:1.8.0_181

zookeeper版本:3.4.7

hadoop版本:2.7.1

 

1.安裝jdk

準備好免安裝壓縮包放在/home/software下

cd /home/software
tar -xvf jdk-8u181-linux-x64.tar.gz

 

配置環境變數

vim /etc/profile

 

末尾添加

export JAVA_HOME=/home/software/jdk1.8.0_181
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile

 

檢查是否配置成功,查看jdk版本

java –version

 

2.關閉防火牆

service iptables stop
chkconfig iptables off

 

3.配置主機名

vim /etc/sysconfig/network
HOSTNAME=qyws

三個節點主機名分別設置為qyws,qyws2,qyws3

source /etc/sysconfig/network

 

4.改hosts文件

vim /etc/hosts
192.168.38.133  qyws
192.168.38.134  qyws2
192.168.38.135  qyws3

 

5.重啟

reboot

 

6.配置免密登陸

ssh-keygen
ssh-copy-id root@qyws
ssh-copy-id root@qyws2
ssh-copy-id root@qyws3

 

7.解壓zookeeper壓縮包

tar –xf zookeeper-3.4.7.tar.gz

 

8.搭建zookeeper集群

cd /home/software/zookeeper-3.4.7/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

 

14 行

dataDir=/home/software/zookeeper-3.4.7/tmp

 

末尾追加

server.1=192.168.38.133:2888:3888
server.2=192.168.38.134:2888:3888
server.3=192.168.38.135:2888:3888

 

9.將配置好的zookeeper拷貝到另兩個節點

scp -r zookeeper-3.4.7 root@qyws2:/home/software/
scp -r zookeeper-3.4.7 root@qyws3:/home/software/

 

10.進入zookeeper目錄下創建tmp目錄,新建myid文件

cd /home/software/zookeeper-3.4.7
mkdir tmp
cd tmp
vim myid

 

三個節點myid分別設置為1,2,3

11.解壓hadoop壓縮包

tar -xvf hadoop-2.7.1_64bit.tar.gz

 

12.編輯hadoop-env.sh

cd /home/software/hadoop-2.7.1/etc/hadoop
vim hadoop-env.sh

 

25行

export JAVA_HOME=/home/software/jdk1.8.0_181

 

33行

export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
source hadoop-env.sh

 

13.編輯core-site.xml

    <!--指定hdfs的nameservice,為整個集群起一個別名-->
    <property>
        <name>fs.defaultFS</name>                
        <value>hdfs://ns</value>
    </property>
    <!--指定Hadoop數據臨時存放目錄-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/software/hadoop-2.7.1/tmp</value>
    </property> 
    <!--指定zookeeper的存放地址-->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>qyws:2181,qyws2:2181,qyws3:2181</value>
    </property> 

 

14.編輯hdfs-site.xml

    <!--執行hdfs的nameservice為ns,註意要和core-site.xml中的名稱保持一致-->
    <property>
        <name>dfs.nameservices</name>
        <value>ns</value>
    </property>
    <!--ns集群下有兩個namenode,分別為nn1, nn2-->
    <property>
        <name>dfs.ha.namenodes.ns</name>
        <value>nn1,nn2</value>
    </property>
    <!--nn1的RPC通信-->
    <property>
        <name>dfs.namenode.rpc-address.ns.nn1</name>
        <value>qyws:9000</value>
    </property>
    <!--nn1的http通信-->
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>qyws:50070</value>
    </property>
    <!-- nn2的RPC通信地址 -->
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>qyws2:9000</value>
    </property>
    <!-- nn2的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>qyws2:50070</value>
    </property>
    <!--指定namenode的元數據在JournalNode上存放的位置,這樣,namenode2可以從journalnode集群里的指定位置上獲取信息,達到熱備效果-->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://qyws:8485;qyws2:8485;qyws3:8485/ns</value>
    </property>
    <!-- 指定JournalNode在本地磁碟存放數據的位置 -->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/software/hadoop-2.7.1/tmp/journal</value>
    </property>
    <!-- 開啟NameNode故障時自動切換 -->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!-- 配置失敗自動切換實現方式 -->
    <property>
        <name>dfs.client.failover.proxy.provider.ns</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 配置隔離機制 -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!-- 使用隔離機制時需要ssh免登陸 -->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <!--配置namenode存放元數據的目錄,可以不配置,如果不配置則預設放到hadoop.tmp.dir下-->
    <property>    
        <name>dfs.namenode.name.dir</name>    
        <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>    
    </property>    
    <!--配置datanode存放元數據的目錄,可以不配置,如果不配置則預設放到hadoop.tmp.dir下-->
    <property>    
        <name>dfs.datanode.data.dir</name>    
        <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>    
    </property>
    <!--配置複本數量-->    
    <property>    
        <name>dfs.replication</name>    
        <value>3</value>    
    </property>   
    <!--設置用戶的操作許可權,false表示關閉許可權驗證,任何用戶都可以操作-->                                                                    
    <property>    
        <name>dfs.permissions</name>    
        <value>false</value>    
    </property>  

 

15.編輯mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
    <property>    
        <name>mapreduce.framework.name</name>    
        <value>yarn</value>    
    </property>

 

16.編輯yarn-site.xml

    <!--配置yarn的高可用-->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!--指定兩個resourcemaneger的名稱-->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <!--配置rm1的主機-->
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>qyws</value>
    </property>
    <!--配置rm2的主機-->
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>qyws3</value>
    </property>
    <!--開啟yarn恢復機制-->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <!--執行rm恢復機制實現類-->
    <property>
        <name>yarn.resourcemanager.store.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <!--配置zookeeper的地址-->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>qyws:2181,qyws2:2181,qyws3:2181</value>
    </property>
    <!--執行yarn集群的別名-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>ns-yarn</value>
    </property>
    <!-- 指定nodemanager啟動時載入server的方式為shuffle server -->
    <property>    
        <name>yarn.nodemanager.aux-services</name>    
        <value>mapreduce_shuffle</value>    
    </property>  
    <!-- 指定resourcemanager地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>qyws3</value>
    </property>

 

17.編輯slaves

vim /home/software/hadoop-2.7.1/etc/hadoop/slaves
qyws
qyws2
qyws3

 

18.把配置好的hadoop拷貝到其他節點

scp -r hadoop-2.7.1 root@qyws2:/home/software/
scp -r hadoop-2.7.1 root@qyws3:/home/software/

 

19.配置環境變數

vim /etc/profile

 

末尾添加

export HADOOP_HOME=/home/software/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

 

20.三個節點啟動zookeeper

cd /home/software/zookeeper-3.4.7/bin
sh zkServer.sh start

查看zookeeper狀態

sh zkServer.sh status

 

 

 

21.格式化zookeeper(在第一個節點操作即可):

hdfs zkfc -formatZK

 

22.在每個節點啟動JournalNode:

hadoop-daemon.sh start journalnode

 

23.在第一個節點上格式化NameNode:

hadoop namenode -format

 

24.在第一個節點上啟動NameNode:

hadoop-daemon.sh start namenode

 

25.在第二個節點上格式化NameNode:

hdfs namenode -bootstrapStandby

 

26.在第二個節點上啟動NameNode:

hadoop-daemon.sh  start namenode

 

27.在三個節點上啟動DataNode:

hadoop-daemon.sh start datanode

 

28.在第一個節點和第二個節點上啟動zkfc(FailoverController):

hadoop-daemon.sh start zkfc

 

29.在第一個節點上啟動Yarn:

start-yarn.sh

 

30.在第三個節點上啟動ResourceManager:

yarn-daemon.sh start resourcemanager

 

31.查看運行的服務

32.查看第一個節點namenode

瀏覽器輸入http://192.168.38.133:50070

查看第二個節點namenode(主備)

瀏覽器輸入http://192.168.38.134:50070

33.訪問管理頁面http://192.168.38.133:8088


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

-Advertisement-
Play Games
更多相關文章
  • 資料庫之MySQL的基本使用,內容包括 資料庫簡介,MySQL安裝,數據完整性,命令行腳本。其中,資料庫簡介包括 資料庫,RDBMS,RDBMS和資料庫的關係,SQL,MySQL 簡介;資料庫安裝包括 伺服器端安裝和客戶端安裝;數據完整性包括 數據類型,約束;命令行腳本包括 資料庫的操作,數據表的操... ...
  • 一.什麼是kafkakafka的目標是實現一個為處理實時數據提供一個統一、高吞吐、低延遲的平臺。是分散式發佈-訂閱消息系統,是一個分散式的,可劃分的,冗餘備份的持久性的日誌服務。Kafka使用場景:1 日誌收集:一個公司可以用Kafka可以收集各種服務的log,通過kafka以統一介面服務的方式開放 ...
  • 機器學習主要由監督學習、無監督學習。 監督學習主要用於解決分類和回歸問題。 無監督學習主要用於解決聚類問題。 在機器學習過程中主要有以下幾個步驟: 數據預處理 特征工程 數據建模 結果評估 首先介紹數據預處理,主要包括數據清洗、數據採樣以及數據集的拆分三個部分。 在數據清洗過程中主要對各種臟數據進行 ...
  • 字元串型 1、Char 定長字元:指定長度之後,系統一定會分配指定的空間用於存儲數據 基本語法: char(L),L代表字元數(中文與英文字母一樣),L長度為0到255 2、Varchar 變長字元:指定長度之後,系統會根據實際存儲的數據來計算長度,分配合適的長度(數據沒有超出長度) 基本語法: V ...
  • SQL> --當我們對empnew執行刪除操作之後,它就會出現一個提示信息,提示:這是刪除操作!SQL> CREATE TRIGGER first_trigger 2 AFTER DELETE 3 ON empnew 4 BEGIN 5 DBMS_OUTPUT.put_line('這是刪除的操作!' ...
  • 我們知道可視化是監控的一個重要環節,所以往往我們這個環節花費大量的時間和精力。可是如果可以借鑒前輩的經驗和成果,可以事半功倍。 下麵我們就以Grafana的Dashboards界面的Import功能。測試驗證的基礎是已成功安裝 Telegraf、InfluxDB、Grafana,並且Telegraf ...
  • 主從同步,從庫報錯代碼:1141 ,錯誤信息如下: 解決方法: 根據上述的主從同步信息, 在從庫上使用mysqlbinlog將日誌文件解析出來,命令如下: 在解析出來的文件中找到對應的POS點: 212230586 發現在執行 revoke語句 刪除用戶許可權。 查看從庫上的用戶庫,發現沒有用戶 f_ ...
  • 以用戶登錄日誌表為例,取用戶最近登錄的設備 1 SET NAMES utf8mb4; 2 SET FOREIGN_KEY_CHECKS = 0; 3 4 -- 5 -- Table structure for t_login_log 6 -- 7 DROP TABLE IF EXISTS `t_lo ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...