Win10平臺下搭建hadoop分佈式系統


1、安裝Oracle VM VirtualBox

2、在VirtualBox虛擬中添加3個虛擬主機,分別命令爲Linux1,Linux2,Linux3

注:我們建的虛擬主機都是Ubuntu版本的Linux主機

3、在設置>存儲>虛擬光驅中添加Ubuntu鏡像

注:如果沒有虛擬光驅,可以自己添加一個留空的虛擬光驅,如下圖:

4、虛擬機網絡設置

1)在新建虛擬電腦的時候,默認只設置了網卡1,如下圖:

注:網絡地址轉換(NAT)的時候,如果主機插了網線,虛擬機可以正常上網.但是如果虛擬機中有多個虛擬電腦,則它們的ip都相同,格式爲:10.0.x.x

2)如果要裝hadoop集羣的話,我們希望每個節點都有一個私有ip,以實現他們的互聯

3)因此,我們可以給虛擬主機添加一個網卡2,此網卡連接方式爲Host-Only,這種模式下,每個虛擬主機都會分配一個獨立的ip,如下:

注:僅主機(Host-Only)適配器這種方式會給每個虛擬電腦分配一個獨立ip,這個ip在主機的VirtualBox Host-Only Network的ip網段內.

4)我搭建的分佈式集羣式在win10平臺下進行的,由於VirtualBox不兼容win10,在安裝VirtualBox的時候不會在主機中創建Host-Only連接,換了幾個版本的BirtualBox,有的能創建,但是Host-Only方式依然找不到界面名稱。因爲我們網卡2設置爲Nat方式。如下介紹。

5)如何配置一個Nat網絡。

1.在VirtualBox主界面>管理>全局設定>網絡>Nat網絡>添加一個Nat網絡

2.在虛擬主機設置>網絡>網卡2中的連接方式選則Nat網絡,界面名稱選擇剛纔建立的Nat網絡。

注:1/3臺虛擬主機的網卡2的界面名稱都必須選同一個Nat網絡。

   2/如果系統中本來存在Nat網絡,可以不重建,每個虛擬主機選則同一個即可。

截圖如下:

6)這樣的網絡設置,可以保證虛擬機既可以上網,又有私有ip.

5、啓動虛擬主機,安裝Ubuntu操作系統

注:每臺主機的姓名要相同,計算機名必須不同。我們這裏計算機名取f1,f2,f3

6、耐心等待Ubuntu操作系統安裝完成!!!

7、虛擬主機和主機之間實現雙向拖放和共享粘貼板以及文件夾。(非必需步驟)

1)導致這些問題的原因是Linux中沒有安裝增強功能

2)安裝增強功能,點擊->設備>>安裝增強功能

3)如果點擊安裝增強功能提示沒有虛擬光驅,則在VirtualBox中添加一個留空的虛擬光驅即可.如下圖:

8、在每個Ubuntu系統中安裝jdk

1)官網下載後是一個jdk-8u51-linux-x64.tar.gz的壓縮包

2)sudo tar -zxvf jdk-8u51-linux-x64.tar.gz解壓得到jdk1.8.0_51文件夾

3)執行命令sudo gedit /etc/profile,打開etc下的profile文件,在文件最後添加環境變量。

export JAVA_HOME=/usr/java/jdk1.8.0_51

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

4)在終端輸入命令source profile重新加載環境變量,輸入java命令測試安裝結果,如果不行請重啓電腦再試。

9、配置hosts文件

1)在每臺虛擬主機的終端輸入ifconfig命令查看本機ip

2)由於我是在win10平臺,用的是Nat網絡,所以每臺主機分配的ip爲:

10.0.2.4;10.0.2.5;10.0.2.6.

3)執行sudo gedit /etc/hosts命令打開hosts文件,在host文件中添加每臺主機名以及它們的ip,如下圖紅框:

注:3臺虛擬主機都得配置hosts文件。

10、建立用戶組、新用戶(前面按照要求安裝Ubuntu的,這步可省略)

1)如果前面在安裝Ubuntu的時候,3臺虛擬主機的用戶名都相同並且主機名都不相同,那麼此步驟可以省略,我們可以直接使用當前的用戶和主機。

2)建立用戶組

sudo groupadd hadoop

3)創建用戶

sudo useradd -s /bin/bash -d /home/fim -m fim -g hadoop -G admin

-s:指定用戶的登陸shell

-d:指定用戶主目錄

-m:如果指定的主目錄不存在,則創建主目錄

-g:指定用戶所屬的用戶組,用“,”分隔多個附加組

-G:指定用戶所屬的附加組

4)如果系統報admin組不存在,那麼我們需要給hadoop用戶組分配權限,否則,該組用戶不能執行sudo操作。如:給hadoop用戶組賦sudo權限:

1.打開/etc/sudoers文件

2.添加%hadoop ALL=(ALL) ALL

3.截圖如下:

5)建議我們在安裝Ubuntu的時候就建好用戶名,這樣省得麻煩,否則在以後的分佈式搭建過程中都得切換到新建的用戶名下。

11、配置ssh免密碼登陸

1)Ubuntu默認只安裝了openssh-client,沒有安裝spenssh-server。查看進程如下圖:

2)執行命令:sudo apt-get install openssh-server安裝,完成後進程如下:

注:如果安裝時報錯說:openssh-server 還沒有可供安裝的候選者,請執行sudo apt-get update更新apt-get。

3)生成ssh公鑰和私鑰

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

注:1/如果生成過程中報.ssh目錄不存在,可以自己在~下創建該目錄

2/linux中“~”表示用戶目錄,比如此處就表示/home/fim

4)查看.ssh目錄下生成的文件

注:id_dsa.pub就是生成的公鑰

5)將公鑰加入自己所認證的密鑰之中

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

注:1/此處如果切換到.ssh目錄下,也可以執行cat id_dsa.pub >>authorized_keys

2/cat命令中,">>"符號表示追加,">"表示創建,千萬別搞錯了。

3/此處命令表示將id_dsa.pub文件內容追加到authorized_keys文件末尾

4/此處也可以用cp id_dsa.pub authorized_keys替代,因爲authorized_keys文件還沒有創建,如果文件不存在,cat和cp命令都會默認創建文件,cp命令表示將文件內容拷貝到另個文件中,需注意的是會覆蓋原文件內容。

注:此處我們用的cp命令拷貝後再查看文件就多了一個authorized_keys文件

6)執行ssh localhost命令連接本機

注:如果報錯connect to host localhost port 22: Connection refused就是因爲我們沒有安裝openssh-server

7)3臺虛擬主機都執行上面的操作

8)將f1主機的公鑰拷貝到f2,f3主機.ssh目錄下,使用scp命令,s=security

scp fim@f1:~/.ssh/id_dsa.pub ~/.ssh/h1_dsa.pub

查看拷貝後目錄

注:1/此處可以用@主機名的方式訪問遠程主機,就是因爲前面配置了hosts,否則此處要寫ip,顯得更加麻煩

2/訪問遠程主機需要輸入密碼,其實每次訪問遠程主機都需要輸入一次密碼,這就是我們配置ssh免密碼登陸的原因。

9)將拷貝過來的文件添加到我們所認證的密鑰之中

cat f1_dsa.pub >> authorized_keys

10)切換到f1主機,用命令ssh f2登陸f2主機,你會發現此時已經不再需要輸入f2了,登陸f3也一樣。

登陸之後,f1主機的命令行路徑是這樣,也就是說當前用戶是f2主機的fim

注:exit命令退出遠程主機。

11)在f1主機中,通過遠程訪問的方式,將f1的公鑰拷貝過來並添加到認證密鑰中。

scp fim@f1:~/.ssh/id_dsa.pub ~/.ssh/f1_dsa.pub

cat ~/.ssh/f1_dsa.pub >> ~/.ssh/authorized_keys

此處有點迷茫,這樣理解:這命令是爲了保證NameNode能夠無密碼連入自己本機。也可以說是NameNode能夠無密碼訪問JobTracker。其實我是不明白這操作有什麼意義,因爲這操作僅僅讓authorized_keys多了一段同樣的密鑰而已。

12)自此,ssh免密碼登陸就配置好了。

12、下載並解壓hadoop安裝包

1)將解壓後的包命名爲hadoop,並將其移動到/usr/java目錄下

2)配置環境變量,執行sudo gedit /etc/profile打開profile文件,添加下面變量,保存

export HADOOP_HOME=/usr/java/hadoop

export PATH=$PATH:$HADOOP_HOME/bin

3)執行source /etc/profile加載配置文件

4)終端執行echo $HADOOP_HOME,如果輸出hadoop安裝路徑,則表示配置成功

13、配置hadoop

1)修改 hadoop-env.sh

export JAVA_HOME=/usr/java/jdk

2)修改core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/fim/hdfs/hadooptmp</value><!--緩存路徑-->

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://f1:9000</value><!--namenode主機名/ip-->

</property>

</configuration>

3)修改hdfs-site.xml

<configuration>

<property>

<name>dfs.name.dir</name>

<value>/home/fim/hdfs/name</value><!--NN所使用的元數據保存-->

</property>

<property>

<name>dfs.data.dir</name>

<value>/home/fim/hdfs/data</value><!--真正的datanode數據保存路徑-->

</property>

<property>

<name>dfs.replication</name>

<value>2</value><!--文件備份數量-->

</property>

</configuration>

4)修改mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>h1:9001</value><!--主機名/ip-->

</property>

</configuration>

5)修改masters和slaves,在masters文件中加上namenode的主機名(ip),在slaves中加上datanode的主機名(ip)

#masters

f1

#slaves

f2

f3

14、將配置好的hadoop拷貝到各個子節點

1)將hadoop拷貝到f2節點

scp -r /usr/java/hadoop f2:~/java/hadoop

2)將hadoop拷貝到f3節點

scp -r /usr/java/hadoop f3:~/java/hadoop

注:1.-r表示拷貝目錄,不加-r表示拷貝的是文件

   2.scp命令拷貝時,只能拷貝到用戶目錄下,即:~/下

3)配置各子節點的hadoop環境變量

4)到此,我覺得我們的hadoop安裝目錄最好在用戶目錄爲好。

15、將hadoop安裝目錄所有權限給當前用戶

sudo chown -R fim hadoop

注:-R表示向下遞歸,表示hadoop的所有子目錄

16、格式化NameNode、啓動hadoop

hadoop namenode -format

start-all.sh

17、檢驗 hadoop 的啓動情況

1)用jps命令檢查hadoop啓動情況

NameNode:

DataNode:

2)http://10.0.2.4:50070檢查是否加入了新的 datanode

3)http://10.0.2.4:50030檢查 map reduce的運行情況  

附:

一、VirtualBox共享文件夾掛載

1)創建掛載點mkdir home/fim/software

2)掛載共享文件夾sudo mount -t vboxsf BaiduShare home/fim/software

二、change該目錄包括子目錄的用戶(owner)

sudo chown -R 用戶名:所屬組  目錄



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章