1. 程式人生 > >搭建VM的虛擬機器下hadoop叢集環境

搭建VM的虛擬機器下hadoop叢集環境

前言

大家都知道,Hadoop的部署方式可分為

  • 單機模式
  • 偽分散式
  • 完全分散式

本篇主要講解的就是完全分散式。

搭建完全分散式的叢集環境,需要多臺的硬體裝置,作為初學者,為了搭建叢集去買多臺電腦,多少有點不現實,所以這裡我採用的是VM虛擬機器,模擬搭建一個由三臺機器組成的叢集。

要想成功搭建的分散式環境,需要具備安裝和操作VM虛擬機器,使用Ubuntu系統的基本命令,Linux下安裝Java以及Hadoop等相關技能。不過不會的話,也不用太擔心,我會盡量把我的操作過程寫得詳細一點。

具體的搭建過程可以分為以下幾個階段:

  • 安裝虛擬機器
  • 安裝和配置Ubuntu
  • 安裝和配置Java環境
  • 安裝和配置Hadoop

安裝虛擬機器

VMware Workstation 下載 http://rj.baidu.com/soft/detail/13808.html?ald
啟用碼百度一搜一大堆,這裡就不寫了,安裝過程也比較簡單,實在不會的,百度上也有圖解的教程,請自行搜尋。

安裝和配置Ubuntu

Ubuntu 下載https://www.ubuntu.com/download

下面介紹如何在虛擬機器中安裝Ubuntu作業系統,我們需要安裝三臺虛擬機器,分別命名為Hadoop Master(以下簡稱master),Hadoop Slave1(以下簡稱slave1

)和Hadoop Slave2(以下簡稱slave2),以下以安裝master為例

1、首先,開啟安裝好的虛擬機器VMware Workstation 12 Pro(以下簡稱VM) 
這裡寫圖片描述

2、依次點選 檔案 → 新建虛擬機器 
這裡寫圖片描述

3、選擇 自定義(高階)(C),點選 下一步 
這裡寫圖片描述

4、硬體的相容性選擇,使用預設的設定,直接點選 下一步 
這裡寫圖片描述

5、點選 瀏覽,選擇下載好的Ubuntu的iso檔案,點選 下一步 
這裡寫圖片描述

6、填寫安裝資訊,點選 下一步 
這裡寫圖片描述

7、命名虛擬機器,為了方便我們後續識別,安裝第一個系統時,我們命名使用Hadoop Master

(當我們安裝第二個和第三個系統時分別使用Hadoop Slave1Hadoop Slave2,用於表示第一個是主伺服器,第二個和第三個屬於從伺服器),點選瀏覽,選擇一個本機的空間稍微大一點的目錄用於存放我們安裝系統的物理檔案,點選 下一步 
這裡寫圖片描述

8、處理器配置,根據自己機器的CPU情況來設定,比如我的是四核的,處理器數量就選擇4,處理器的核心數量使用預設的1就行,點選 下一步 
這裡寫圖片描述

9、設定記憶體,注意,必須是4MB的倍數,根據自己機器的記憶體來設定。比如,我的PC主機記憶體是8G,我為每臺虛擬機器設定1.5G(1536MB)的記憶體,主機剩餘3.5G記憶體,這樣主機不卡,虛擬機器記憶體也足夠使用。原則上說,給虛擬機器設定的記憶體總和不要超過PC主機的實體記憶體就行,只不過設定太高,主機就會變慢。 
這裡寫圖片描述

10、網路型別,這裡選擇使用橋接網路,因為我們需要主機與虛擬機器與網際網路,這三者都是通的,在安裝的過程中,才不會遇到麻煩。 
這裡寫圖片描述

11、I/O控制器和磁碟型別,都使用預設的選項即可,點選 下一步 
這裡寫圖片描述 
這裡寫圖片描述

12、選擇磁碟,選擇建立新的虛擬磁碟,點選 下一步 
這裡寫圖片描述

13、指定磁碟容量,也就是設定虛擬機器系統佔用主機的物理空間的大小,使用預設值即可。 
這裡寫圖片描述

14、指定磁碟檔案,預設即可,點選 下一步 
這裡寫圖片描述

15、點選 完成,等待虛擬機器系統安裝完成,安裝過程中,請保持網路暢通。

16、同理,安裝另外兩臺虛擬機器Hadoop Slave1Hadoop Slave2,都安裝好後,如下圖 
這裡寫圖片描述

17、分別設定每臺虛擬機器的固定IP,保證虛擬機器與虛擬機器與主機之間都能夠相互ping通。具體操作這裡就不贅述了,網上資料有很多,如果是公司電腦,讓網路管理員幫忙設定下,如果是自己的機器,看下自己的路由器的IP分配情況 
這裡寫圖片描述

18、我們要搭建一個由三臺機器組成的叢集,先配置虛擬機器的hostshostname,以便虛擬機器與虛擬機器與主機之間不用使用IP,使用hostname就可以相互識別,很方便。

192.168.8.230    master
192.168.8.231    slave1
192.168.8.232    slave2
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

以master為例,通過命令:

hadoop@master:~$ vi /etc/hostname
  • 1
  • 1

設定為master,另外兩臺虛擬機器分別設定為slave1slave2 
這裡寫圖片描述

hadoop@master:~$ vi /etc/hosts
  • 1
  • 1

三臺虛擬機器都設定成以下的配置 
這裡寫圖片描述

19、配置三臺虛擬機器之間的SSH無密碼登入

首先通過命令生成公匙:

hadoop@master:~$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  • 1
  • 1

這裡寫圖片描述

將公匙新增到authorized_keys檔案中:

hadoop@master:~$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  • 1
  • 1

這樣,localhost就可以無密碼登入了,看下效果:

hadoop@master:~$ ssh localhost
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-123-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

722 packages can be updated.
356 updates are security updates.

New release '14.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Tue Mar  7 14:40:15 2017 from slave1
hadoop@master:~$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

同理,將公匙複製到slave1slave2authorized_keys檔案中,就可以讓master無密碼登入slave1slave2了。

通過命令遠端複製:

hadoop@master:~$ scp ~/.ssh/id_dsa.pub hadoop@slave1:~/
hadoop@master:~$ scp ~/.ssh/id_dsa.pub hadoop@slave2:~/
  • 1
  • 2
  • 1
  • 2

這裡寫圖片描述

分別到slave1slave2機器上,新增master的公匙資訊到authorized_keys檔案中:

hadoop@slave1:~$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
  • 1
  • 1
hadoop@slave2:~$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
  • 1
  • 1

master上,測試一下效果: 
這裡寫圖片描述

同理:

  • slave1生成公匙,然後複製到masterslave2authorized_keys檔案中,這樣slave1就可以無密碼登入masterslave2
  • slave2生成公匙,然後複製到masterslave1authorized_keys檔案中,這樣slave2就可以無密碼登入masterslave1

以上就是三臺虛擬機器的SSH無密碼登入配置方法,大家可以根據實際的使用情況來設定,並不一定非要三臺都支援雙向的無密碼登入。

安裝和配置Java環境

安裝JDK: 下載 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

1、以master為例,下載完,解壓,這些最好都在hadoop使用者的根目錄下執行,可以避免在其他目錄沒有許可權的問題,解壓完在移動到/usr/lib/jvm/jdk1.8.0_121目錄下面,這個不是必須的,大家也可以移到其他目錄:

hadoop@master:~$ cd ~
hadoop@master:~$ tar -zxvf ~/jdk-8u121-linux-x64.tar.gz
hadoop@master:~$ sudo mv ~/jdk1.8.0_121 /usr/lib/jvm/
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

這裡寫圖片描述

2、配置環境變數

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

將上面的內容新增到~/.bashrc檔案中,注意,JAVA_HOME後面的路徑改成自己的安裝路徑:

hadoop@master:~$ vi ~/.bashrc
hadoop@master:~$ source ~/.bashrc
  • 1
  • 2
  • 1
  • 2

這裡寫圖片描述

使用Java -version命令檢視版本,如果出現以下資訊,說明配置成功了: 
這裡寫圖片描述

同樣,也把slave1slave2安裝和配置好java環境


安裝和配置Hadoop

hadoop下載 http://hadoop.apache.org/releases.html

hadoop叢集中每臺機器的配置都基本相同,我們先配置好master,然後複製到slave1slave2

1、下載並解壓,並重命名目錄為hadoop,移動到/usr目錄下去

hadoop@master:~$ tar -zxvf hadoop-2.2.0_x64.tar.gz
hadoop@master:~$ mv hadoop-2.2.0 hadoop
  • 1
  • 2
  • 1
  • 2

這裡寫圖片描述

hadoop@master:~$ sudo mv ~