Hadoop3.0完全分散式叢集安裝部署

郭遠威發表於2018-03-16

 

1. 配置為1個namenode(master主機),2個datanode(slave1主機+slave2主機)的hadoop叢集模式,

在VMWare中構建3臺執行Ubuntu的機器作為伺服器;

關閉作業系統防火牆:ubuntu下預設是關閉的,可以通過命令ufw status檢查;

master主機配置如下:

vim /etc/hostname 編輯此檔案,設定主機名為master

vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:

192.168.107.128 master

192.168.189.129 slave1

192.168.189.130 slave2

 

同理配置slave1,

vim /etc/hostname 編輯此檔案,設定主機名為slave1

vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:

192.168.107.128 master

192.168.189.129 slave1

192.168.189.130 slave2

 

同理配置slave2主機

vim /etc/hostname 編輯此檔案,設定主機名為slave2

vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:

192.168.107.128 master

192.168.189.129 slave1

192.168.189.130 slave2

 

2. 下載安裝jdk1.8.0_91,並設定好環境變數;

如下命令在master機器上配置:

vim .bashrc 編輯此檔案,新增如下內容:

export JAVA_HOME=/usr/local/jdk1.8.0_91

export JAVA_BIN=$JAVA_HOME/bin

export JAVA_LIB=$JAVA_HOME/lib

export
CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar

export PATH=$JAVA_BIN:$PATH

退出root賬戶,重新登陸,使環境變數生效。

master,slave1,slave2三臺伺服器配置一樣。

 

3. 安裝配置ssh, 使得master主機能夠免密碼ssh登入到所有slave主機,因為叢集裡面的主機需要在後臺通訊。

(1)安裝:

SSH分客戶端openssh-client和openssh-server,如果你只是想登陸別的機器的SSH只需要安裝openssh-client(ubuntu有預設 安裝客戶端),如果要使本機開放SSH服務就需要安裝openssh-server。

(2) 配置免密碼登陸:

在master主機上登陸root使用者, 輸入命令:ssh-keygen -t
rsa

然後根據提示一直按enter,就會按預設的選項生成的金鑰對(私鑰id_rsa和公鑰id_rsa.pub)並儲存在/root/.ssh資料夾中;

將master伺服器上的公鑰拷貝到slave1上,輸入命令:ssh-copy-id root@slave1(root為slave1上的賬戶)

將master伺服器上的公鑰拷貝到slave2上,輸入命令:ssh-copy-id root@slave2(root為slave2上的賬戶)

可以測試免密碼登陸是否成功,輸入命令:ssh slave1或ssh slave2來測試,若不用密碼錶是配置成功

 

 

4. 下載編譯好的hadoop二進位制檔案在master主機上

wget

解壓:tar -zxvf
hadoop-3.0.0-src.tar.gz
/usr/local/hadoop-3.0.0

 

5. 在master主機上設定相關環境變數,將hadoop的bin目錄下的可執行檔案加入到系統環境

vim .bashrc 編輯此檔案,新增如下內容:

export
HADOOP_HOME=/usr/local/hadoop-3.0.0

export
PATH=$PATH:$HADOOP_HOME/bin

使root使用者重新登陸後,此環境變數生效

同理配置slave1和slave2兩臺主機,重新用root賬戶登陸後使環境變數生效

 

6. 配置hadoop環境變數

vim /usr/local/hadoop-3.0.0/etc/hadoop/hadoop-env.sh

編輯hadoop的全域性配置檔案,設定JAVA_HOME環境變數:

export JAVA_HOME=/usr/local/jdk1.8.0_91

設定哪個使用者可以執行namenode和datanode命令

export HDFS_NAMENODE_USER=root

export HDFS_DATANODE_USER=root

export HDFS_SECONDARYNAMENODE_USER=root

設定哪個使用者可以啟動resourcemanager和弄得manager的命令

export YARN_RESOURCEMANAGER_USER=root

export YARN_NODEMANAGER_USER=root

 

執行source
hadoop-env.sh使環境變數生效

同理配置slave1和slave2兩臺主機

 

7. 建立相關目錄 ,依次在所有主機上執行

root@master:/usr/local/hadoop-3.0.0# mkdir tmp

root@master:/usr/local/hadoop-3.0.0# mkdir hdfs

root@master:/usr/local/hadoop-3.0.0# cd hdfs/

root@master:/usr/local/hadoop-3.0.0/hdfs# mkdir name

root@master:/usr/local/hadoop-3.0.0/hdfs# mkdir tmp

root@master:/usr/local/hadoop-3.0.0/hdfs# mkdir data

 

8. 配置核心配置檔案core-site.xml

在master主機上配置hdfs地址

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop-3.0.0/tmp</value>

<description>A base for other
temporary directories</description>

</property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value> #master為主機名

<description>The name of the default
file system</description>

</property>

</configuration>

 

上面/usr/local/hadoop-3.0.0/tmp為建立的臨時資料夾;master為主機名

 

9. 編輯hdfs-site.xml檔案,配置副本的個數及資料的存放路徑

 

<configuration>

<property>

<name>dfs.replication</name> --資料塊的副本數量

<value>2</value>

</property>

<property>

<name>dfs.namenode.name.dir</name> --後設資料存放路徑

<value>/usr/local/hadoop-3.0.0/hdfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name> --資料節點存放路徑

<value>/usr/local/hadoop-3.0.0/hdfs/data</value>

</property>

</configuration>

 

10. 配置mapred-site.xml

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

 

11. 配置yarn-site.xml檔案

<property>

<name>yarn.resourcemanager.address</name>

<value>master:18040</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>master:18030</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>master:18088</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>master:18025</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>master:18141</value>

</property>

<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>

 

12. 配置workers 檔案,列出所有workers的主機名

vim workers

slave1

slave2

hdfs分散式檔案系統下的datanode程式和YARN下面的nodemanager程式會在這些workers主機上啟動

注意:hadoop2.x配置的是slaves檔案

 

13. 遠端複製hadoop3.0.0檔案下所有檔案到slave1和slave2的主機上

scp -r hadoop-3.0.0 root@slave1:/usr/local/

scp -r hadoop-3.0.0 root@slave2:/usr/local/

 

14. 啟動hdfs叢集

在master主機上執行以下命令,格式化hdfs檔案系統

$HADOOP_HOME/bin/hdfs namenode -format

 

在master主機上執行以下命令,初始化namenode節點

$HADOOP_HOME/bin/hdfs --daemon start
namenode

 

分別在所有slave節點上執行以下命令,初始化datanode節點

$HADOOP_HOME/bin/hdfs --daemon start
datanode

 

如果前面的ssh配置成功,也可以直接

$HADOOP_HOME/sbin/start-dfs.sh 啟動所有程式

(確保ssh master免密碼登陸能成功,一開始我可以免密碼登陸ssh slave1和ssh slave2,不能免密碼登陸ssh master,後面再master主機目錄下,切換到~/.ssh目錄,執行cat id_rsa.pub >>
authorized_keys就可以了)

 

15. 啟動YARN

在master主機上啟動resourcemanage程式

$HADOOP_HOME/bin/yarn
--daemon start resourcemanager

 

在所有slave節點上啟動nodemanager程式

$HADOOP_HOME/bin/yarn
--daemon start nodemanager

 

如果前面的ssh配置成功,也可以直接

$HADOOP_HOME/sbin/start-yarn.sh 啟動所有程式

 

16. 通過網頁訪問hdfs叢集的狀態

http://localhost:9870

預設埠時9870,可以通過hdfs-default.xml配置檔案裡面的 dfs.namenode.http-address配置

 

 

hdfs叢集狀態

 

17. 通過網頁訪問YARN叢集的狀態

預設埠是8088,可通過yarn-site.xml檔案裡面的yarn.resourcemanager.webapp.address配置

 

 

YARN管理下的hadoop叢集狀態

 

 

 

相關文章