VMware workstation 15player+centos7搭建Hadoop2.9.2分佈式集羣詳細步驟

一:虛擬機

1.下載虛擬機https://www.vmware.com/cn/products/workstation-player/workstation-player-evaluation.html
2.下載centos7鏡像ios文件:下載地址http://isoredirect.centos.org/centos/7/isos/x86_64
3.安裝好虛擬機後如下圖創建新的虛擬機:
創建新虛擬機>>選擇稍後安裝操作系統>>選擇Linux //centos7>>設置名稱…下一步完成
然後點擊虛擬機設置(如下圖二)使用iOS映像文件,找到並選擇下載好的文件,確定,然後重啓虛擬機,按照步驟安裝即可,root用戶密碼自行設置,安裝完成後如下圖三,然後重啓虛擬機即安裝完成;
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

二:搭建前準備

因爲我們是要搭建Hadoop集羣,所以我們這裏建三個機,由於這個版本的虛擬機沒有克隆功能,所以如何進行虛擬機克隆呢?我查了一下啊,通過複製修改已經建好系統了的虛擬機的相應文件即可:具體這個網址:VMware Workstation player 克隆多個CentOS實踐
如上圖一,我已經建好了centos7 centos7-1 centos7-2三臺機器;

1.查看IP,並固定IP(將IP修改爲靜態的)

通過ls命令可以查看/etc/sysconfig/network-scripts/ 目錄
通過vi /etc/sysconfig/network-scripts/ ifcfg-ens33修改網卡信息,如果沒有學過Linux的可以先去看看常用用的Linux命令,要注意的是不同版本的Linux系統命令有小部分不同;
在這裏插入圖片描述
編輯完成後,保存,然後重啓network(service network restart)就行了,同理另外兩臺機器也是一樣的,IPaddr自己設置;本人的三個虛擬機IP爲:
192.168.184.184
192.168.184.185
192.168.184.186
在這裏插入圖片描述

2.配置java環境

2.1下載安裝jdk

我們知道Hadoop是通過Java語言來編程的,所以要配置Java環境,學過java的應該知道,Java環境即jdk
安裝jdk,這一步很重要,需要注意的是jdk版本問題,本人用的是jdk8,這裏附上下載網址:
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

在這裏插入圖片描述
下載完成後需要把安裝包傳到虛擬機客戶端中即可,傳輸需要藉助軟件,可以用大家都知道的xftp工具
這裏要注意的是端口問題,遠程連接用的是22號端口,所以需要先把Linux系統的22號端口打開次啊可以連接上;打開方法:輸入命令iptables -I INPUT -p tcp --dport 22 -j ACCEPT,然後重啓服務,service network restart;如下圖,我把它放在root文件下:
在這裏插入圖片描述
下載鏈接(因爲是登錄賬號才能下載,此頁面會過期)
https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1583407894_c6dd6332089b134a77afbc40df6f5413
也可通過命令直接向Linux系統下載jdk:

yum -y install wget
wget https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1583407894_c6dd6332089b134a77afbc40df6f5413

2.2解壓jdk

傳輸到root目錄下,解壓jdk:tar -zvxf jdk-8u241-linux-x64.tar.gz
在這裏插入圖片描述

2.3配置jdk環境變量:

輸入vi /etc/profile(或vim /etc/profile 需要安裝vim)添加配置如下(*記住一點 一定 要在文件最後添加!*我本人因爲在其他地方添加了幾次。。。一直不行。。。。入了幾次坑)
在這裏插入圖片描述按照上述步驟對每臺機器進行配置!

3.配置ssh免密登錄

because:在集羣中,Hadoop控制腳本依賴SSH來執行鍼對整個集羣的操作。例如,某個腳本能夠終止並重啓集羣中的所有守護進程。所以,需要安裝SSH,但是,SSH遠程登陸的時候,需要密碼驗證,集羣中數千臺計算機,數千臺計算機都需要手工輸入密碼,這是不太現實的,所以,就需要配置SSH無密碼登錄
3.1 檢查是否安裝了ssh:輸入命令which ssh簡單直接,沒有的話就安裝yum install -y openssl openssh-server
3.2 在客戶端節點創建密鑰文件:輸入 ls ~/.ssh,查看是否有密鑰存在。沒有,執行下面
創建密鑰,輸入以下指令: ssh-keygen -t rsa ,一直默認Enter下去;輸入ls ~/.ssh,查看是否多了兩個文件(id_rsa.pub和id_rsa)。
依次在各個節點創建密鑰文件
3.3 將客戶端節點自己的公鑰寫入到自己的authorized_keys中,(這裏要特別注意,最好先進入~/.ssh/ 進入的命令:cd ~/.ssh)
cat ~/.ssh/id_rsa.pub >> authorized_keys或者cp ~/.ssh/id_rsa.pub authorized_keys
然後通過vi ~/.ssh/authorized_keys查看公鑰是否寫入到該文件
然後修改.ssh和authorized_keys的權限,輸入如下命令

sudo chmod 644 ~/.ssh/authorized_keys

sudo chmod 700 ~/.ssh

然後重啓ssh,centos7的重啓命令是systemctl restart sshd
(查看sshd服務狀態:systemctl status sshd.service
啓動sshd服務:systemctl start sshd.service
重啓 sshd 服務:systemctl restart sshd.service
設置服務開啓自啓:systemctl enable sshd.service)

注意:這裏的authorized_keys文件一定要在/.ssh/下,不然就不行,注意注意注意!!!本人就是在這裏入坑了,浪費了一下午時間…

3.4修改客戶端節點的名稱,並設置ip
這個步驟是爲了方便輸入和去分辨三臺客戶端;
hostnamectl set-hostname 【你取的名字】 這樣會修改三種主機名
重啓後你的hostname就變了
我這裏是將一個改爲wx1
另外兩個爲wx2和wx3
輸入vim /etc/hosts 修改如下,這樣在這三臺主機間才能通過hostname來識別彼此 ,不需要輸入長IP了
在這裏插入圖片描述
然後檢驗一下:ssh wx1
在這裏插入圖片描述

4.關閉防火牆

因爲集羣都是內網搭建的,對外還有一個服務器的,那個服務器有防火牆,由它來訪問內網集羣,如果內網內開啓防火牆,內網集羣通訊會出現很多問題。
關閉防火牆: systemctl stop firewalld.service
禁用防火牆;systemctl disable firewalld.service
查看防火牆狀態:firewall-cmd --state

三、安裝Hadoop

1.下載Hadoop包,

我這裏用的是Hadoop2.9.2(第一次使用的2.10.0的,失敗了幾次,就換了)
下載地址:https://hadoop.apache.org/releases.html
在這裏插入圖片描述

2.解壓Hadoop

2.1下載好了後,還是通過xftp傳輸到虛擬機,因爲前面我的jdk也在root目錄下,爲了區分開,我把Hadoop放在home目錄下,然後一樣tar -zxvf hadoop-2.9.0.tar.gz 解壓tar包
在這裏插入圖片描述2.2配置Hadoop環境變量,跟前面jdk一樣,我們輸入vi /etc/profile(或vim /etc/profile )添加配置如下
在這裏插入圖片描述
然後輸入source /etc/profile運用,輸入hadoop version檢驗是否成功
在這裏插入圖片描述

3.配置Hadoop相關文件

這裏需要配置七個文件:core-site.xml , hdfs-site.xml , mepred-site.xml, yarn-site.xml,hadoop.env.sh、yarn-env.sh,slaves需要注意的是,因爲下面的內容是我的配置,我的虛擬機節點名稱爲wx1,這個需要修改一下;然後就是路徑問題,由於解壓或其他問題肯導致Hadoop文件夾名稱改變,所以一定要注意路徑問題;
1.core-site.xml:

vi /home/hadoop-2.9.2/etc/hadoop/core-site.xml

<configuration> </configuration>節點中增加如下內容:

<property>
    <name>fs.default.name</name>
    <value>hdfs://wx1:9000</value>
</property>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop-2.9.2/tmp</value>
</property>
<property>
    <name>io.file.buffer.size</name>
    <value>131702</value>
</property>

2.hdfs-site.xml

vi /home/hadoop-2.9.2/etc/hadoop/hdfs-site.xml

<configuration> </configuration>節點中增加如下內容:

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///home/hadoop-2.9.2/dfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///home/hadoop-2.9.2/dfs/data</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>wx1:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>

3.mapred-site.xml

vi /home/hadoop-2.9.2/etc/hadoop/mapred-site.xml

<configuration> </configuration>節點中增加如下內容:

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
      <final>true</final>
</property>
<property>
 <name>mapreduce.jobtracker.http.address</name>
 <value>wx1:50030</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>wx1:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>wx1:19888</value>
</property>
<property>
    <name>mapred.job.tracker</name>
    <value>http://wx1:9001</value>
</property>

4.yarn-site.xml

vi /home/hadoop-2.9.2/etc/hadoop/yarn-site.xml

<configuration> </configuration>節點中增加如下內容:

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>     
 <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>wx1:8032</value>
</property>
<property>
   <name>yarn.resourcemanager.scheduler.address</name>
    <value>wx1:8030</value>
</property>
<property>
   <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>wx1:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>wx1:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>wx1:8088</value>
</property>
 <property>
   <name>yarn.resourcemanager.hostname</name>
   <value>wx1</value>
</property>
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>2048</value>
</property>

5.hadoop-env.sh和yarn-env.sh

配置/home/hadoop-2.9.2/etc/hadoop目錄下hadoop-env.sh、yarn-env.sh的JAVA_HOME,jdk環境變量

vi /home/hadoop/hadoop-2.9.0/etc/hadoop/hadoop-env.sh
vi /home/hadoop/hadoop-2.9.0/etc/hadoop/yarn-env.sh

在文件中找到JAVA_HOME,取消JAVA_HOME的註釋,設置爲 export JAVA_HOME=/root/jdk1.8.0_241

8,slaves

配置/home/hadoop/hadoop-2.9.2/etc/hadoop目錄下的slaves,刪除默認的localhost,添加2個從節點:
前面提到的我的三個客戶端節點名稱爲wx1,wx2,wx3。 wx1爲主節點

vi /home/hadoop-2.9.2/etc/hadoop/slaves
 wx2
 wx3

4.複製Hadoop至從節點

將wx1服務器上配置好的Hadoop複製到各個節點對應位置上,通過scp傳送:

scp -r /home/hadoop  wx2:/home/
scp -r /home/hadoop  wx3:/home/

因爲Hadoop比較大,這裏可能需要幾分鐘時間

5.啓動Hadoop

在wx1主節點啓動hadoop服務,各個從節點會自動啓動,cd /home/hadoop-2.9.2進入/homep/hadoop-2.9.0/目錄,hadoop的啓動和停止都在wx1上進行;
1.初始化,輸入命令:hdfs namenode -format
2.啓動命令:start-all.sh
啓動順序:NameNode,DateNode,SecondaryNameNode,JobTracker,TaskTracker
3.輸入jps命令查看相關信息,master上截圖如下:
4.slave節點上輸入jps查看:

在這裏插入圖片描述
5.停止命令:stop-all.sh
關閉順序性:JobTracker,TaskTracker,NameNode,DateNode,SecondaryNameNode

6.訪問頁面

訪問Hadoop頁面,注意這兩個頁面是在Hadoop啓動狀態下訪問的,然後就是防火牆要關閉,前面步驟中提到過,輸入http://192.168.184.184:50070,看到如下界面:
在這裏插入圖片描述

輸入http://192.168.184.184:8088,看到如下界面:
  在這裏插入圖片描述

到了這一步。如果以上頁面都能實現以及jps查看的各個節點都存活,那麼基本上完成了hadoop集羣的搭建了!開心^ - ^


剛接觸大數據的一名大學生;
如有不足之處,還望大佬指出;
如有不懂之處,歡迎評論詢問;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章