多機集羣環境搭建hadoop筆記


通過一天半的努力,終於在多機集羣環境下搭建好了hadoop,成功地運行了wordcount示例程序。學習和體會了hadoop的map reduce模型和hdfs分佈式文件系統。
我使用的liunx系統是red hat enterprise Linux 5,jdk 版本是:1.6.0_26,hadoop版本是:0.21.0, 注意此版本的hadoop須要1.6版本的jdk,不然會致使hadoop沒法運行。
步驟一:安裝java
1)、下載Linux版的java。
將其解壓後放在任意一個目錄下,我放在 /usr/java目錄下;
2)、設置jJAVA_HOME環境變量。
我是經過修改配置文件實現的,須要root用戶修改/etc/profile文件,在文件最後加上以下三行:
export JAVA_HOME=/usr/java/jdk1.6.0_26
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
須要從新啓動系統,這樣就生效了,
3)、驗證java安裝
[root@node1 etc]# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode)
[root@node1 etc]#
如上所示,表示安裝成功。
注意:每臺機器都要安裝java。


步驟二:多機集羣ssh配置
個人集羣只有三臺機器,將其取名爲:node1, node2, node3。從map reduce計算的角度講,node1做爲master節點,node2和node3做爲slave節點。從hdfs數據存儲角度講,node1做爲namenode節點,node2和node3做爲datanode節點。
1)、修改/etc/hosts文件
node1以下:
115.25.33.39 node1 node1
115.25.33.52 node2 node2
115.25.33.49 node3 node3
注意:上面的ip地址爲每臺機器當前實際分配的ip地址,因此不能照抄。Linux中查看本機ip地址的命令爲:ifconfig
node2以下:
115.25.33.39 node1 node1
115.25.33.49 node3 node3
node3以下:
115.25.33.39 node1 node1
115.25.33.52 node2 node2

2)、配置從node1無需輸入密碼ssh登陸node一、node2和node3
全部節點的用戶名相同,本人統一爲:andychen
在node1上配置無密碼公鑰認證過程以下:
java

[andychen@node1 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/andychen/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/andychen/.ssh/id_rsa. Your public key has been saved in /home/andychen/.ssh/id_rsa.pub. The key fingerprint is: 2e:57:e2:bf:fd:d4:45:5c:a7:51:3d:f1:51:3c:69:68 root@krusty04
這個命令將爲node1 上的當前用戶 andychen 生成其密鑰對,密鑰對的保存路徑使用缺省的 /home/andychen/.ssh/id_rsa, 要求輸入 passphrase 的時候,直接回車。這樣生成的證書以及公鑰將存儲在 /home/andychen/.ssh 目錄,造成兩個文件 id_rsa,id_rsa.pub。而後將 id_rsa.pub 文件的內容複製到每一臺機器(包括本機 node1)的  /home/andychen/.ssh/authorized_keys 文件的尾部,若是機器上不存在  /home/andychen/.ssh/authorized_keys 文件,能夠自行建立一個。請注意 id_rsa.pub 文件的內容是長長的一行,複製時需注意,不要遺漏字符或混入了多餘換行符。 

接下來能夠作一下 SSH 鏈接測試,從 node1分別向 node1, node2, node3發起 SSH 鏈接請求,確保不須要輸入密碼就能 SSH 鏈接成功。 注意第一次 SSH 鏈接時會出現以下提示信息: node

The authenticity of host [node1] can't be established. The key fingerprint is: 74:32:91:f2:9c:dc:2e:80:48:73:d4:53:ab:e4:d3:1a Are you sure you want to continue connecting (yes/no)? ssh

請輸入 yes, 這樣 OpenSSH 會把鏈接過來的這臺主機的信息自動加到 /home/andychen/.ssh/know_hosts 文件中去,第二次再鏈接時,就不會有這樣的提示信息了。 分佈式

步驟三:安裝hadoop
將hadoop-0.21.0.tar.gz解壓到andychen用戶目錄下, 修改其中的conf/hadoop-env.sh文件, 這裏主要配置JAVA_HOME環境變量。
在其中設置 JAVA_HOME 環境變量:export JAVA_HOME=」/usr/java/jdk1.6.0_26」 

配置hadoop:
一、core-site.xml文件配置以下:
         <property>
                <name>fs.default.name</name>
                <value>hdfs://node1:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/tmp/hadoop/hadoop-${user.name}</value>
        </property>

二、hdfs-site.xml文件配置以下:
        <property>
                <name>dfs.name.dir</name>
                <value>/home/andychen/name</value>
        </property>
        <property>
                <name>dfs.data.dir</name>
                <value>/home/andychen/data</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
其中dfs.name.dir配置namenode節點的目錄,dfs.data.dir配置datanode節點的目錄。

三、mapred-site.xml文件配置以下:
        <property>
                <name>mapred.job.tracker</name>
                <value>node1:9001</value>
        </property>
配置jobtracker

四、masters文件配置以下:
node1
五、slaves文件配置以下:
node2
node3


完成hadoop的配置以後,將其拷貝到node2和node3的andychen目錄中。經過scp命令拷貝。


步驟四:使用hadoop

一、格式化一個分佈式文件系統。
在node1節點,進入hadoop根目錄,執行以下命令:
bin/hadoop namenode -format
二、啓動hadoop。
執行以下命令:
bin/start-all.sh
這樣在node1節點用 jps命令能夠看到以下三個進程:
namenode、secondary namenode、jobtracker
在node2和node3用 jps命令看到以下兩個進程:
datanode和tasktracker

三、拷貝測試數據到hdfs中
首先創建一個test-in目錄,將英文文本文件存入其中,能夠是多個文本文件。
而後執行以下命令:
bin/hadoop fs -put test-in input
將test-in目錄中的文件put到hdfs中的input目錄中。
四、執行wordcount例子程序
bin/hadoop jar hadoop-mapred-examples-0.21.0.jar input output
其中hdfs中的input目錄中的文件做爲程序的輸入,計算結果存入在output目錄中。
五、查看執行結果
bin/hadoop fs -get output test-out
將hdfs中的output目錄拷貝到本地文件系統的test-out目錄中。
進入test-out目錄,查看part-r-00000 文件便可。

五、補充:hdfs文件系統操做的有用命令:

bin/hadoop fs -ls /
查看hdfs的跟目錄
bin/hadoop fs -cat /user/andychen/output/part-r-00000
查看執行結果
bin/hadoop fs -rm /user/andychen/input/file1.txt
刪除file1.txt文件
bin/hadoop fs -rmr /user/andychen/input
刪除input目錄


原文: http://cyibeike.blog.163.com/blog/static/211125782011619105656911/ ide

相關文章
相關標籤/搜索