VMware15+ubuntu16.01+Hadoop2.9.1環境搭建
在VM上用三臺ubuntu搭建Hadoop環境
本人由於學習大資料需要搭建Hadoop環境,由於技術比較菜,所以折騰了一個星期才搭好環境,
另外網上的很多教程都比較老,那些Hadoop版本很多都是零版的。
所以我想寫一篇完整詳細的教程來讓初學者儘快的搭好環境,進入大資料的學習。
所需環境:
VMware15 workstation pro
ubuntu16.01
Hadoop2.9.1
JDK1.8 和SSH
步驟
1、去官網下載VMware並安裝
下載地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
啟用密匙:YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8
2、在ubuntu官網下載ubuntu16.01,並在VMware15上安裝。
或者網盤連結:https://pan.baidu.com/s/1dBSgw1SoNRPQGQR2rHTNUA 提取碼:oftx
安裝步驟我就不贅述了,這個應該比較簡單。
3、在Linux上安裝hadoop之前,需要安裝兩個程式:
1)JDK1.6(或更高版本),本文采用JDK 1.8。Hadoop是Java編寫的程式,Hadoop的編譯及MapReduce都需要使用JDK。
因此,在安裝Hadoop前,必須安裝JDK1.6或更高版本。
①下載和安裝JDK 1.8
官網地址;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下載版本:jdk-8u181-linux-x64.tar.gz
解壓:
tar -zxvf jdk-8u181-linux-x64.tar.gz(根據具體安裝路徑而定)
將解壓後的檔案移動到/usr/local/java目錄(根據自己情況而定)
mv jdk-8u181-linux-x64.tar.gz /usr/local/java
②環境配置:
sudo vim /etc/profile
如果沒有vim,則輸入以下命令安裝
apt-get install vim
安裝完成後,輸入vim會進入vim的標準模式,這時按鍵盤的 i 進入插入模式
按Esc退出插入模式,進入標準模式,在這個模式下有幾個基本命令要掌握。
:wq 儲存並退出
i 進入插入模式
x 刪除當前游標的字元
dd 刪除當前行,並且儲存當前行到剪下板
p 貼上
:help <command> 檢視命令的幫助
上下左右移動游標
在檔案的最後新增如下配置:
JAVA_HOME=/usr/local/java/jdk1.8.0_181
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
配置環境變數的意義是為了可以在系統的任意位置使用jdk
告訴Ubuntu Java JDK的位置:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_181/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_181/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_181/bin/javaws" 1
將其設為預設方式:
sudo update-alternatives --set java /usr/local/java/jdk1.8.0_181/bin/java
sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_181/bin/javac
sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_181/bin/javaws
重新載入環境變數的配置檔案:
source /etc/profile
③驗證JDK是否安裝成功
輸入命令:
java -version
會出現如下JDK版本資訊
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
如果出現以上資訊,說明你的jdk已經配置好了(如果沒有,說明哪一步出了問題,
請重新安裝配置)
2)SSH(安裝外殼協議),推薦安裝OpenSSH.Hadoop需要通過SSH來啟動Slave列表中各臺機器的守護程序
,因此SSH也是必須安裝的,即使是安裝偽分佈版本(因為Hadoop並沒有區分叢集式和偽分散式)。
對於偽分散式,Hadoop會採用與叢集相同處理方式,即按次序啟動檔案conf/slaves中記載的主機上的程序,
只不過在偽分散式中Slave為localhost(即本身),所以對於偽分散式Hadoop,SSH也是一樣必須的。
確認已經連上網際網路,然後輸入命令
sudo apt-get install ssh
4、準備三臺ubuntu搭建區域網
先把虛擬機器關機,然後右鍵->管理->克隆,克隆兩個完整的虛擬機器,分別命名為slave1,slave2.
新增一個hadoop使用者,並賦予相應權利,我們接下來步驟都要在hadoop使用者下操作,
所以hadoop使用者要將hadoop的檔案許可權以及檔案所有者賦予給hadoop使用者
1)每個虛擬機器系統上都新增 hadoop 使用者,並新增到 sudoers
sudo adduser hadoop
sudo gedit /etc/sudoers
找到對應配置新增如下:
# User privilege specification
root ALL=(ALL:ALL) ALL
hadoop ALL=(ALL:ALL) ALL (這個為新增項)
2)切換到 hadoop 使用者
su hadoop
3)輸入以下命令修改主機名:
master虛擬機器設定為master,其他兩個虛擬機器分別設定為slave1、slave2
sudo vim /etc/hostname 主機名
4)修改ip地址
sudo vim /etc/hosts
三臺虛擬機器都修改配置如下:
127.0.0.1 localhost
127.0.1.1 localhost.localdomain localhost
192.168.232.128 master
192.168.232.129 slave1
192.168.232.130 slave2
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
對於很多在校大學生,可能用的都是校園寬頻,這裡有個坑,就是虛擬機器無法使用橋接模式,
這裡只能選擇nat模式。但是nat模式想要搭建一個虛擬機器區域網(也就是使得我們的三臺虛擬機器之間
可以互ping),需要自己手動設定IP地址,請看我的另一篇部落格,
有詳細步驟:https://blog.csdn.net/qq_40663357/article/details/82961166
試一下三臺虛擬機器之間能不能相互ping通,如果可以的話,就可以開始配置ssh免密登入了。
5、配置SSH免密碼登入
1)配置 master、slave1 和 slave2 節點可以通過 SSH 無密碼互相訪問
這裡的所有操作都是在hadoop使用者下操作的。
永久關閉防火牆(root使用者)
chkconfig iptables off
驗證ssh是否安裝成功
ssh -V
出現以下,說明安裝成功
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 Mar 2016
建立一個.ssh檔案
sudo mkdir .ssh
再改一下.ssh的檔案許可權擁有者
sudo chown -R hadoop .ssh
輸入以下命令,生成ssh公匙
#遇到提示回車即可,最後顯示圖形為公匙的指紋加密
ssh-keygen -t rsa
把公鑰加到用於認證的公鑰檔案中,這裡的authorized_keys是用於認證的公鑰檔案。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#將公匙發至從節點的slave1、slave2使用者
[[email protected] ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[[email protected] ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[[email protected] ~]$ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
注意:對於完全分佈來說,只在主節點配置SSH無密碼連結即可,之後把公匙發至從節點
2)驗證ssh免密登入配置是否成功
[[email protected] ~]$ssh slave1
#如果沒有出現輸入密碼提示則表示安裝成功,執行這條命令後會遠端登入從節點,返回主節點需執行exit
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
38 packages can be updated.
0 updates are security updates.
Last login: Sat Oct 6 18:05:28 2018 from 192.168.232.128
6、安裝配置Hadoop
1)官網下載Hadoop2.9.1
或者網盤連結:https://pan.baidu.com/s/1ncW9uk9OU69kkBseRmB3Jw 提取碼:i3el
#所有操作都是在hadoop使用者下
解壓
tar -zxvf hadoop-2.9.1.tar.gz
移動檔案到/home/master/hadoop
mv hadoop-2.9.1.tar.gz /home/master/hadoop
修改許可權
sudo chown -R hadoop ./hadoop
2)配置 hadoop 的環境變數
vim /etc/bash.bashrc
在檔案最後加上如下配置:
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
執行source命令:
source /etc/bash.bashrc
在任意位置試一下hadoop
hadoop version
出現以下資訊,說明配置成功
Hadoop 2.9.1
Subversion https://github.com/apache/hadoop.git -r e30710aea4e6e55e69372929106cf119af06fd0e
Compiled by root on 2018-04-16T09:33Z
Compiled with protoc 2.5.0
From source with checksum 7d6d2b655115c6cc336d662cc2b919bd
This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-2.9.1.jar
3)配置Hadoop檔案
cd /home/master/hadoop-2.9.1/etc/hadoop
conf/Hadoop-env.sh 配置更改如下:
# The java implementation to use.
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export HADOOP_HOME=/home/master/hadoop-2.9.1
export PATH=$PATH:/home/master/hadoop-2.9.1/bin
conf/core-site.xml 配置更改如下:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp</value>
</property>
</configuration>
conf/hdfs-site.xml 配置更改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
conf/mapred-site.xml 配置更改如下:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
slaves 更改如下:
slave1
slave2
增加一個master檔案,內容為master
sudo gedit master
4)向 slave1 和 slave2 節點複製 hadoop2.7.1 整個目錄至相同的位置
進入[email protected]節點hadoop目錄下使用
scp -r hadoop-2.9.1 [email protected]:~/
scp -r hadoop-2.9.1 [email protected]:~/
5)啟動Hadoop
[email protected]:~$ hadoop namenode -format
結尾顯示如下則初始格式化系統成功
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.190.128
************************************************************/
注意啟動Hadoop是在主節點上執行命令,其他節點不需要,主節點會自動按照檔案配置啟動從節點
[email protected]:~$ start-all.sh
執行結果如下則成功
[email protected]:~$ start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-namenode-master.out
slave1: starting datanode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-datanode-slave1.out
slave2: starting datanode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-datanode-slave2.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.7.1/logs/hadoop-hadoop-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.7.1/logs/yarn-hadoop-resourcemanager-master.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop-2.7.1/logs/yarn-hadoop-nodemanager-slave1.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop-2.7.1/logs/yarn-hadoop-nodemanager-slave2.out
可以通過jps命令檢視各個節點執行的程序檢視執行是否成功。
master節點:
6018 Jps
5748 ResourceManager
5049 NameNode
5242 SecondaryNameNode
salve1節點:
3444 NodeManager
3621 Jps
3242 DataNode
slave2節點:
3282 NodeManager
2853 DataNode
3517 Jps
輸入以下命令檢視叢集狀態
Hadoop dfsadmin -report
Hadoop環境已經配置好了。