1. 程式人生 > >Hadoop2.7.6叢集搭建

Hadoop2.7.6叢集搭建

首先,搭建的準備工作:Linux(CentOS)、xshell、至少8G記憶體。

建立幾個虛擬機器,一主多從,每一個建立的時候,在最後安裝前的設定裡面,設定網路和主機名的兩個地方,一個是IPv4那裡,設定好IP地址,埠號和閘道器;還有一個是在常規那裡勾選上第一個。每一個建立完,都要檢測是否能夠聯網。同時檢查一下網絡卡設定,命令為:vi /etc/sysconfig/network-scripts/ifcfg-ens33

接著在xshell中連線虛擬機器,連線成功後,就再也不用管虛擬機器了,開在那邊就好。建立新的連線,常規設定名稱、主機名,還有使用者身份驗證和虛擬機器該使用者保持一致。

連線後,出現如下圖情況,即為連線成功。

以上這些基本準備工作做完後,接下來就開始正式的介紹叢集搭建了。

一、首先安裝一些方便叢集搭建的一些安裝包:

1.第一個是openssh的安裝,因為主從節點之間需要檔案的傳遞,以及檔案的上傳等,都依賴這個工具

[[email protected] ~]# yum -y install openssh-clients

2.第二個是檔案上傳和下載的工具,可以在xshell內部直接下載外部資源,其實這裡下載的資源是CentOS一個外掛庫裡面的資源

[[email protected] ~]# yum -y install lrzsz

3.傳輸檔案的時候, 可能會遭遇到系統防火牆的干擾,因此我們需要關閉防火牆

[[email protected] ~]# systemctl status firewalld    //檢視防火牆狀態
[[email protected] ~]# systemctl stop firewalld      //關閉防火牆
[[email protected] ~]# systemctl disable firewalld   //禁用防火牆,防止自動開啟

還有一些小功能的,需要的自己百度安裝:例如時間同步工具ntp、網路資源下載工具wget等

二、配置SSH免密登陸

以下操作,多臺主機一起執行:

首先修改hosts檔案,作用相當於一個別名

[[email protected] ~]# vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.114.114 master
192.168.114.115 slave1
192.168.114.116 slave2
192.168.114.117 slave3

然後在各個主機都建立一個.ssh資料夾

[[email protected] ~]# ssh slave3    //別的主機同理,改個名字即可
[[email protected] ~]# cd ~/.ssh   //進入ssh目錄
[[email protected] .ssh]# ssh-keygen -t rsa -P ''  //產生公鑰和私鑰

接著一直按回車,接著各個主機都有了私鑰和公鑰。接著將各個主機的公鑰放到authorized_keys檔案中

[[email protected] .ssh]# cp id_rsa.pub authorized_keys

然後將各個主機的公鑰追加到master中

cat ~/.ssh/id_rsa.pub | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'

最後連線測試各個主機之間的聯通。

[[email protected] ~]# ssh master
[[email protected] ~]# ssh slave1
[[email protected] ~]# ssh master
[[email protected] ~]# ssh slave2
[[email protected] ~]# ssh master
[[email protected] ~]# ssh slave3
[[email protected] ~]# ssh master

三、Java環境的安裝和配置(所有主機同樣操作)

下載jdk 下載地址:http://www.oracle.com/technetwork/java/javase/archive139210.html

1.下載安裝前,首先檢查虛擬機器系統內是否有殘留的jdk等,如果有,要先清理,再安裝

 

2.安裝jdk

①建立兩個目錄,為了之後存放jdk和hadoop的安裝包做準備

[[email protected] ~]# mkdir -p /opt/SoftWare/Java/
[[email protected] ~]# mkdir -p /opt/SoftWare/Hadoop/

②上傳jdk安裝包,並解壓

[[email protected] ~]# cd /opt/SoftWare/Java     //使用rz命令從windows主機上傳jdk壓縮包到master節點
[[email protected] Java]# rz
[[email protected] Java]# tar ‐zxvf jdk‐8u172‐linux‐x64.tar.gz

③接下來開始配置環境變數

[[email protected] Java]# vi /etc/profile   //寫在該配置檔案最後
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_172
export JRE_HOME=/opt/SoftWare/Java/jdk1.8.0_172/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

④配置完千萬要source一下,否賊你的配置將不起效果,出現以下內容,則說明你的配置正確了。

[[email protected] Java]# source /etc/profile
[[email protected] Java]# java ‐version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)

四、Hadoop的安裝和配置(僅在master執行,後面會遠端複製給其他從節點)

①上傳hadoop安裝包,並解壓

[[email protected] Hadoop]# tar -zxvf hadoop-2.7.6.tar.gz 

②同樣,建立幾個目錄,方便儲存資訊,不過這裡即使你不建立,系統也會自動建立

[[email protected] hadoop-2.7.6]# mkdir tmp
[[email protected] hadoop-2.7.6]# mkdir logs
[[email protected] hadoop-2.7.6]# mkdir -p hdfs/name
[[email protected] hadoop-2.7.6]# mkdir -p hdfs/data

③接下來就是關於hadoop的配置檔案的修改了,將這兩個路徑下的檔案的JAVA_HOME都改成如下路徑

[[email protected] hadoop]# vi hadoop-env.sh 
[[email protected] hadoop]# vi yarn-env.sh
export JAVA_HOME=/opt/SoftWare/Java/jdk1.8.0_172

④編輯slaves,將master的所有節點都寫在這裡,如果下次還有節點加入,直接新增,新增詳情如下

[[email protected] hadoop]# vi slaves


slave1
slave2
slave3   

⑤修改core-site.xml檔案,這是核心檔案core,很重要

[[email protected] hadoop-2.7.6]# vi etc/hadoop/core-site.xml
<configuration>
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.6/tmp</value>
</property>
<property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
</property>
</configuration>

⑥修改hdfs-site.xml檔案,這是HDFS的配置檔案

[[email protected] hadoop-2.7.6]# vi etc/hadoop/hdfs-site.xml

<configuration>
<property>
       <name>dfs.namenode.name.dir</name> 
      <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.6/hdfs/name</value>
</property>
<property>
       <name>dfs.datanode.data.dir</name>   
    <value>file:/opt/SoftWare/Hadoop/hadoop-2.7.6/hdfs/data</value>
</property>
<property>
        <name>dfs.replication</name>
        <value>2</value>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
</property>
<property>
        <name>dfs.namenode.secondary.https-address</name>
        <value>192.168.10.250:50091</value>
</property>
<property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
</property>

</configuration>

⑦修改yarn-site.xml檔案

[[email protected] hadoop-2.7.6]# vi etc/hadoop/yarn-site.xml 

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


</configuration>

⑧修改mapred-site.xml檔案,需要複製建立

[[email protected] hadoop-2.7.6]# cp etc/hadoop/mapred-site.xml.template  etc/hadoop/mapred-site.xml
[[email protected] hadoop-2.7.6]# vim etc/hadoop/mapred-site.xml

<configuration>
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>
<property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
</property>
<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19880</value>
</property>


</configuration>

之前說過,以上操作只要在master裡面操作即可,然後複製到各個從節點,使用以下命令,其他類似

[[email protected] hadoop‐2.7.6]# scp ‐r /opt/SoftWare/Hadoop [email protected]:/opt/SoftWare/

⑨修改環境變數,每一個節點都需要新增以下hadoop的環境變數

[[email protected] hadoop‐2.7.6]# vi /etc/profile
#新增以下內容
export HADOOP_HOME=/opt/SoftWare/Hadoop/hadoop‐2.7.6
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
[[email protected] hadoop‐2.7.6]# source /etc/profile  //上文講過,修改環境變數需要source 或者.+空格+/etc/profile

⑩格式化Hadoop,當你格式化後能夠看到下面的successfully formatted時,即代表格式化成功了

[[email protected] hadoop‐2.7.5]# bin/hdfs namenode ‐format

18/07/27 22:54:44 INFO util.GSet: capacity      = 2^15 = 32768 entries
18/07/27 22:54:44 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1867261898-192.168.114.117-1532703284780
18/07/27 22:54:44 INFO common.Storage: Storage directory /opt/SoftWare/Hadoop/hadoop-2.7.6/hdfs/name has been successfully formatted.
18/07/27 22:54:45 INFO namenode.FSImageFormatProtobuf: Saving image file /opt/SoftWare/Hadoop/hadoop-2.7.6/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
18/07/27 22:54:45 INFO namenode.FSImageFormatProtobuf: Image file /opt/SoftWare/Hadoop/hadoop-2.7.6/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
18/07/27 22:54:45 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/07/27 22:54:45 INFO util.ExitUtil: Exiting with status 0
18/07/27 22:54:45 INFO namenode.NameNode: SHUTDOWN_MSG: 

接著就是令人興奮地時候了,可以啟動叢集啦!!

方法一:sbin/start‐dfs.sh
方法二:start‐all.sh  //以前的,現在不推薦使用

#然後啟動YARN
[[email protected] hadoop‐2.7.5]# sbin/start‐yarn.sh

顯示如下資料,則表明成功一半了,但距離成功就一步之遙了,輸入jps檢視狀態,如果如下就幾乎成功了,還需要去檢測你的50070和8088網頁是否可以開啟。如果都打開了,那恭喜你!成功了!!

[[email protected] hadoop‐2.7.6]# jps

13696 NameNode
14037 ResourceManager
14229 Jps
13887 SecondaryNameNode