1. 程式人生 > >Hadoop2.7.2之叢集搭建(三臺)

Hadoop2.7.2之叢集搭建(三臺)

叢集規劃

主機名 ip 安裝的軟體 程序
master 192.168.1.111 jdk、hadoop namenode ressourcemanager
slave1 192.168.1.112 jdk、hadoop datanode secondnamenode
slave2 192.168.1.113 jdk、hadoop datanade

免登入

這裡直接用root使用者,注意將防火牆關掉:

#關閉防火牆
sudo systemctl stop firewalld.service
#關閉開機啟動
sudo systemctl disable firewalld.service

免密碼登入:

cd /root/.ssh/
ssh-keygen -t rsa

這裡上個回車就ok,會在當前目錄生成兩個檔案,一個公鑰一個私鑰

這裡寫圖片描述

將公鑰拷貝到其它機器上,實現免密碼登入

ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

這樣會在slave1 的/root/.ssh/目錄下生成一個authorized_keys 就可以實現master免登入到slave1,如下:

ssh slave1

安裝JDK

在/opt/下建立soft-install資料夾來存放安裝的軟體,建立soft來安裝軟體

這裡寫圖片描述

tar -zxvf jdk-8u91-linux-x64.tar.gz -C /opt/soft/

修改環境變數:

# 修改配置檔案
vi /etc/profile
# 在最後下新增

export JAVA_HOME=/opt/soft/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 重新整理配置檔案
source /etc/profile

安裝Hadoop

解壓

tar -zxvf ./soft-install/hadoop-
2.7.2.tar.gz -C /opt/soft/

刪除docs

cd /opt/soft/hadoop-2.7.2/share
rm -rf doc/

修改環境變數

# 修改配置檔案
vi /etc/profile
# 在最後下新增

export HADOOP_HOME=/opt/soft/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin

# 重新整理配置檔案
source /etc/profile

修改配置檔案

這些配置檔案全部位於 /opt/soft/hadoop-2.7.2/etc/hadoop 資料夾下

hadoop-env.sh

這裡寫圖片描述

core-site.xml

<configuration>
    <!-- 指定HDFS老大(namenode)的通訊地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!-- 指定hadoop執行時產生檔案的儲存路徑 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/soft/hadoop-2.7.2/tmp</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>

    <!-- 設定namenode的http通訊地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
    </property>

    <!-- 設定secondarynamenode的http通訊地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave1:50090</value>
    </property>

    <!-- 設定namenode存放的路徑 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/soft/hadoop-2.7.2/name</value>
    </property>

    <!-- 設定hdfs副本數量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 設定datanode存放的路徑 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/soft/hadoop-2.7.2/data</value>
    </property>
</configuration>

mapred-site.xml
必須先

mv mapred-site.xml.template mapred-site.xml
<configuration>
    <!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml

<configuration>
    <!-- 設定 resourcemanager 在哪個節點-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <!-- reducer取資料的方式是mapreduce_shuffle -->
    <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>
</configuration>

masters
新建一個masters的檔案,這裡指定的是secondary namenode 的主機

slave1

slaves

slave1
slave2

建立資料夾:

mkdir tmp name data

複製到其他主機

複製/etc/hosts(因為少了這個導致secondarynamenode總是在slave1啟動不起來)

scp /etc/hosts slave1:/etc/
scp /etc/hosts slave2:/etc/

複製/etc/profile (記得要重新整理環境變數)

scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc/

複製/opt/soft

scp -r /etc/soft slave1:/opt/
scp -r /etc/soft slave2:/opt/

記得在slave1和slave2上重新整理環境變數

啟動

第一次啟動得格式化

./bin/hdfs namenode -format

啟動dfs

./sbin/start-dfs.sh

啟動yarn

./sbin/start-yarn.sh

檢視

master

這裡寫圖片描述

slave1

這裡寫圖片描述

slave2

這裡寫圖片描述

通過瀏覽器測試hdfs:

192.168.2.111:50070

這裡寫圖片描述

注意這裡有資料才是成功,我因為沒把hosts檔案複製到其他主機,導致啟動的程序都是正確的,但是這裡就是沒資料,後來查資料檢查才是沒複製hosts檔案。複製之後就一切正常了

通過瀏覽器測試yarn:

192.168.2.111:8088

這裡寫圖片描述

可以看到一切正常。2個節點。

至此我們的三臺hadoop執行