Linux系統centos7從無到有搭建虛擬機器叢集-易看易學,簡潔明瞭。
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 檔名
操作過程常遇問題:
-
dfs.sh和yarn.sh關閉不了?
在自己使用者下邊關閉dfs.sh和yarn.sh=======root下邊是關不了的!
-
hdfs啟動後,各虛擬機器的程式有缺失?
- 檢查配置檔案中的虛擬機器名稱是否匹配好。
- 所有虛擬機器的免密登入是否配置好
-
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 ]
then
echo 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)配置叢集:
hadoop001 | hadoop002 | hadoop003 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
配置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 檔名
相關文章
- 學習CDH叢集環境的搭建(虛擬機器可演示)虛擬機
- Hadoop 2.6 叢集搭建從零開始之1 Ubuntu虛擬機器搭建HadoopUbuntu虛擬機
- Hadoop叢集搭建--虛擬機器互相ping通Hadoop虛擬機
- 搭建Redis簡易叢集實現主從複製和讀寫分離Redis
- linux虛擬機器環境快速搭建redis5.x版本的主從叢集總結Linux虛擬機Redis
- 虛擬機器Hadoop叢集搭建5安裝Hadoop虛擬機Hadoop
- Hadoop叢集--linux虛擬機器Hadoop安裝與配置、克隆虛擬機器HadoopLinux虛擬機
- 使用虛擬機器在3臺centos7系統安裝docker和k8s叢集虛擬機CentOSDockerK8S
- 從rm到linux虛擬檔案系統Linux
- VM 虛擬機器linux從主機複製檔案到虛擬機器錯誤虛擬機Linux
- linux系統——Redis叢集搭建(主從+哨兵模式)LinuxRedis模式
- 簡易ATM系統
- 從0到1搭建spark叢集---企業叢集搭建Spark
- 虛擬機器中Centos7搭建本地倉庫虛擬機CentOS
- 虛擬機器之linux系統命令虛擬機Linux
- 紅帽Linux新系統整合虛擬技術 實現簡易操作(轉)Linux
- 通過編寫簡易虛擬DOM,來學習虛擬DOM 的知識!
- 億級Web系統搭建——單機到分散式叢集Web分散式
- 億級Web系統搭建:單機到分散式叢集Web分散式
- Python簡易學生管理系統Python
- 在滴滴雲快速搭建自己的簡易服務叢集[入門版]
- 搭建簡易多人線上視訊會議系統
- 使用KVM的API編寫一個簡易的AArch64虛擬機器API虛擬機
- Linux(Centos7)Redis叢集的搭建LinuxCentOSRedis
- 虛擬機器vmare使用sealos快速搭建kubernetes(k8s)叢集,一主兩從虛擬機K8S
- VM虛擬機器 linux系統新增磁碟虛擬機Linux
- VMwareWorkstation虛擬機器安裝Linux系統虛擬機Linux
- 在Window系統中安裝VMware虛擬機器搭建Linux伺服器虛擬機Linux伺服器
- 虛擬機器裝Hadoop叢集完全分散式虛擬機Hadoop分散式
- 虛擬機器使用minikube搭建k8s叢集虛擬機K8S
- linux搭建kafka叢集,多master節點叢集說明LinuxKafkaAST
- 配置虛擬機器叢集常用設定主機IP操作虛擬機
- 使用go搭建一個簡易的部落格系統Go
- 【虛擬機器的瞭解】虛擬機
- SSM + easyUI 搭建簡易的人事管理系統 系統概要部分SSMUI
- node搭建簡易資源伺服器伺服器
- 虛擬機器的搭建虛擬機
- 學習N點虛擬主機系統環境搭建