1. 程式人生 > >VMware15+ubuntu16.01+Hadoop2.9.1環境搭建

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環境已經配置好了。