1. 程式人生 > >Centos7 實現Hadoop-2.9.1分散式叢集搭建和部署(三臺機器)

Centos7 實現Hadoop-2.9.1分散式叢集搭建和部署(三臺機器)

一、準備三臺虛擬機器

hadoop 192.168.131.128
localhost131 192.168.131.131
localhost134 192.168.131.134

(以上是我的三臺虛擬機器的hostname 和 ip)

hadoop 是 master 的 hostname

剩下的兩個是 slave 的 hostname

linux 的 hostname 需要自己手動修改 不然會是 localhost.localdomain

修改 hostname 的命令是:

 hostnamectl set-hostname hadoop

修改 hosts 檔案,(三臺虛擬機器都要新增)新增:

192.168.131.131 localhost131
192.168.131.134 localhost134
192.168.131.128 hadoop

二、然後在 master 機器上配置通過 SSH 遠端複製過去就行了,接下來幾乎都是在 master 機器上操作

1->安裝 jdk

在官網上下載 jdk 是 linux 版本的 (我是在 wins 上下載好之後通過 FTP 上傳的 Centos 上的)

注意記得檢視 Centos 是 64 位的還是 32 位的

檢視的命令:

uname -r

字尾是 X86_64 是 64 位的,否則是 32 位的

解壓 jdk,將 jdk 新增 PATH 中:

vim /etc/profile
    #新增內容:
    export JAVA_HOME=/home/jdkHome #jdk壓縮包解壓位置
    export PATH=$PATH:$JAVA_HOME/bin

!!!!!退出vim後,別忘了重啟檔案!!!!
source /etc/profile

2->安裝 Hadoop-2.9.1

這是 hadoop 目前比較穩定的版本

將檔案通過 FTP 上傳的 Centos 上 /home/hadoopCluster 並解壓

3->配置 Hadoop-2.9.1

進入到 Hadoop 目錄下的 etc/hadoop 的目錄下(修改 6 個檔案)

① 修改檔案 hadoop-env.sh

找到 export JAVA_HOME=$JAVA_HOME 修改為 jdk 所在的路徑


②修改檔案 core-site.xml

<configuration>
    <!-- 指定HDFS老大(namenode)的通訊地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop:8020</value>
    </property>
    <!-- 指定hadoop執行時產生檔案的儲存路徑 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoopCluster/hadoop-2.9.1/tmp</value>
    </property>
</configuration>
③修改檔案 hdfs-site.xml
<configuration>

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

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

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

該配置檔案中我之前配置 namenode 和 datanode 的路徑,到最後格式化 namenode 的時候,namenode 沒有啟動,檢視 logs 目錄下的啟動日誌時發現,format 的時候,會報找不到 namenode 的錯誤,jps 檢視 java 程序的時候或發現 namenode 沒有啟動,所以就將 namenode 和 datanode 的路徑設定為預設。

④修改檔案 mapred-site.xml

mapred-site.xml 檔案當你修改時會發現沒有這個檔案,將 mapred-site.xml.template 檔案重新命名為 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>
    <!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

⑥修改檔案 slaves

localhost131
localhost134


4->修改完成了接下是配置 SSH 免密登入

在這裡我使用 root 超級管理員登陸的,所以進入 /root 目錄下

執行命令 ls


進入目錄 .ssh  --> cd .ssh

ssh-keygen -t rsa
mv id_rsa_pub authorized_keys
ssh-copy-id [email protected]
ssh-copy-id [email protected]

配置完以上操作之後測試 SSH

ssh localhost131     !!退出 SSH 命令是 exit
ssh localhost134

不需要輸入密碼證明 SSH 配置成功,接下來就是遠端複製檔案,將 jdk 還有 hadoop 複製到另外兩臺機器上

注意:以上操作都是在一臺機器上完成的 master (hadoop : 192.168.131.128)

5->將 Hadoop 新增到 PATH 中去

vim /etc/profile
export JAVA_HOME=/home/jdkHome/jdk1.8.0_171
export HADOOP_HOME=/home/hadoopCluster/hadoop-2.9.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

6->遠端複製檔案

進入目錄 /home 資料夾下(因為 jdk 和 hadoop 檔案都在這個資料夾下)

scp -r jdkHome [email protected]
scp -r hadoopCluster [email protected]
scp -r jdkHome [email protected]
scp -r hadoopCluster [email protected]

7->將另外兩臺機器也配置 jdk 全域性環境

ssh 複製過去的是以檔案的形式傳輸的,所以不用解壓,直接修改 profile 檔案就行了,修改完之後,hadoop 不用再修改了,s三臺機器 hadoop 配置都是一樣的 , 注意:如果  jdk 的路徑有不同,則需要修改 hadoop 配置檔案 hadoop-env.sh 檔案,將裡面的 JAVA_HOME 配置成該機器的路徑

8->格式化 master (hadoop:192.168.131.128) 的 namenode

hdfs namenode -format


9->啟動 Hadoop (master)

進去 sbin 目錄下 : ./start-all.sh

 另外兩臺機器:jps


測試:192.168.131.128:50070 進入 namenode 的管理介面

          192.168.131.128:8088   進入resourceManager的管理介面


啟動完成