天天看點

Hadoop安裝配置手冊

Hadoop安裝配置手冊

一、      準備篇

Hadoop運作環境:

  1. SSH服務正常運作
  2. JDK

沒安裝的可以自己安裝一下。

二、      基礎篇(單節點Hadoop)

  1. Hadoop下載下傳

    Hadoop下載下傳頁:http://hadoop.apache.org/releases.html#Download

    本文基于hadoop1.0.4版本,下載下傳:http://labs.mop.com/apache-mirror/hadoop/common/hadoop-1.0.4/hadoop-1.0.4.tar.gz

    解壓下載下傳的源碼壓縮包到合适的位置,如:/Users/yinxiu/dev/hadoop-1.0.4(這是本文安裝hadoop的位置)

  1. 環境變量(hadoop_env.sh)

目錄/Users/yinxiu/dev/hadoop-1.0.4/conf

2.1 JAVA_HOME 必須變量

export JAVA_HOME=實際JDK路徑

如:

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

2.2  HADOOP_HOME 可選變量

HADOOP_HOME預設的是bin目錄的父目錄,本文中的配置就是/Users/yinxiu/dev/hadoop-1.0.4

    export HADOOP_HOME=/Users/yinxiu/dev/hadoop-1.0.4

注意:在試驗的時候發現配置了HADOOP_HOME後啟動Hadoop提示:$HADOOP_HOME is deprecated.

這個提示是說重複定義了。

這個警告發生在HADOOPINSTALL/bin/hadoop-config.sh中:

if [ "$HADOOP_HOME_WARN_SUPPRESS" = "" ] && [ "$HADOOP_HOME" != "" ]; then

  echo "Warning: \$HADOOP_HOME is deprecated." 1>&2

  echo 1>&2

fi

export HADOOP_HOME=${HADOOP_PREFIX}

解決方法:可以去除HADOOP_HOME的配置,也可以通過添加export HADOOP_HOME_WARN_SUPPRESS=TRUE到hadoop-env.sh中。

  1. 環境配置檔案的配置

主要有三個配置檔案:core-site.xml,hdfs-site.xml,mapred-site.xml

3.1 conf/core-site.xml

<configuration>

       <property>

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

              <value>hdfs://(master ip):9000</value>

       </property>

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

              <value>hadoop運作的臨時目錄</value>

</configuration>

hadoop運作的臨時目錄:/Users/yinxiu/dev/hadoopdata/temp

3.2  conf/hdfs-site.xml

              <name>dfs.replication</name>

              <value>1</value>

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

              <value>DFS的資料儲存目錄</value>

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

              <value>DFS Namenode儲存的位置</value>

DFS的資料儲存目錄:/Users/yinxiu/dev/hadoopdata/data

DFS Namenode儲存的位置:/Users/yinxiu/dev/hadoopdata/temp/dfs/name

3.3  conf/mapred-site.xml

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

              <value>(master ip):9001</value>

可以配置單節點同時運作的最大map數和單節點同時運作的最大reduce數:

mapred.tasktracker.map.tasks.maximum=8

mapred.tasktracker.reduce.tasks.maximum=6

  1. ssh配置(使其可以通過ssh無密碼登入,即通過證書認證登入)

sh-keygen –t dsa –P ‘’ –f ~/.ssh/id_dsa

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

注意:connect to host localhost port 22: Connection refused

運作hadoop的時候需要確定ssh運作正常。引起connect to host localhost port 22: Connection refused的原因可能有多個,比如沒有開啟遠端登入。

MAC開啟遠端登入:http://www.bluishcoder.co.nz/articles/mac-ssh.html

  1. 啟動

進入HADOOPINSTALL目錄

5.1 格式化namenode

    執行bin/hadoop namenode -format

5.2 簡單啟動所有守護

bin/start-all.sh

5.3 停止守護

    bin/stop-all.sh

  1. 驗證測試

啟動成功後可在浏覽器檢視以下位址:

6.1 Job tracker

http://master ip:50030

6.2 NameNode

http://master ip:50070

三、      進階篇(多節點Hadoop)

以5台機子為例,分别為

node-1 NameNode

node-2 DataNode

node-3 DataNode

node-4 DataNode

node-5 DataNode

  1. 叢集SSH設定(namenode通過ssh可以無密碼登入datanode)

    在将作為NameNode的機器上生成密鑰對:

    $ssh-keygen –t rsa –P ‘’ –f ~/.ssh/id_rsa

$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

注意ssh-keygen指令和cat指令的使用。

提示要為生成的密鑰輸入passphrase的時候,直接回車将其設定為空密碼

将id_ras.pub的内容複制到每個機器(包括本機)的.ssh/authorized_keys檔案中(如果原先有authorized_keys檔案了将id_rsa.pub的内容追加在後面)

複制和遠端複制需要看cp和scp指令。

如果ssh配置好了,就會出現以下提示資訊 

The authenticity of host [servername-2] can’t be established. 

Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52. 

Are you sure you want to continue connecting (yes/no)? 

    OpenSSH告訴你它不知道這台主機,但是你不用擔心這個問題,因為你是第一次登入這台主機。鍵入“yes”。這将把這台主機的“識别标記”加到“~/.ssh/know_hosts”檔案中。第二次通路這台主機的時候就不會再顯示這條提示資訊了。 

    注意:Authentication refused: bad ownership or modes for directory

/root錯誤的原因可能是權限問題或者使用者組等問題,參考下面的一些資料。

http://recursive-design.com/blog/2010/09/14/ssh-authentication-refused/

http://bbs.csdn.net/topics/380198627

  1. 主機配置

    主機配置與基礎篇中的配置基本一緻,不再說明。

  1. Masters/Slaves檔案配置

NameNode節點的HADOOPINSTALL/conf/masters檔案中添加主機名。那麼本例中的masters檔案内容如下:

node-1

HADOOPINSTALL/conf/slaves中添加DataNode節點的主機名,一行一個主機名。内容如下:

node-2

node-3

node-4

node-5

  1. 部署Hadoop叢集

前面講的這麼多Hadoop的環境變量和配置檔案都是在node-1這台master主機上的, 将上述配置好的hadoop分發至各個slave的相同位置,注意要保證目錄結構一緻。

使用scp進行分發。

配置完後對NameNode進行格式化。

bin/hadoop

namenode –format

    啟動與基礎篇一緻,使用簡單的start-all.sh和stop-all.sh進行啟動和關閉,注意啟動前

  1. 測試驗證

部分資料

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

如果本文對您有幫助,點一下右下角的“推薦”

下一篇: Java注解