1. 程式人生 > 其它 >VMware + Ubuntu18.04 搭建Hadoop叢集環境的圖文教程

VMware + Ubuntu18.04 搭建Hadoop叢集環境的圖文教程

https://www.jb51.net/article/209042.htm

0.VMware克隆虛擬機器(準備工作,克隆3臺虛擬機器,一臺master,兩臺node)

  1. 先在虛擬機器中關閉系統
  2. 右鍵虛擬機器,點選管理,選擇克隆

        3.點選下一步,選擇完整克隆,選擇路徑即可


注:以上步驟是模擬了三臺計算機

1.建立Hadoop使用者(在master,node1,node2執行)

順序執行以下命令即可

1.建立hadoop使用者

sudo useradd -m hadoop -s /bin/bash

設定使用者密碼(輸入兩次)

sudo passwd hadoop

新增許可權

sudo adduser hadoop sudo
 

切換到hadoop使用者(這裡要輸入剛剛設定的hadoop密碼)

su hadoop

執行截圖展示(以master虛擬機器為例)

 

 

 

2.更新apt下載源(在master,node1,node2執行)

sudo apt-get update

截圖展示(以master為例)

 

 

 

3. 安裝SSH、配置SSH免密登入 (在master,node1,node2執行)

1.安裝SSH

sudo apt-get install openssh-server

2.配置SSH免密登入

ssh localhost
exit 
cd 
~/.ssh/ ssh-keygen -t rsa #一直按回車 cat ./id_rsa.pub >> ./authorized_keys

3.驗證免密

ssh localhost
exit 
cd ~/.ssh/ 
ssh-keygen -t rsa #一直按回車
cat ./id_rsa.pub >> ./authorized_keys

截圖展示(以master為例)

 

 

 

 

4.安裝Java環境 (在master,node1,node2執行)

1.下載 JDK 環境包

sudo apt-get install default-jre default-jdk

2.配置環境變數檔案

vim ~/.bashrc

3.在檔案首行加入

export JAVA_HOME=/usr/lib/jvm/default-java

4.讓環境變數生效

source ~/.bashrc

5.驗證

java -version

截圖展示(以master為例)

 

 

 

5.修改主機名(在master,node1,node2執行)

1.將檔案中原有的主機名刪除,master中寫入master,node1中寫入node1,node2…(同理)

sudo vim /etc/hostname

重啟三個伺服器

reboot

 

重啟成功後,再次連線會話,發現主機名改變了

截圖展示(以node1為例)

 

 

 

6.修改IP對映(在master,node1,node2執行)

檢視各個虛擬機器的ip地址

ifconfig -a

 

如果有報錯,則下載 net-tools ,然後再執行即可看到

sudo apt install net-tools

 

如下圖,紅色方框內的就是 本臺虛擬機器的 ip 地址

 

 

 3臺虛擬機器中都需要在 hosts 檔案中加入對方的ip地址

sudo vim /etc/hosts

以master為例截圖展示

 

 

 

7.SSH免密登入其他節點(在master上執行)

在Master上執行

cd ~/.ssh 
rm ./id_rsa*  # 刪除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回車就可以
cat ./id_rsa.pub >> ./authorized_keys
scp ~/.ssh/id_rsa.pub hadoop@node1:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@node2:/home/hadoop/

 

 

 在node1,node2都執行

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就刪掉

 

 

 驗證免密登入

ssh node1
exit
ssh node2
exit

以master為例截圖展示

 

 

 

8.安裝hadoop3.2.3(在master中執行)

有些映象的下載網址失效了,這裡貼出官網的下載地址。

下載網址:https://www.apache.org/dyn/closer.cgi/hadoop/common/

注:官網下載速度比較慢,通過清華映象下載的

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.3/

下載好,之後通過VMware-Tools上傳到master的/home/hadoop中

注:通過設定共享盤解決上傳路徑的問題

 

 

 

 

 

 下載好,之後通過VMware-Tools上傳到master的/home/hadoop中

解壓

cd /home/hadoop
sudo tar -zxf hadoop-3.2.3.tar.gz -C /usr/local #解壓
cd /usr/local/
sudo mv ./hadoop-3.2.3/ ./hadoop  # 將資料夾名改為hadoop
sudo chown -R hadoop ./hadoop # 修改檔案許可權

驗證

cd /usr/local/hadoop
./bin/hadoop version

 

 

 

9.配置hadoop環境(這一步需要很仔細)

配置環境變數

vim ~/.bashrc

 

在首行中寫入

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

 

使得配置生效

source ~/.bashrc

 

建立檔案目錄(為後面的xml做準備)

cd /usr/local/hadoop
mkdir dfs
cd dfs
mkdir name data tmp
cd /usr/local/hadoop
mkdir tmp

 

配置hadoop的java環境變數

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vim $HADOOP_HOME/etc/hadoop/yarn-env.sh

 

 

兩個的首行都寫入

export JAVA_HOME=/usr/lib/jvm/default-java

 

(master中)配置nodes

cd /usr/local/hadoop/etc/hadoop

 

刪除掉原有的localhost,因為我們有2個node,就把這2個的名字寫入

vim workers
node1
node2

 

 

配置 core-site.xml

vim core-site.xml

 

因為我們只有一個namenode,所以用fs.default.name,不採用fs.defalutFs

其次確保/usr/local/hadoop/tmp這個目錄存在

<configuration>
 <property>
 <name>fs.default.name</name>
 <value>hdfs://Master:9000</value>
 </property>
 
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/usr/local/hadoop/tmp</value>
 </property>
</configuration>

 

配置 hdfs-site.xml

vim hdfs-site.xml

 

dfs.namenode.secondary.http-address確保埠不要和core-site.xml中埠一致導致佔用

確保/usr/local/hadoop/dfs/name :/usr/local/hadoop/dfs/data 存在

因為我們只有2個node,所以dfs.replication設定為2

<configuration>
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>Master:9001</value>
 </property>
 
 <property>
 <name>dfs.namenode.name.dir</name>
 <value>file:/usr/local/hadoop/dfs/name</value>
 </property>
 
 <property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/usr/local/hadoop/dfs/data</value>
 </property>
 
 <property>
 <name>dfs.replication</name>
 <value>2</value>
 </property>
</configuration>

 

 

配置mapred-site.xml

vim mapred-site.xml
<configuration>
 <property> 
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

 

 

配置 yarn-site.xml

vim 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>
 
 <property>
 <name>yarn.nodemanager.vmem-check-enabled</name>
 <value>false</value>
 </property>
</configuration>

 

 

將hadoop壓縮

cd /usr/local
tar -zcf ~/hadoop.master.tar.gz ./hadoop #壓縮
cd ~

 

複製到node1中

scp ./hadoop.master.tar.gz node1:/home/hadoop

 

複製到node2中

scp ./hadoop.master.tar.gz node2:/home/hadoop

 

在node1、node2上執行
解壓

sudo rm -r /usr/local/hadoop # 刪掉舊的(如果存在)
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local #解壓
sudo chown -R hadoop /usr/local/hadoop #修改許可權

 

首次啟動需要先在 Master 節點執行 NameNode 的格式化,之後不需要

hdfs namenode -format 

 

(注意:如果需要重新格式化 NameNode ,才需要先將原來 NameNode 和 DataNode 下的檔案全部刪除!!!!!!!!!)

#看上面的文字,不要直接複製了
rm -rf $HADOOP_HOME/dfs/data/*
rm -rf $HADOOP_HOME/dfs/name/*

 



10.啟動 (在master上執行)

start-all.sh
mr-jobhistory-daemon.sh start historyserver

 

master中,出現Warning不影響

jps

 

執行截圖展示

 

 

11.關閉hadoop叢集(在master上執行)

stop-all.sh
mr-jobhistory-daemon.sh stop historyserver

執行截圖展示

 

 

注:搭建過程中遇到的兩個小問題

1.ubuntu 解決“無法獲得鎖 /var/lib/dpkg/lock -open (11:資源暫時不可用)”的方法

在ubuntu系統的termial下,用apt-get install 安裝軟體的時候,如果在未完成下載的情況下將terminal close。此時 apt-get程序可能沒有結束。結果,如果再次執行apt-get install 命令安裝如今,可能會發生下面的提示:
    無法獲得鎖 /var/lib/dpkg/lock - open (11: 資源暫時不可用)
    無法鎖定管理目錄(/var/lib/dpkg/),是否有其他程序正佔用它?

強制解鎖,命令

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

2.yum install 沒有已啟用的倉庫

 

 ubuntu預設軟體包管理器不是yum,而是dpkg,安裝軟體時用apt-get你說的網上常見法解決方法,命令改為程式碼:sudo apt-get install net-tools,這樣就安裝好了。