Hadoop偽分布式與集群式安裝配置


 

配置環境                          

配置前的說明

部署偽分布式與集群式Hadoop的絕大部分操作都是一樣的,細節上區別在於集群式是在兩台機子上部署的,兩台機子都要執行下列操作,而偽分布式都是在一台機子上操作,以下全部操作如沒有特別說明,則偽分布式操作與集群式操作等同。

環境說明

偽分布式Hadoop

l  本次hadoop配置的為偽分布模式,即在一個機子上作為namenode,又作為datanode

l  操作系統:CentOS5.5

l  JDK1.6.0_26

l  Hadoophadoop-0.21.0

集群分布式Hadoop

l  本次hadoop配置的為集群分布模式,即在一個機子上作為namenode,另一台機子作為datanode

l  操作系統:CentOS5.5

l  JDK1.6.0_26

l  Hadoophadoop-0.21.0

l  網絡配置:

網絡配置                                                      

查看主機名

使用下面命令進行查看主機名,若要更改,請查看下一步操作。

hostname

修改主機名

第一步,查看主機IP地址。

用下面命令即可查看,本機IP192.168.1.101(以下操作請使用root用戶方可執行)

ifconfig

第二步,若想更改主機名,則可以通過修改文件“/etc/sysconfig/network”中的HOSTNAME后面的值,即可改成我們想要的名字。

用下面命令進行修改主機名。

nano /etc/sysconfig/network

第三步,修改文件“/etc/hosts”。

使用命令打開后更改為如圖所示的樣子。將原有的全部注釋(前面加#),namenode為第一個,datanode為第二個,因為偽分布式模式namenodedatanode為同一個的,所以兩個都是一樣。

nano /etc/hosts

 

集群模式則修改為如圖所示。(兩個機子修改為一樣的,第一個為namenode,第二個datanode

SSH無密碼驗證配置                      

關於SSH服務

 

還要安裝rsync,執行命令sudo yum install rsync

創建hadoop用戶

使用root用戶創建hadoop用戶,依次執行下列命令即可。(集群模式則每台機器都需要這樣操作)

useradd hadoop(新增用戶)

passwd hadoop (輸入兩次密碼,但輸入期間是無任何字符顯示的)

 

生成SSH密鑰

注銷,切換到用戶hadoop下,執行下列命令。

cd /home/hadoop

ssh-keygen -t rsa(一路回車,選擇默認的保存路徑)

進入.ssh目錄:cd .ssh

cp id_rsa.pub authorized_keys

ssh 你的主機名

不需要輸入密碼即為成功,輸入exit退出,若要輸入密碼,則在.ssh目錄下執行命令chmod 600 authorized_keys后即可。

 

上述為偽分布式SSH配置成功,若為集群式還需要下列一個操作方可

namenode上的公鑰拷貝到datanodenamenode機器在hadoop用戶的用戶目錄下(/home/hadoop)下執行命令ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@datanode的主機名)

執行命令SSH datanode的主機名。若不需要密碼則為成功。

JDK配置                                                    

下載JDK

使用root用戶登錄后,執行命令yum install jdk。若找不到,則去官網下載(https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u22-oth-JPR@CDS-CDS_Developer

安裝JDK

新建目錄/usr/java,將源碼包jdk-6u22-linux-i586.bin復制到該目錄下,執行命令chmod a+x jdk-6u22-linux-i586.bin

執行命令 ./jdk-6u22-linux-i586.bin進行安裝。

配置環境變量

修改文件“/etc/profile”來添加環境變量。執行下面命令打開文件。

nano /etc/profile

在文件最后添加下面幾行:

export JAVA_HOME=/usr/java/jdk1.6.0_26

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

source /etc/profile使變量生效。

驗證安裝成功

執行命令java –version可得

 

若不成功則查看環境變量是否設置錯誤。

Hadoop配置                       

安裝hadoop

以下操作若不能執行,則使用visudo(該命令需要root權限)給hadoop用戶添加最高權限,發生權限不足時,在每條命令前加sudo即可。

如圖所示。該命令使用vi編輯器,若不熟悉操作則按77G后按i

添加一行hadoop  ALL=(ALL)  ALL后按esc鍵,輸入:wq即可保存退出。

注銷,切換到hadoop用戶下。新建目錄sudo mkdir /usr/local/hadoop

hadoop-0.21.0.tar.gz解壓縮到該目錄下,在壓縮包所在的文件夾下執行sudo tar -xvzf hadoop-0.21.0.tar.gz –C /usr/local/hadoop

配置環境變量

修改/etc/profile文件,在文件最后添加兩行。

export HADOOP_HOME=/usr/local/hadoop/hadoop-0.21.0

export PATH=$HADOOP_HOME/bin:$PATH

配置/usr/local/hadoop/hadoop-0.21.0/conf/hadoop-env.sh文件,在文件最后添加JAVA_HOME環境變量,export JAVA_HOME=/usr/java/jdk1.6.0_26/

配置masterslave

兩個文件在/usr/local/hadoop/hadoop-0.21.0/conf/下面,

master文件填寫

192.168.1.101namenodeIP

slave文件填寫

192.168.1.101datanodeIP

因為是偽分布,所以都一樣,且只有一個。

若為集群,則為

master文件填寫

192.168.1.147namenodeIP

slave文件填寫

192.168.1.103datanodeIP

 

配置三個xml文件

三個xml文件都是在/usr/local/hadoop/hadoop-0.21.0/conf/

配置core-site.xml

創建文件夾mkdir /usr/hadoop/hadoop-0.21.0/tmp

<configuration>
 
    <property>
        <name>fs.default.name</name>
        <value>hdfs://yeweipeng(你的master機器名):9000</value>
 
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
 
        <value>/usr/hadoop/hadoop-0.21.0/tmp</value>
    </property>

</configuration>

 

配置 hdfs-site.xml

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1
datanode的數目)</value>
     </property>

</configuration>

配置 mapred-site.xml

<configuration>
 
    <property>
        <name>mapred.job.tracker</name>
        <value>yeweipeng(你的master機器名):9001</value>
 
    </property>
</configuration>

啟動和測試Hadoop                     

准備工作

使用root權限關閉防火牆,執行/etc/init.d/iptables stop,運行命令/etc/init.d/iptables status查看防火牆狀態。

使用hadoop用戶,將目錄切換到/usr/local/hadoop/hadoop-0.21.0/bin下,格式化目錄節點,hadoop namenode –format

集群模式,上述兩個操作只需要namenode機器操作,datanode則不需要。

啟動hadoop

/usr/local/hadoop/hadoop-0.21.0/bin下執行start-all.sh啟動hadoop

jps查看進程,如圖所示有六個進程則為正確(偽分布式)

 

若為集群則在namenode機器上有4個進程。分別是JobTrackerNameNodeJpsSecondaryNameNode。而datanode3個,分別是TaskTrackerDataNodeJps

網頁查看集群

打開http://yeweipeng(主機名):50070查看節點狀況 

打開http://yeweipeng(主機名):50030查看job狀況  

 

測試

創建目錄haoop fs -mkdir test

 

上傳haoop fs -put 你要上傳的目錄

下載haoop fs -get 雲端的目錄 本地目錄

配置中出現的錯誤                 

問題:啟動成功后,發現在master查看live nodes0

解決方案如下:

將文件/etc/hosts內原有的文件內容注釋掉,添加namenodedatanodeIP地址與主機名。

問題:JAVA_HOME is not set

解決方案如下:

配置/conf/hadoop-env.sh文件時,只是修改了JAVA_HOME的值,並沒有將前面的注釋號#刪除掉,所以導致此種問題。

問題:啟動hadoop后,執行jps命令只有一個jps進程

解決方案如下:

只有一個進程的原因在於三個xml文件,masterslave的設置錯誤。

1.       在配置過程的xml文件我們將主機名都寫為master導致錯誤,則將其改為namenode的主機名方可。

2.       master上只能有namenodeIP地址,不得有datanode的地址。同理,slave上只能有datanodeIP地址,不得有namenode的。

問題:偽分布式配置SSH后,無論如何都需要輸入密碼

解決方案如下:

更改authorized_keys的權限為600 

chmod 600 authorized_keys

 

參考資料                                          

http://blog.csdn.net/hyclq/article/details/6095904

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

http://blog.csdn.net/zhaogezhuoyuezhao/article/details/7328313

http://teleyic.iteye.com/blog/1154086

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM