Linux系統centos7從無到有搭建虛擬機器叢集-易看易學,簡潔明瞭。

小米的南瓜洲發表於2020-12-13

Linux-centos7虛擬機器叢集搭建

====================================================

ψ()ψ文末有彩蛋——各位長得好看的客官一定get到!!!

====================================================

操作過程常用命令:

檢視hadoop編譯工具是否成功安裝:

java -version
mvn -version
ant -version
cmake --version
protoc --version

配置環境變數:

vim /etc/profile.d/my_env.sh
vim /etc/profile

讓檔案生效:

source /etc/profile
source /etc/profile.d/my_env.sh

檢視檔案大小:du -sh 檔名

操作過程常遇問題:

  1. dfs.sh和yarn.sh關閉不了?

    在自己使用者下邊關閉dfs.sh和yarn.sh=======root下邊是關不了的!

  2. hdfs啟動後,各虛擬機器的程式有缺失?

    • 檢查配置檔案中的虛擬機器名稱是否匹配好。
    • 所有虛擬機器的免密登入是否配置好
  3. hadoop編譯報錯?

    • 網路不穩定,繼續重新編譯;
    • 記憶體配置太大,記憶體溢位;
    • 所有需要的編譯的包版本衝突,儘量使用本文的編譯包版本。
    • 下載比較慢,可以拷貝別人編譯好的jar包檔案,檔案路徑:/root/.m2/repository/
      注:“.m2是隱藏檔案”用"ls -a"命令檢視。

===========================================================

進入正題

(✪ω✪)哈哈~本文前提條件:自己先在linux上建立一個虛擬機器。(網上很多的,你們這些聰明的小腦袋,肯定是小case)

開始叢集搭建

有xshell可以連線上,沒有的話直接開啟虛擬機器後端:桌面右擊—開啟終端。

1.檢視是否可以連線網路:ping www.baidu.com

2.修改IP地址:vim /etc/sysconfig/network-scripts/ifcfg-ens33

(這裡配置的是一個例項,客官可根據自身設定)

​ BOOTPROTO=static
​ #IP地址
​ IPADDR=192.168.20.20
​ #閘道器
​ GATEWAY=192.168.20.2
​ #域名解析器
​ DNS1=144.144.144.144

​ DNS2=8.8.8.8

3.重啟網路:service network restart

4.配置主機名:

​ 1-檢視主機名:hostname
​ 2-修改主機名:vim /etc/hostname
​ 3-對映主機名和IP地址:vim /etc/hosts
​ windows對映主機名和IP地址:C:\Windows\System32\drivers\etc\hosts

5.關閉防火牆: systemctl stop firewalld

6.配置使用者具有root許可權:vim /etc/sudoers

​ 找到:root ALL=(ALL) ALL

​ 新增:自己的使用者名稱 ALL=(ALL) ALL

​ 我的是: dennis ALL=(ALL) ALL

7.在/opt目錄下建立module、software資料夾

修改module、software資料夾的許可權:chown dennis:dennis /opt/module/ /opt/software/

8.在hadoop001上安裝jdk:(就是你建立的第一個虛擬機器)

​ 1-解除安裝現有的jdk:rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
​ 2-將JDK安裝包匯入到opt目錄下面的software資料夾下面
​ 3-解壓JDK到/opt/module目錄下:tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
​ (jdk包在網上下載)
​ 4-配置環境變數:
​ 1)sudo vim /etc/profile.d/my_env.sh
​ 2)新增下面內容:
​ #JAVA_HOME
​ export JAVA_HOME=/opt/module/jdk1.8.0_212
​ export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
​ 5-檢查是否配置成功:java -version
​ 6-如果報錯:則進行重啟:
​ 同步資料到磁碟:sync;
​ 重啟:reboot;
​ 如果連的xshell:則只需斷開xshell,再重連即可

9.在hadoop001上安裝hadoop

​ 1-Hadoop下載地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
​ 2-將hadoop安裝包匯入到opt目錄下面的software資料夾下面
​ 3-解壓hadoop到/opt/module目錄下:tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
​ 4-配置環境變數:
​ 1)sudo vim /etc/profile.d/my_env.sh
​ 2)新增下面內容:
​ #HADOOP_HOME
​ export HADOOP_HOME=/opt/module/hadoop-3.1.3
​ export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
​ export PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin
​ 5-檢查是否配置成功:hadoop version
​ 6-讓配置檔案生效:source /etc/profile
​ 6-如果報錯:同第8點jdk查錯

10.hadoop執行模式:(正菜)

​ 1-本地執行模式:(這裡忽略)
2-完全分散式執行模式:(重點)
​ 分析:
​ 1)準備3臺客戶機(關閉防火牆、設定靜態ip、設定主機名稱
​ 2)安裝JDK
​ 3)配置環境變數
​ 4)安裝Hadoop
​ 5)配置環境變數
​ 6)配置叢集
​ 7)單點啟動
​ 8)配置ssh
​ 9)群起並測試叢集

1)準備工作:準備3臺虛擬機器(用剛建好的虛擬機器再克隆2臺)
如何克隆
​    選中剛建好的虛擬機器——右擊——管理——克隆——選擇“下一步”——“虛擬機器中的當前狀態”——“建立完整克隆”——設定克隆虛擬機器名稱/設定克隆虛擬機器位置——完成。
2) 2)~5)前邊已經弄好了(看第8點)
3)編寫叢集分發指令碼xsync:

重點:1-這個指令碼放的位置:在root目錄下建立bin:[root@hadoop001 ~]# mkdir bin
​ 將指令碼移動到/bin中,以便全域性呼叫。
​ 2-在bin目錄下建立xsync檔案:[root@hadoop001 bin]# touch xsync
​ 3-再給xsync授權執行許可權。chmod +x /bin/xsync

​ 指令碼xsync編寫:

#!/bin/bash#1. 判斷引數個數if [ $# -lt 1 ]thenecho Not Enough Arguement!

  		exit;
		fi
		#2. 遍歷叢集所有機器
		for host in hadoop102 hadoop103 hadoop104
		do
  		echo ====================  $host  ====================
  		#3. 遍歷所有目錄,挨個傳送
 		 for file in $@
  		do
    		#4 判斷檔案是否存在
    		if [ -e $file ]
    		then
      		#5. 獲取父目錄
      		pdir=$(cd -P $(dirname $file); pwd)
      		#6. 獲取當前檔案的名稱
      		fname=$(basename $file)
      		ssh $host "mkdir -p $pdir"
      		rsync -av $pdir/$fname $host:$pdir
    		else
      		echo $file does not exists!
    		fi
  		done
		done
4).設定ssh免密登入

​ **原理:**A想免密登入到B->首先A建立公鑰和私鑰->把公鑰複製給B->A把攜帶私鑰的訊息傳送給B->B用A的 公鑰來解密->B用A的公鑰加密的資料返回給A->A收到B的訊息用自己的私鑰解密。

​ [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-LwnpPYAi-1607800450852)(assets/1607796684562.png)]
​ **目的:**將所有虛擬機器的root使用者下和自己建立的使用者下實現彼此之間相互免密登入。

​ (類似笛卡爾乘積相互連線)
具體操作:

​ 1-分別在root和自己的使用者名稱下建立公鑰/私鑰:ssh-keygen -t rsa
​ 按3次空格生成公鑰和私鑰。
​ 2-所有虛擬機器互相傳送公鑰:ssh-copy-id 虛擬機器名稱
​ 3-測試連線:ssh 虛擬機器名稱。

5)配置叢集:
hadoop001hadoop002hadoop003
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

​ 配置4個配置檔案:
​ 1-core-site.xml
​ 2-hdfs-site.xml
​ 3-yarn-site.xml
​ 4-mapred-site.xml
​ 5-在叢集上分發配置好的Hadoop配置檔案:xsync /opt/module/hadoop-3.1.3/etc/hadoop/

6)群起叢集:

​ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
​ 新增如下內容:
​ hadoop101
​ hadoop102
​ hadoop103
​ 同步到其他兩個機器上:xsync /opt/module/hadoop-3.1.3/etc

7)啟動叢集

​ 1-先格式化:在hadoop001/bin下格式:hdfs namenode -format
​ **注意:**格式化之前,一定要先停止上次啟動的所有namenode和datanode程式,然後再刪除data和log資料
​ 2-啟動hdfs:在hadoop-3.1.3下:

sbin/start-dfs.sh

​ cd /opt/module/hadoop-3.1.3/data/路徑下的資料夾,在啟動了hdfs後會自己建立出配置檔案的檔案:

​ 這是hadoop001中data/data中的檔案:

在這裡插入圖片描述

​ 這是hadoop002中的data/data中的檔案:

在這裡插入圖片描述

​ 這是hadoop003中data/data中的檔案:

在這裡插入圖片描述

​ 3-在配置了ResourceManager的節點(hadoop002)啟動YARN:

sbin/start-yarn.sh

​ 4-Web端檢視SecondaryNameNode:http://hadoop003:9868/status.html
​ **注意:**瀏覽器若顯示不出來,檢查防火牆是否已經關閉。

8)配置歷史伺服器(在hadoop001中)

​ 1-配置mapred-site.xml:vi mapred-site.xml
​ 新增:

<!-- 歷史伺服器端地址 -->
		<property>
		    <name>mapreduce.jobhistory.address</name>
    		<value>hadoop102:10020</value>
		</property>

	<!-- 歷史伺服器web端地址 -->
	<property>
	    <name>mapreduce.jobhistory.webapp.address</name>
	    <value>hadoop102:19888</value>
	</property>

2-在hadoop001啟動歷史伺服器:mapred --daemon start historyserver
3-檢視程式是否啟動:jps
4-JobHistory:http://hadoop001:19888/jobhistory

9)配置日誌的聚集

1-配置yarn-site.xml:vim yarn-site.xml
新增:

<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop100/jobhistory/logs</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

2-命令:
關閉historyserver:在001上執行: mapred --daemon stop historyserver
啟動NodeManager 、ResourceManage、Timelineserver和HistoryServer
在103上執行:start-yarn.sh
在103上執行:yarn --daemon start timelineserver
在102上執行:mapred --daemon start historyserver

10)配置時間同步(必須root使用者)

11.切記!!!hdfs格式化之前刪除data、logs

12.hadoop編譯:(重點)

​ **1-必要條件:**可以連線外網、用root使用者編譯
2-準備編譯工具:(網上可以下載)
​ **3-配置環境變數:**maven、ant、LD_LIBRARY_PATH
​ (source生效)/etc/profile/
​ (source生效)/etc/profile.d/my_env.sh
4-需要配置的檔案:
maven中配置阿里雲映象:
​ [root@hadoop001 apache-maven-3.6.3]# vi conf/settings.xml
​ 新增:

			<mirror>
                <id>nexus-aliyun</id>
                <mirrorOf>central</mirrorOf>
                <name>Nexus aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        	</mirror>

ant的配置:
​ 安裝 glibc-headers 和 g++:
​ [root@hadoop001 apache-ant-1.10.9]# yum install glibc-headers
​ [root@hadoop001 apache-ant-1.10.9]# yum install gcc-c++

​ 安裝make和cmake
​ [root@hadoop001 apache-ant-1.9.9]# yum install make
​ [root@hadoop001 cmake-3.6.2]# ./bootstrap
​ [root@hadoop001 cmake-3.6.2]# gmake
​ [root@hadoop001 cmake-3.6.2]# gmake install

​ 檢視cmake是否安裝成功:cmake --version

protobuf的配置

​ [root@hadoop001 protobuf-2.5.0]#./configure
​ [root@hadoop001 protobuf-2.5.0]# make
​ [root@hadoop001 protobuf-2.5.0]# make check
​ [root@hadoop001 protobuf-2.5.0]# make install
​ [root@hadoop001 protobuf-2.5.0]# ldconfig
檢視是否配置成功:
​ java -version
​ mvn -version
​ ant -version
​ cmake --version
​ protoc --version
5-安裝openssl庫
​ [root@hadoop001 software]#yum install openssl-devel

6-安裝 ncurses-devel庫
​ [root@hadoop001 software]#yum install ncurses-devel
7-編譯原始碼
​ 解壓原始碼到/opt/目錄:
​ [root@hadoop001 software]# tar -zxvf hadoop-3.1.3-src.tar.gz -C /opt/
​ 進入到hadoop原始碼主目錄:
​ [root@hadoop001 hadoop-3.1.3-src]#
​ 通過maven執行編譯命令:
​ [root@hadoop001 hadoop-3.1.3-src]#mvn package -Pdist,native -DskipTests -Dtar
8-編譯完畢

====================================

叢集搭建完畢!!!

====================================
在這裡插入圖片描述

=========================================================

來了,,來了,,,

在這裡插入圖片描述

實現一臺電腦的虛擬機器連另一臺電腦的虛擬機器:

1-改IP地址(前三位一致)、子網掩碼(兩臺一樣)、改閘道器地址(兩臺一樣)、改為橋接模式、連線到同一個無線網

2-檢視兩臺電腦是否ping成功

3-ping成功開始傳送:(執行命令)

rsync -av 傳送的本機檔案路徑 對方虛擬機器IP:儲存發來的檔案路徑

​ 例:

rsync -av /opt/module  root@hadoop103:/opt/(這裡寫虛擬機器名稱必須保證對方的虛擬機器名稱和其IP地址是對映的,否則就要寫IP地址)
寫IP地址的: rsync -av /opt/module  root@192.168.20.22:/opt/
寫虛擬機器名稱:rsync -av /opt/module  root@hadoop003:/opt/

舉個例子:

  • IP地址:192.168.20.20 中 192.168.20要一樣;

  • 閘道器:192.168.20.2 (兩臺電腦閘道器都弄一樣。)

  • 改為橋接模式:

    點開虛擬機器——右擊設定——選擇橋接模式

在這裡插入圖片描述
在這裡插入圖片描述

檢視編譯下載的jar包

1-編譯預設下載的jar包檔案在:/root/.m2/repository
2-檢視檔案大小:du -sh 檔名

相關文章