VMware + Ubuntu18.04 搭建Hadoop叢集環境的圖文教程
https://www.jb51.net/article/209042.htm
0.VMware克隆虛擬機器(準備工作,克隆3臺虛擬機器,一臺master,兩臺node)
- 先在虛擬機器中關閉系統
- 右鍵虛擬機器,點選管理,選擇克隆
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,這樣就安裝好了。