多臺Linux虛擬機Hadoop集羣的安裝與部署(超詳細版)

生資之高在忠信,非關機巧
學業之美在德行,不僅文章

注意事項

  1. 虛擬機系統均爲Linux的發行版,CentOS 7
  2. 本次安裝部署實際使用的虛擬機數量爲3(實際兩臺及以上數量的虛擬機均可,一臺爲僞分佈式)
  3. 各臺虛擬機的IPv4爲手動,它們的IP地址、子網掩碼、網關以及DNS需要正確填寫
  4. 本次安裝部署使用的IP地址如下,後文會多次出現
節點 IP地址 原主機名 即將更新後的主機名
主節點 172.16.29.94 GPU master
從節點1 172.16.29.95 CentOS slave1
從節點2 172.16.29.96 ContOS slave2

準備工作

安裝包

  1. jdk-8u151-linux-x64.tar.gz 提取碼0823
  2. hadoop-2.7.7.tar.gz 提取碼en66

注意:JDK版本儘量使用1.8

軟件

  1. Xftp (類似的SFTP、FTP文件傳輸軟件均可,如國產的FinalShell)
  2. Xshell (類似的安全終端模擬軟件均可,如SecureCRT)
  • Xftp以及Xshell均包含在Xmanager軟件產品中 提取碼7r9h
  • SecureCRT 提取碼fcjd
  • Xshell以及SecureCRT下載一個即可,建議下載Xshell

具體步驟

注意:以下以在IP爲172.16.29.94的虛擬機(主節點)上安裝與部署爲例,閱讀過程中請注意特別說明

使用Xftp導入安裝包

  1. 打開Xftp,點擊“文件”→“新建”
  2. 填寫“名稱”、“主機”、“用戶名”和“密碼”,“主機”填寫IP地址,名稱儘量填寫IP地址,“用戶名”和“密碼”爲登錄該虛擬機的用戶名和密碼
  3. “協議”更改爲“SFTP”
    新建SFTP文件傳輸連接
  4. 點擊“選項”,勾選“使用UTF-8”編碼,點擊“確定”,否則連接時虛擬機中的文件名稱會產生亂碼
  5. 選擇名稱爲“172.16.29.94”的會話,點擊“連接”
  6. 將本地的兩個安裝包文件拖拽到虛擬機上
    從本地向虛擬機傳輸文件傳輸完成後如下從本地向虛擬機傳輸文件

使用Xshell進行安裝與部署

使用Xshell連接虛擬機

  1. 點擊“文件”→“新建”
  2. 填寫“名稱”和“主機”,“主機”爲IP地址,“名稱”儘量填寫IP地址,點擊“確定”
    新建Xshell連接虛擬機
  3. 在會話中選擇“172.16.29.94”,點擊“連接”,依次輸入“用戶名”和“密碼”,“用戶名”和“密碼”爲登錄該虛擬機的用戶名和密碼,最後點擊“確定”
    新建Xshell連接虛擬機
    新建Xshell連接虛擬機
    新建Xshell連接虛擬機在Xshell顯示界面顯示如下信息即爲連接成功

Connecting to 172.16.29.94:22…
Connection established.
To escape to local shell, press ‘Ctrl+Alt+]’.

Last login: Tue Oct 8 16:55:55 2019 from 172.28.54.186
[root@GPU ~]#

其中[root@GPU~]中的GPU爲該虛擬機的主機名,即hostname,每臺虛擬機可能會不一樣
特別說明:所有虛擬機均執行“使用Xshell連接虛擬機”操作

安裝JDK

  1. 在Xshell中輸入命令ll,得到如下結果
    ([root@GPU ~]# ll)
    從中可以看到 hadoop-2.7.7.tar.gz 和 jdk-8u151-linux-x64.tar.gz 兩個文件

-rw-------. 1 root root 2094 9月 23 12:55 anaconda-ks.cfg
-rw-------. 1 root root 5468160 9月 27 22:41 core.4021
-rw-r–r-- 1 root root 218720521 10月 8 17:53 hadoop-2.7.7.tar.gz
-rw-r–r--. 1 root root 2142 9月 23 13:01 initial-setup-ks.cfg
-rw-r–r-- 1 root root 189736377 10月 8 17:53 jdk-8u151-linux-x64.tar.gz
drwxr-xr-x. 2 root root 6 9月 27 22:29 tsclient
drwxr-xr-x. 2 root root 6 9月 27 22:29 公共
drwxr-xr-x. 2 root root 6 9月 27 22:29 模板
drwxr-xr-x. 2 root root 6 9月 27 22:29 視頻
drwxr-xr-x. 2 root root 6 9月 27 22:29 圖片
drwxr-xr-x. 2 root root 6 9月 27 22:29 文檔
drwxr-xr-x. 2 root root 6 9月 27 22:29 下載
drwxr-xr-x. 2 root root 6 9月 27 22:29 音樂
drwxr-xr-x. 2 root root 6 9月 27 22:29 桌面

  1. 輸入創建目錄命令mkdir /usr/local/java
    ([root@GPU ~]# mkdir /usr/local/java)
  2. 將JDK安裝到該目錄,輸入命令tar -C /usr/local/java -zxvf jdk-8u151-linux-x64.tar.gz,點擊回車
    ([root@GPU ~]# tar -C /usr/local/java -zxvf jdk-8u151-linux-x64.tar.gz)
  3. 輸入命令vi /etc/profile,修改profile配置文件
    ([root@GPU ~]# vi /etc/profile)
    點擊i進入輸入模式,在文件的末尾添上如下代碼
    添加完成後,點擊Esc按鍵,輸入:wq保存並退出
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
export classpath=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
  1. 輸入source /etc/profile或者. /etc/profile,使配置文件生效
    ([root@GPU ~]# source /etc/profile)
  2. 輸入java命令,顯示如下信息
    ([root@GPU ~]# java)

用法: java [-options] class [args…]
(執行類)
或 java [-options] -jar jarfile [args…]
(執行 jar 文件)
其中選項包括:
-d32 使用 32 位數據模型 (如果可用)
-d64 使用 64 位數據模型 (如果可用)
(省略)
-javaagent:<jarpath>[=<選項>]
加載 Java 編程語言代理, 請參閱 java.lang.instrument
-splash:<imagepath>
使用指定的圖像顯示啓動屏幕
有關詳細信息, 請參閱 http://www.oracle.com/technetwork/java/javase/documentation/index.html。

  1. 輸入javac命令,顯示如下信息
    ([root@GPU ~]# javac)

用法: javac <options> <source files>
其中, 可能的選項包括:
-g 生成所有調試信息
-g:none 不生成任何調試信息
-g:{lines,vars,source} 只生成某些調試信息
(省略)
-J<標記> 直接將 <標記> 傳遞給運行時系統
-Werror 出現警告時終止編譯
@<文件名> 從文件讀取選項和文件名

  1. 輸入javajavac命令均無異常並不能說明安裝成功,輸入命令java -version,若出現以下信息,則非安裝成功,需要進行補充操作
    ([root@GPU ~]# java -version)

openjdk version “1.8.0_161”
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

  1. 輸入命令rpm -qa | grep java,若顯示如下信息,則需要將虛擬機自帶的OpenJDK卸載
    ([root@GPU ~]# rpm -qa | grep java)

java-1.8.0-openjdk-headless-1.8.0.161-2.b14.e17.x86_64
java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.e17.x86_64
tzdata-java-2018c-1.e17.noarch
java-1.7.0-openjdk-1.7.0.171-2.6.13.2.e17.x86_64
java-1.8.0-openjdk-1.8.0.161-2.b14.e17.x86_64
javapackages-tools-3.4.1-11.e17.noarch

  1. 輸入命令yum -y remove java-1.8.0-openjdk-headless-1.8.0.161-2.b14.e17.x86_64,點擊回車進行卸載
    ([root@GPU ~]# yum -y remove java-1.8.0-openjdk-headless-1.8.0.161-2.b14.e17.x86_64)
  2. 輸入命令yum -y remove java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.e17.x86_64,點擊回車進行卸載
    ([root@GPU ~]# yum -y remove java-1.7.0-openjdk-headless-1.7.0.171-2.6.13.2.e17.x86_64)
  3. 輸入命令rpm -qa | grep java,出現如下信息即可,即不包含已卸載的JDK
    ([root@GPU ~]# rpm -qa | grep java)

tzdata-java-2018c-1.e17.noarch
python-javapackages-3.4.1-11.e17.noarch
javapackages-tools-3.4.1-11.e17.noarch

  1. 輸入source /etc/profile或者. /etc/profile,使配置文件生效
    ([root@GPU ~]# source /etc/profile)
  2. 輸入java -version,顯示如下信息即爲安裝成功
    ([root@GPU ~]# java -version)

java version “1.8.0_151”
Java™ SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot™ 64-Bit Server VM (build 25.151-b12, mixed mode)

  1. 輸入命令rm -f jdk-8u151-linux-x64.tar.gz,刪除JDK安裝包
    ([root@GPU ~]# rm -f jdk-8u151-linux-x64.tar.gz)

特別說明:所有虛擬機均執行“安裝JDK”操作

安裝Hadoop

  1. 輸入命令mkdir /hadoop,創建目錄
    ([root@GPU~]# mkdir /hadoop)
  2. 輸入命令tar -C /hadoop/ -zxvf hadoop-2.7.7.tar.gz,在上述目錄中安裝Hadoop
    ([root@GPU~]# tar -C /hadoop/ -zxvf hadoop-2.7.7.tar.gz)
  3. 輸入命令cd /hadoop/hadoop-2.7.7,進入 hadoop-2.7.7目錄中
    ([root@GPU~]# cd /hadoop/hadoop-2.7.7)
  4. 輸入命令ll,若顯示如下信息,則Hadoop安裝成功
    ([root@GPU hadoop-2.7.7]# ll)

總用量 112
drwxr-xr-x 2 user ftp 194 7月 19 2018 bin
drwxr-xr-x 3 user ftp 20 7月 19 2018 etc
drwxr-xr-x 2 user ftp 106 7月 19 2018 include
drwxr-xr-x 3 user ftp 20 7月 19 2018 lib
drwxr-xr-x 2 user ftp 239 7月 19 2018 libexec
-rw-r–r-- 1 user ftp 86424 7月 19 2018 LICENSE.txt
drwxr-xr-x 3 root root 22 9月 29 19:14 logs
-rw-r–r-- 1 user ftp 14978 7月 19 2018 NOTICE.txt
-rw-r–r-- 1 user ftp 1366 7月 19 2018 README.txt
drwxr-xr-x 2 user ftp 4096 7月 19 2018 sbin
drwxr-xr-x 4 user ftp 31 7月 19 2018 share

  1. 輸入命令rm -f hadoop-2.7.7.tar.gz,刪除Hadoop安裝包
    ([root@GPU ~]# rm -f hadoop-2.7.7.tar.gz)

特別說明:所有虛擬機均執行“安裝Hadoop”操作

關閉防火牆

  1. 輸入命令systemctl stop firewalld並執行
    ([root@GPU hadoop-2.7.7]# systemctl stop firewalld)
  2. 輸入命令systemctl disable firewalld並執行
    ([root@GPU hadoop-2.7.7]# systemctl disable firewalld)
    特別說明:所有虛擬機均執行“關閉防火牆”操作

關閉Selinux

  1. 輸入命令vi /etc/sysconfig/selinux進入selinux文件進行編輯
    ([root@GPU hadoop-2.7.7]# vi /etc/sysconfig/selinux)
  2. 點擊i進入輸入模式,找到代碼段SELINUX=enforcing,將其改爲SELINUX=disabled,點擊Esc按鍵,輸入:wq保存並退出
    特別說明:所有虛擬機均執行“關閉Selinux”操作

修改hostname

  1. 輸入命令hostnamectl set-hostname master
    ([root@GPU hadoop-2.7.7]# hostnamectl set-hostname master)
  2. 輸入命令hostname,若出現如下信息,則主機名稱更改成功
    ([root@GPU hadoop-2.7.7]# hostname)

master

特別說明:所有虛擬機應設置不同的主機名稱,能夠區分即可
我將IP爲172.16.29.94的虛擬機主機名設置爲master(主節點),將IP爲172.16.29.95的虛擬機主機名設置爲slave1(第一個從節點),將IP爲172.16.29.96的虛擬機主機名設置爲slave2(第二個從節點),以此類推
即IP爲172.16.29.95的虛擬機應執行的命令爲hostnamectl set-hostname slave1
([root@CentOS ~]# hostnamectl set-hostname slave1)
IP爲172.16.29.96的虛擬機應執行的命令爲hostnamectl set-hostname slave2
([root@CentOS ~]# hostnamectl set-hostname slave2)

修改host文件

  1. 輸入命令vi /etc/hosts,對hosts文件進行編輯
    ([root@GPU hadoop-2.7.7]# vi /etc/hosts)
  2. 點擊i進入輸入模式,在文件末端添加如下代碼後點擊Esc按鍵,輸入:wq保存並退出
    代碼格式爲集羣中的所有虛擬機的 IP+空格+主機名稱
172.16.29.94 master
172.16.29.95 slave1
172.16.29.96 slave2

特別說明:後續操作有兩種選擇
選擇1:所有虛擬機均執行“修改host文件”操作
選擇2:由主機依次執行文件複製命令scp /etc/hosts 172.16.29.95:/etc/scp /etc/hosts 172.16.29.96:/etc/,即有多少未執行“修改host文件”的虛擬機,主機就執行多少次該操作,將hosts文件發放至各個虛擬機,但是需要輸入目的虛擬機的密碼

重啓虛擬機

輸入命令reboot,重啓虛擬機
重啓虛擬機後,各主機名會發生變化
如IP爲172.16.29.94的虛擬機爲[root@master~]#
IP爲172.16.29.95的虛擬機爲[root@slave1~]#
IP爲172.16.29.96的虛擬機爲[root@slave2~]#
特別說明:所有虛擬機均執行“重啓虛擬機”操作

設置SSH無密碼登錄

獲取公鑰

  1. 輸入命令cd ~回到根目錄
  2. 輸入命令ssh-keygen,點擊6次回車,出現如下信息
    ([root@master ~]# ssh-keygen)
    設置SSH無密碼登錄
  3. 輸入命令cd .ssh
    ([root@master ~]# cd .ssh)
  4. 輸入命令cat ./id_rsa.pub >> authorized_keys
    ([root@master .ssh]# cat ./id_rsa.pub >> authorized_keys)
  5. 輸入命令cat authorized_keys,將生成的公鑰複製
    特別說明:所有虛擬機均執行“獲取公鑰”操作

修改授權公鑰文件

  1. 輸入命令vi authorized_keys,對authorized_keys文件進行編輯
    ([root@master .ssh]# vi authorized_keys)
  2. IP爲172.16.29.94的虛擬機(主節點)的authorized_keys文件中僅有一個結尾爲root@master的公鑰,點擊i進入輸入模式,在後面添加IP爲172.16.29.95的虛擬機在“獲取公鑰”操作中產生的公鑰(結尾爲root@slave1)和IP爲172.16.29.96的虛擬機在“獲取公鑰”操作中產生的公鑰(結尾爲root@slave2),添加完成後點擊Esc按鍵,輸入:wq保存並退出
    修改授權公鑰文件
    特別說明:後續操作有兩種選擇
    選擇1:所有虛擬機均執行“修改授權公鑰文件”操作,即主機名爲slave1的虛擬機將master和slave2虛擬機的公鑰加入該文件,主機名爲slave2的虛擬機將master和slave1虛擬機的公鑰加入該文件
    選擇2:由主機依次執行文件複製命令scp ./authorized_keys slave1:/root/.ssh/scp ./authorized_keys slave2:/root/.ssh/,即有多少未執行“修改授權公鑰文件”的虛擬機,主機就執行多少次該操作,將授權公鑰文件發放至各個虛擬機,但是需要輸入目的虛擬機的密碼
    ([root@master .ssh]# scp ./authorized_keys slave1:/root/.ssh/)
    ([root@master .ssh]# scp ./authorized_keys slave2:/root/.ssh/)
    上述操作完成後,就可以進行SSH無密碼登錄,在master虛擬機上試驗免密登錄如下

[root@master ~]# ssh slave1
Last login: Tue Oct 8 21:38:59 2019 from master
[root@slave1 ~]# exit
登出
Connection to slave1 closed.
[root@master ~]# ssh slave2
Last login: Tue Oct 8 18:37:03 2019 from master
[root@slave2 ~]# exit
登出
Connection to slave2 closed.

若在其他的虛擬機上能夠自由地進行SSH免密登錄,則“設置SSH無密碼登錄”操作成功

修改Hadoop配置文件1

  1. 輸入命令cd ~,進入根目錄
  2. 輸入命令cd /hadoop/hadoop-2.7.7/etc/hadoop,進入該目錄
    ([root@master ~]# cd /hadoop/hadoop-2.7.7/etc/hadoop)
  3. 輸入命令ll,會顯示出如下文件

總用量 156
-rw-r–r-- 1 user ftp 4436 7月 19 2018 capacity-scheduler.xml
-rw-r–r-- 1 user ftp 1335 7月 19 2018 configuration.xsl
-rw-r–r-- 1 user ftp 318 7月 19 2018 container-executor.cfg
-rw-r–r-- 1 user ftp 1421 9月 29 19:33 core-site.xml
-rw-r–r-- 1 user ftp 3670 7月 19 2018 hadoop-env.cmd
-rw-r–r-- 1 user ftp 4271 9月 29 19:27 hadoop-env.sh
-rw-r–r-- 1 user ftp 2598 7月 19 2018 hadoop-metrics2.properties
-rw-r–r-- 1 user ftp 2490 7月 19 2018 hadoop-metrics.properties
-rw-r–r-- 1 user ftp 9683 7月 19 2018 hadoop-policy.xml
-rw-r–r-- 1 user ftp 1374 9月 29 19:33 hdfs-site.xml
-rw-r–r-- 1 user ftp 1449 7月 19 2018 httpfs-env.sh
-rw-r–r-- 1 user ftp 1657 7月 19 2018 httpfs-log4j.properties
-rw-r–r-- 1 user ftp 21 7月 19 2018 httpfs-signature.secret
-rw-r–r-- 1 user ftp 620 7月 19 2018 httpfs-site.xml
-rw-r–r-- 1 user ftp 3518 7月 19 2018 kms-acls.xml
-rw-r–r-- 1 user ftp 1527 7月 19 2018 kms-env.sh
-rw-r–r-- 1 user ftp 1631 7月 19 2018 kms-log4j.properties
-rw-r–r-- 1 user ftp 5540 7月 19 2018 kms-site.xml
-rw-r–r-- 1 user ftp 11801 7月 19 2018 log4j.properties
-rw-r–r-- 1 user ftp 951 7月 19 2018 mapred-env.cmd
-rw-r–r-- 1 user ftp 1383 7月 19 2018 mapred-env.sh
-rw-r–r-- 1 user ftp 4113 7月 19 2018 mapred-queues.xml.template
-rw-r–r-- 1 root root 886 9月 29 19:33 mapred-site.xml
-rw-r–r-- 1 user ftp 758 7月 19 2018 mapred-site.xml.template
-rw-r–r-- 1 user ftp 21 9月 29 19:33 slaves
-rw-r–r-- 1 user ftp 2316 7月 19 2018 ssl-client.xml.example
-rw-r–r-- 1 user ftp 2697 7月 19 2018 ssl-server.xml.example
-rw-r–r-- 1 user ftp 2250 7月 19 2018 yarn-env.cmd
-rw-r–r-- 1 user ftp 4612 9月 29 19:28 yarn-env.sh
-rw-r–r-- 1 user ftp 1699 9月 29 19:33 yarn-site.xml

  1. 下面要進行修改的是core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml以及slaves五個文件
    這五個文件可以使用 vi+文件名 的方式在Xshell中更改(點擊i進入輸入模式模式,點擊Esc按鍵,輸入:wq保存並退出),也可以點擊這裏提取碼wsha)進行下載後,進行相應的修改,然後使用Xftp傳輸到相應的文件夾內進行替換
    修改配置文件
  2. 輸入命令vi core-site.xml(或者直接修改下載文件後上傳),修改core-site.xml文件
    ([root@master hadoop]# vi core-site.xml)
    該配置文件無需作改動
<configuration>
 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>

    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>

    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>

    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
</configuration>
  1. 輸入命令vi hdfs-site.xml(或者直接修改下載文件後上傳),修改hdfs-site.xml文件
    ([root@master hadoop]# vi hdfs-site.xml)
    由於 dfs.namenode.name.dir 和 dfs.datanode.data.dir 對應了兩個新的目錄,因此後續會進行相應的目錄創建
    dfs.replication 爲分佈式存儲的副本數,默認爲3
    該配置文件無需作改動
<configuration>
  <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/hadoop/hdfs/name</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/hadoop/hdfs/data</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave1:9001</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>
  1. 輸入命令vi mapred-site.xml(或者直接修改下載文件後上傳),修改mapred-site.xml文件
    ([root@master hadoop]# vi mapred-site.xml)
    該配置文件無需作改動
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  1. 輸入命令vi yarn-site.xml(或者直接修改下載文件後上傳),修改yarn-site.xml文件
    ([root@master hadoop]# vi yarn-site.xml)
    該配置文件無需作改動,其中的master可以替換爲其IP地址(即172.16.29.94),但是非常不利於後續的維護(比如master節點的IP地址發生變化)
<configuration>
<!-- Site specific YARN configuration properties -->
	<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>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>
</configuration>
  1. 輸入命令rm -f slaves該文件禁止在本機修改之後上傳,問題在於Windows系統的回車),刪除slaves文件
    ([root@master hadoop]# rm -f slaves)
    輸入命令vi slaves,創建並編寫該文件
    ([root@master hadoop]# vi slaves)
    在文件中輸入以下內容並保存
    該文件爲設置用作DataNode的虛擬機
    通過這個設定可以發現,在這三臺虛擬機中,master既作爲NameNode也作爲DataNode,slave1作爲DataNode,slave2作爲DataNode
    其中的master、slave1、slave2可以替換爲其IP地址,但是非常不利於後續的維護(比如某節點的IP地址發生變化)
master
slave1
slave2

特別說明:其餘各虛擬機暫時無需執行“修改Hadoop配置文件1”操作,後文會有相關介紹

創建目錄

在/hadoop目錄下創建數據存放的文件夾temp、hdfs、hdfs/data、hdfs/name

  1. 輸入cd ~,進入根目錄
  2. 輸入cd hadoop/,進入/hadoop目錄
    ([root@master ~]# cd hadoop/)
  3. 輸入mkdir /hadoop/tmp,創建tmp目錄
    ([root@master hadoop]# mkdir /hadoop/tmp)
  4. 輸入mkdir /hadoop/hdfs,創建hdfs目錄
    ([root@master hadoop]# mkdir /hadoop/hdfs)
  5. 輸入mkdir /hadoop/hdfs/name,創建hdfs/name目錄
    ([root@master hadoop]# mkdir /hadoop/hdfs/name)
  6. 輸入mkdir /hadoop/hdfs/data,創建hdfs/data目錄
    ([root@master hadoop]# mkdir /hadoop/hdfs/data)

特別說明:其餘各虛擬機暫時無需執行“創建目錄”操作,後文會有相關介紹

修改Hadoop配置文件2

  1. 輸入cd ~,進入根目錄
  2. 輸入cd /hadoop/hadoop-2.7.7/etc/hadoop/,進入/hadoop目錄
    ([root@master ~]# cd /hadoop/hadoop-2.7.7/etc/hadoop/)
  3. 輸入vi hadoop-env.sh,點擊i進入輸入模式,找到export JAVA_HOME=${JAVA_HOME},將其替換爲JDK的安裝路徑,即export JAVA_HOME=/usr/local/java/jdk1.8.0_151,點擊Esc按鍵,輸入:wq保存並退出
  4. 輸入vi yarn-env.sh,點擊i進入輸入模式,在末尾添加export JAVA_HOME=/usr/local/java/jdk1.8.0_151,點擊Esc按鍵,輸入:wq保存並退出

特別說明:其餘各虛擬機暫時無需執行“修改Hadoop配置文件2”操作,後文會有相關介紹

配置Hadoop環境變量

  1. 輸入vi /etc/profile,修改profile配置文件
    點擊i進入輸入模式
    在文件末尾添加export HADOOP_HOME=/hadoop/hadoop-2.7.7,即Hadoop安裝路徑
    繼續添加export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  2. 輸入命令source /etc/profile,使配置文件生效
    特別說明:所有虛擬機均執行“配置Hadoop環境變量”操作

完成其餘虛擬機的相關配置

特別說明:“完成其餘虛擬機的相關配置”有兩種選擇
選擇1(推薦):將其餘各虛擬機依次按照“修改Hadoop配置文件1”、“創建目錄”、“修改Hadoop配置文件2”三項操作
選擇2:在已經配置好的master節點中輸入命令cd ~進入根目錄,輸入cd /hadoop/進入該目錄,依次輸入命令scp -r hadoop-2.7.7/ slave1:/hadoop/scp -r hadoop-2.7.7/ slave2:/hadoop/
即([root@master hadoop]# scp -r hadoop-2.7.7/ slave1:/hadoop/)和([root@master hadoop]# scp -r hadoop-2.7.7/ slave2:/hadoop/)
該操作爲將master結點hadoop目錄中的hadoop-2.7.7目錄中所有內容遞歸地複製到slave1和slave2的/hadoop目錄下
不推薦的原因是在實際操作中,當hadoop-2.7.7目錄中的所有內容複製到slave1和slave2時,出現了有的節點不存在master已經創建的/hadoop/hdfs/data或者/hadoop/hdfs/name

使配置文件重新生效

輸入source /etc/profile,使配置文件生效
特別說明:所有虛擬機均執行“使配置文件重新生效”操作

格式化NameNode

輸入命令hdfs namenode -format,進行格式化
特別說明:除主節點外其他虛擬機不需要執行“格式化NameNode”操作

啓動Hadoop

輸入命令start-all.sh,啓動Hadoop
在主節點輸入命令jps,應該顯示如下6項信息

4736 ResourceManager
23249 Jps
1125 StandaloneAgent
4037 NameNode
4873 NodeManager
11881 DataNode

在slave1節點輸入命令jps,應該顯示如下5項信息

1109 StandaloneAgent
9366 Jps
15256 DataNode
5821 SecondaryNameNode
6189 NodeManager

在slave2節點輸入命令jps,應該顯示如下4項信息

16225 DataNode
1113 StandaloneAgent
23548 Jps
3853 NodeManager

注意:根據每個人的需求不同,其顯示結果也不盡相同,比如我的主節點也用作了DataNode,因此會顯示存在DataNode端口

打開瀏覽器,輸入主節點虛擬機(master)的 IP地址+端口8088(如172.16.29.94:8088),點擊頁面左側的Nodes,會出現集羣內所有虛擬機的信息
8088端口
打開瀏覽器,輸入主節點虛擬機(master)的 IP地址+端口50070(如172.16.29.94:50070),點擊頁面上方的Datanodes,會出現集羣內所有虛擬機的信息
50070端口

多臺Linux虛擬機Hadoop集羣的安裝與部署到此就告一段落
有疑問的朋友可以在下方留言或者私信我,我儘量儘早回答
歡迎各路大神指點、交流!
求關注!求點贊!求轉發!

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