Ubuntu下hadoop的集羣式分佈配置

    JDK 6u45

    Hadoop 0.20.203.0

首先,保證要徵用的幾臺電腦在同一個網域內(即IPv4的前三個數字是一樣的),建議適用靜態IP以免每次啓動更改hosts文件:

    Master:192.168.1.2

    Slave1:192.168.1.3

    Slave2:192.168.1.4

1、更改IP:

    Ubuntu的IP更改在右上角,如圖:

    

    選擇“Edit Connections”,進入到下圖:

    

    選中你的網絡,然後點擊旁邊的Edit,選擇IPv4Settings選項卡,選擇Manual(靜態),然後填寫你的網絡信息,保存退出重新連接即可

2、更改計算機名:

    確保每一臺電腦都有一個相同的用戶名,如果不一樣,請創建一個新的用戶。以下是更改計算機名的方法:

    打開hosts文件:

sudo gedit /etc/hosts
    如下:

    

    將紅框處的信息刪掉,然後仿照第一排,加入自己電腦的IP地址和自己想取的計算機名(也就是@後面的那個名字),此處筆者更改如下:

    192.168.1.2              Master

    同時,也一次性將其它從節點的IP和計算機名加到其中,最後內容如下:

    

    保存退出

    然後打開hostname文件:

sudo gedit /etc/hostname
    將裏面的內容更改爲剛纔改的計算機名(別把從節點也改成Master了哦):

    

    驗證是否成功:

ping Slave1

    幾臺電腦之間能夠相互ping通就說明成功

3、配置SSH無密碼登錄:

    ①安裝SSH服務:

sudo apt-get install openssh-server

        有可能不成功,如果不成功,請先更新下系統:

sudo apt-get update

    ②配置各臺電腦自己的無密碼登錄:

        執行命令:

ssh-keygen -t rsa -P ""

        路徑確認的時候直接回車,默認路徑即可(/home/hadoop/.ssh/id_rsa,這是筆者的路徑)。

        退到home目錄下,進入.ssh文件夾:

cd .ssh

        把id_rsa.pub追加到授權的key裏去,執行如下語句:

cat id_rsa.pub >> authorized_keys</span>

        authorized_keys文件本來不存在,但執行這條命令後它將自動生成

        執行完後更改authorized_keys的權限爲600,否則之後要出錯(一定要改),如果.ssh文件夾是自己創建而不是在生成密碼時自動創建的,那.ssh的權限也要改,改成700。

sudo chmod 600 authorized_keys

        完成後可以用ssh localhost驗證一下。

        其餘Slave也如此配置

    ③配置Master無密碼登錄各Slave:

        將Master的id_rsa.pub追加到各Slave的authorized_keys文件中即可。

        首先將Master的id_rsa.pub文件遠程複製到各Slave上(此時依然在.ssh文件夾中):

scp id_rsa.pub hadoop@Slave1:~/
scp id_rsa.pub hadoop@Slave2:~/
        然後將剛纔複製過去的文件追加到他們各自的authorized_keys文件中,追加過程和剛纔的追加過程一樣,這裏不在贅述

    ④配置各Slave無密碼登錄Master:

        此過程爲③的逆過程,將各Slave的id_rsa.pub文件追Master的authorized_keys文件裏即可


以下過程均以Master爲例,配置好後將其分發到各Slave即可

4、JDK和Hadoop的安裝請參考如下連接:

http://blog.csdn.net/marshal0826/article/details/18178591

    請先看這個鏈接裏的內容,因爲集羣分佈的配置和僞分佈差不過,下面的內容僅是與僞分佈配置的不同之處。

5、配置hadoop,以Master爲例(這些文件都在hadoop文件夾的conf文件夾中,請先進入這個文件夾。再提醒各位讀者,下面的內容千萬別照抄)

    ①配置core-site.xml:

        打開core-site.xml文件:

sudo gedit core-site.xml

        在<configuration>和</configuration>之間添加如下內容:

<property>
    <name>fs.default.name</name>
    <value>hdfs://Master:9000</value> //這裏Master代替的就是你的IP,所以可以將Master換成IP,但如果IP一變動,這個文件也要改
</property> 
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop/tmp</value> //這也要改哦
</property></span>

        保存退出

    ②配置hdfs-site.xml:

        打開這個文件,在<configuration>和</configuration>之間添加如下內容:dfsg

<property>
    <name>dfs.replication</name>
    <value>2</value> //如果大於3,則從節點不能低於3個,這裏設置成2,因爲只有兩個從節點
</property> 
<property>
    //用於存放主節點的信息,比如fsimage文件(這個文件相當重要,沒有他無法讀取HDFS的內容),一般設置多個地址,
    //只需在<value>與</value>之間以逗號分隔每個地址
    <name>dfs.name.dir</name>
    <value>/home/hadoop/hadoop/namedata</value>    
</property>
<property>
    //設置從節點數據的存放位置,也可以設置多個
    <name>dfs.data.dir</name>
    <value>/home/hadoop/hadoop/data</value>    
</property></span>

        保存退出

    ③配置mapred-site.xml:

        打開這個文件,在<configuration>和</configuration>之間添加如下內容:

<property>
    <name>mapred.job.tracker</name>
    <value>Master:9001</value>//此處和core-site.xml差不多
</property>
//以下內容可以暫時不用設置,但從經驗來看,還是設置一下爲好
<property>
    //一個節點上最大能運行的Map數量(默認是兩個,但從經驗來看,如果數據量大而機器又舊,兩個是帶不起來的)
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>1</value>
</property>
<property>
    //每個節點最大能運行的reduce數量,默認是1個,這裏寫出來是爲了讓大家知道在哪裏改這個數據
    <name>mapred.tasktracker.reduce.tasks.maximum</name>
    <value>1</value>
</property>
<property>
    //我相信大家一定會遇到“java heap space”的問題,除非各位是算法高手,並且機器內存很大
    //這個用於設置程序運行時(jvm虛擬機)的內存容量
    <name>mapred.child.java.opts</name>
    <value>-Xmx4096m</value>
</property></span>

    ④配置masters文件:

        打開這個文件,刪掉localhost,添加Master的計算機名,筆者的Master的計算機名就叫Master,更改後保存退出保存退出。

    ⑤配置slaves文件:

        將各Slave的計算機名添加到slaves文件中,一個名字一行,保存退出。


    至此,Master上的hadoop配置完成,而各Slave上的hadoop配置,如果大家不閒麻煩,可以挨個配置,畢竟只有兩三臺嘛,就當是熟悉熟悉配置,但也可以用遠程複製,命令如下:

scp -r '/home/hadoop/hadoop' hadoop@Slave1:~/
scp -r '/home/hadoop/hadoop' hadoop@Slave2:~/

    注意:不要單純的複製就完事,上述文件中牽扯到文件地址的地方都要改成Slave節點上的地址(core-site.xml和hdfs-site.xml文件)。

5、格式化並啓動hadoop

    執行如下格式化語句:

hadoop namenode -format

    執行啓動語句啓動hadoop:

start-all.sh

    在Master上用jps查看進程,可以看到JobTracker,NameNode,Jps和SecondaryNameNode四個進程(順序無關緊要),在Slave上用jps可以看到TaskTracker,Jps和DataNode三個進程,如此,hadoop集羣式配置分佈成功。

也可以在網頁上查看集羣,瀏覽器地址欄中輸入Master:50070和Master:50030即可


    寫下此文僅爲記錄之用,免得以後配置再去到處找資料。讀者可以參考下面的連接,下面的很專業,但是是在CentOS上配置的,讀者可以結合起來看:

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

http://www.cnblogs.com/xia520pi/archive/2012/04/08/2437875.html


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