Hadoop分佈式集羣的搭建

本文做者:foochanehtml

本文連接:foochane.cn/article/201…java

1 安裝說明

1.1 用到的軟件

軟件 版本 下載地址
linux Ubuntu Server 18.04.2 LTS www.ubuntu.com/download/se…
hadoop hadoop-2.7.1 archive.apache.org/dist/hadoop…
java jdk-8u211-linux-x64 www.oracle.com/technetwork…

1.2 節點安排

名稱 ip hostname
主節點 192.168.233.200 Master
子節點1 192.168.233.201 Slave01
子節點2 192.168.233.202 Slave02

2 建立hadoop用戶

全部的節點均建立一個名爲hadoop的用戶,並添加管理員權限。 注意:這裏這是單純爲了方便管理,建立的用戶名,也可使用其餘用戶名,或者使用系統以前的用戶,主要有管理員權限便可node

$ sudo useradd -m hadoop -s /bin/bash #建立用戶
$ sudo passwd hadoop #修改密碼
$ sudo adduser hadoop sudo #添加管理員權限
複製代碼

3 配置網絡環境

3.1 修改主機名

修改 /etc/hostname文件,每一個節點都要修改。linux

  • 主節點修改成:Master
  • 從節點分別修改成:Slave01,Slave02,...

注意:若是是ubuntu18.04桌面版直接修改/etc/hostname文件便可,ubuntu18.04服務器版還須要修改/etc/cloud/cloud.cfg文件,修改以下:web

# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true  #這裏是將false改爲true
複製代碼

3.2 添加IP與主機名的映射關係

/etc/hosts文件裏添加以下內容(每一個節點都要修改,根據實際狀況修改ip)apache

192.168.233.200  Master
192.168.233.201  Slave01
192.168.233.202  Slave02
複製代碼

檢查各個節點是否能相互ping通。ubuntu

3.3 設置SSH無密碼登陸節點

讓Master可以經過SSH無密碼登陸各個Slave節點瀏覽器

若是修改過主機名,須要從新生成的新的公鑰。bash

在Master上執行以下命令:服務器

$ cd ~/.ssh              # 若是沒有該目錄,先執行一次ssh localhost
$ rm ./id_rsa*           # 刪除以前生成的公匙(若是已經存在)
$ ssh-keygen -t rsa       # 執行該命令後,遇到提示信息,一直按回車就能夠
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
複製代碼

接着將Master中的id_rsa.pub文件複製到各個Slave節點中

$ scp ~/.ssh/id_rsa.pub hadoop@Slave01:/home/hadoop/
$ scp ~/.ssh/id_rsa.pub hadoop@Slave02:/home/hadoop/
複製代碼

在各個Slave節點中執行以下命令:

$ mkdir ~/.ssh       # 若是不存在該文件夾需先建立
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub    # 用完之後就能夠刪掉
複製代碼

在Master中驗證是否能夠無密碼登陸,各個Slave節點。

如:

$ ssh Slave01 #若是成功登陸,則配置完成
$ ssh Slave02 #若是成功登陸,則配置完成
複製代碼

4 安裝java環境

每一個節點都要安裝,步驟相同 爲了方便操做每一個節點,默認在/usr/local/下新建一個名爲bigdata的文件夾,存放全部的大數據相關的軟件。

$ sudo mkdir /usr/local/bigdata
$ sudo chown -R hadoop:hadoop /usr/local/bigdata/
複製代碼

4.1 解壓

$ sudo mkdir /usr/local/bigdata/java
$ sudo tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/local/bigdata/java/

複製代碼

4.2 添加環境變量

~/.bashrc文件中添加以下內容,並執行$ source ~/.bashrc命令使其生效

#java
export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

複製代碼

5 解壓hadoop

下載hadoop-2.7.1.tar.gz文件,並解壓到/usr/local/bigdata/文件夾下

$ sudo tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/bigdata
複製代碼

6 修改hadoop配置文件

須要修改6個文件,文件位於/usr/local/bigdata/hadoop-2.7.1/etc/hadoop/

6.1 slave 文件

將文件中原來的 localhost 刪除,添加內容:

Slave01
Slave02
複製代碼

6.2 core-site.xml 文件

內容修改成:

<configuration>
        <!-- 指定HADOOP所使用的文件系統schema(URI)-->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://Master:9000</value>
        </property>

         <!-- 指定hadoop運行時產生文件的存儲目錄 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/bigdata/hadoop-2.7.1/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>
複製代碼

6.3 hdfs-site.xml文件

Hadoop的分佈式文件系統HDFS通常採用冗餘存儲,一份文件一般保存3份副本,因此dfs.replication的值仍是設置爲3。 具體內容以下:

<configuration>
        <property>
                <!-- 指定SecondaryNamenode所在地址 -->
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/bigdata/hadoop-2.7.1/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/bigdata/hadoop-2.7.1/tmp/dfs/data</value>
        </property>
</configuration>
複製代碼

6.4 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:19888</value>
        </property>
</configuration>
複製代碼

6.5 yarn-site.xml文件

內容以下:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>
複製代碼

6.6 hadoop-env.sh 文件

修改以下內容:

export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211

# 能夠不用
export HADOOP_HOME=/usr/local/hadoop-2.7.1
複製代碼

7 設置hadoop環境變量

每一個節點都要設置 在~/.bashrc文件中添加以下內容,並$ source ~/.bashrc使其生效

export PATH=$PATH:/usr/local/bigdata/hadoop-2.7.1/bin:/usr/local/bigdata/hadoop-2.7.1/sbin
複製代碼

8 slave節點配置

slave節點只需將master節點上/usr/local/下的bigdata文件夾和~/.bashrc文件,放到slave節點便可 注意切換到對應機器執行$ source ~/.bashrc使環境變量生效。

後續的軟件都可使用此方式配置。

在master節點:

$ sudo rm -r /usr/local/bigdata/hadoop-2.7.1/tmp     # 刪除 Hadoop 臨時文件,若是以前有啓動過
$ sudo rm -r /usr/local/bigdata/hadoop-2.7.1/logs/*   # 刪除日誌文件,若是以前有啓動過
$ tar -zcvf ~/bigdata.tar.gz /usr/local/bigdata/ # 先壓縮再複製
$ scp ~/bigdata.tar.gz Slave01:/home/hadoop
$ scp ~/bigdata.tar.gz Slave02:/home/hadoop
$ scp ~/bashrc Slave01:/home/hadoop
$ scp ~/bashrc Slave02:/home/hadoop
複製代碼

在各個slave節點上

$ sudo mkdir /usr/local/bigdata
$ sudo chown -R hadoop:hadoop /usr/local/bigdata
$ tar -zxvf ~/bigdata.tar.gz -C /usr/local/bigdata
$ sudo source ~/.bashrc
複製代碼

9 啓動Hadoop集羣

在Master上執行 首次運行須要,執行

$ hdfs namenode -format 
複製代碼

格式化名稱節點,而後就能夠啓動hadoop了。

啓動hadoop:

$ start-dfs.sh
$ start-yarn.sh
$ mr-jobhistory-daemon.sh start historyserver
複製代碼

使用jps查看啓動的各個節點,缺乏任何進程,都表示出錯。

$ jps
3585 JobHistoryServer
2938 NameNode
3148 SecondaryNameNode
3308 ResourceManager
3629 Jps
複製代碼

瀏覽器查看:http://192.168.233.200:50070/

查看相關信息:$ hdfs dfsadmin -report

關閉hadoop:

$ stop-yarn.sh
$ stop-dfs.sh
$ mr-jobhistory-daemon.sh stop historyserver
複製代碼

若是有問題,重複以下命令:

$ stop-dfs.sh   # 關閉
$ rm -r /usr/local/bigdata/hadoop-2.7.1/tmp     # 刪除 tmp 文件,注意這會刪除 HDFS中原有的全部數據
$ hdfs namenode -format   # 從新格式化名稱節點
$ start-dfs.sh  # 重啓
複製代碼
相關文章
相關標籤/搜索