完成了一個三台機器的hadoop集群的配置,兩台linux+一台windows7的組合,比較怪異,但畢竟是出於學習的目的,所以就嘗試了不同的平台。何況hadoop本身就具有跨平台的特性。下面介紹一下整個配置的過程一些關鍵的地方和一些問題的解決:
使用版本:0.21.0
主要參考資料:
[1]http://hadoop.apache.org/common/docs/r0.21.0/cn/cluster_setup.html這部分中文的內容有點舊,沒有針對0.20+版本進行更新
[2] http://www.linuxidc.com/Linux/2011-12/48549.htm
[3] http://www.linuxidc.com/Linux/2011-12/48550.htm
[4] http://www.linuxidc.com/Linux/2011-12/48551.htm
集群組成:
HDFS是Hadoop應用用到的一個最主要的分散式存儲系統。一個HDFS集群主要由一個NameNode和很多個Datanode組成:Namenode管理文件系統的元數據,而Datanode存儲了實際的數據。從任務角度,集群又由jobTracker和taskTracker組成,其中jobTracker負責調度,而taskTracker負責具體的任務的處理;jobTracker和namenode可以分別配置於不同的機器上,也可以位中同一台機器,而taskTracker和datanode最好在同一台機器上。在我這裡,由於環境的限制,jobTracker和namenode一同配置在作為master的192.168.1.67上,而另外兩台,66和55分為作為slave,配置datanode+tasknode。其中66為Ubuntu10.10 server,而55為win7 旗艦版。
關於配置方面
先說明下關於windows下使用hadoop的配置,因為其相對比較特殊
需要安裝cygwin,具體安裝方法請參考資料[2],在安裝cygwin時,注意要添加openssh組件,為了方便起見,最好安裝一些文本編輯器,如vim,或者nano。在安裝完成cygwin之後,要配置好ssh server,參見 http://www.linuxidc.com/Linux/2011-12/48552.htm .注意 ,如果是win7,那麼由於許可權問題,需要我們建立一個用戶來運行sshd服務,在cygwin中的命令行里都會有相應提示,大家注意看,按著做就成。 在建立該用戶的時候,要注意的是,用戶名和密碼要和另外兩台伺服器的用戶名密碼相同,這樣才方便集群管理。
如果啟動hadoop出現java.lang.NoClassDefFoundError:org/apache/hadoop/util/PlatformName錯誤,則要修改${HADOOP_HOME}/bin/hadoop-config.sh文件中的第190行的一下的內容
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`為
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m -classpath ${HADOOP_COMMON_HOME}/hadoop-common-0.21.0.jar org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
參見 http://www.linuxidc.com/Linux/2011-12/48553.htm
其它一些注意事項:
在0.21版本中,${HADOOP_HOME}/conf/下的配置文件中,不再有hadoop-site.xml,由core-site.xml,hdfs-site.xml,mapred-site.xml取而代之,
在core-site中,配置fs.default.name屬性,即NameNode的URI,值為 hdfs://主機名:商品/
在hdfs-site.xml中,
配置dfs.data.dir,即DataNode存放塊數據的本地文件系統路徑,值可以是以逗號分割的路徑列表
配置dfs.name.dir,即NameNode持久存儲名字空間及事務日誌的本地文件系統路徑。
例如
[火星人 ] Hadoop 0.21.0 集群配置小記已經有491次圍觀