NameNode 主要存放文件映射和文件更改日志
SecondaryNameNode 一個守護進程 定時從NameNode同步文件更改日志并合并成一條日志,方便hadoop每次重啟時 找到上次宕機的還原點。在后續的版本中會被backupNameNode和nameNode集群取代。
Jobtracker 任務調度守護進程
Tasktracker 任務執行進程
DataName 數據存儲節點,往往和Tasktracker部署在同一臺機器上。
GNU/Linux ,hadoop不建議在win32平臺上使用,顧這里只介紹在linux系統上的 安裝和配置
JavaTM1.5.x及以上的版本,必須安裝,建議選擇Sun公司發行的Java版本。
ssh 必須安裝并且保證 sshd一直運行,以便用Hadoop 腳本管理遠端Hadoop守護進程。
本文使用的是 hadoop-0.20.203.0,筆者當前的穩定版本。
下載地址 http://hadoop.apache.org/common/releases.html#Download
本文 使用的是 4臺 linux機器,hadoop.master 作為namenode節點,hadoop.second作為secondaryNameNode節點,hadoop.slave1 作為第一datanode節點,hadoop.slave2作為第二個datanode節點。
Ø 編輯環境變量
建議直接編輯 /etc/profile文件 增加 JAVA_HOME和HADOOP_HOME環境變量,具體事例如下所示:
[root@hadoop ~]# vi /etc/profile
增加如下幾行代碼
export JAVA_OPTS='-Xms256m -Xmx512m'
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=/usr/local/java/jre
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
筆者為了以后方便起停hadoop 把hadoop的bin也目錄加到path中。
: wq
讓環境變量即時生效
[root@hadoop ~]# source /etc/profile
Ø 修改 hosts文件
[root@hadoop ~]# vi /etc/hosts
在打開的文件中添加如下配置
192.168.2.17 hadoop.master
192.168.2.19 hadoop.slave1
192.168.2.14 hadoop.slave2
192.168.1.197 hadoop.second
增加如上幾個域名,具體ip地址由各自的實際情況定,這里只列出筆者實驗環境所需的。 Hadoop集群環境中 使用域名訪問的,所以需要把slave,master等域名加到每臺服務器上。
Ø 建立hadoop專屬用戶
Groupadd hadoop
Useradd hadoop –g hadoop
Passwd hadoop
Changing password for user hadoop.
New UNIX password:
123456
Retype new UNIX password:
123456
Ø 安裝軟件
安裝JDK到/usr/local下命名為java
將下載好的hadoop-0.20.3.tar.gz文件上傳到master的/usr/local/hadoop
tar zxvf hadoop-0.20.3.tar.gz #解壓文件
設置hadoop目錄的訪問權限
chown –R hadoop:hadoop /usr/local/hadoop
Ø 改機器名
把每臺機器的 機器名改成localhost。
Vi /etc/sysconfig/network
修改HOSTNAME = localhost
此處是沒搞清楚為什么的地方,實驗結果表明 必須改成localhost hadoop才能正常啟動。具體原理 目前還沒有搞清楚,只知其然,其所以然有待于以后研究。
7.2 每個節點不同的配置
7.2.1 配置hadoop
Hadoop的配置文件 在早期版本中都放在同一個文件里 hadoop-site.xml,在新版本中hadoop把配置文件做了區分,分成了:
Core-site.xml 配置Common組件的屬性
Hadoop-site.xml 配置HDFS組件的屬性
Mapred-site.xml 配置map-reduce組件的屬性
除了這3個配置文件以外 還有 hadoop-env.xml 用來設置 hadoop用到的環境變量;masters文件用來配置 SNN 節點地址 注意必須配置域名;slaves文件 配置所有DN節點的地址,必須是域名
7.2.2 Core-site.xml 配置實例
DN節點 以及 NN節點,snn節點配置一至:
<property>
<name>fs.default.name</name> // 配置NN節點地址和端口號
<value>hdfs://hadoop.master:9000</value> //注意格式必須是 host:port的形式
</property>
<property>
<name>hadoop.tmp.dir</name> //hadoop臨時目錄用來存放nn臨時文件
<value>/usr/local/hadoop/tmp</value> //該目錄必須預先手工創建不能刪除
</property>
<property>
<name>fs.checkpoint.period</name> //snn檢查nn日志的時間周期
<value>60</value> //單位是秒,正式環境上建議配置成12小時
</property>
<property>
<name>fs.checkpoint.size</name> //snn每次從nn上讀取的數據大小
<value>67108864</value> //通常情況下默認值就可以
</property>
7.2.3 Hdfs-site.xml
Ø NN 節點
<property>
<name>dfs.name.dir</name> // 指定name 鏡像文件存放目錄,如不指定則
<value>/usr/local/hadoop/hdfs/name</value> //默認為core-site中配置的tmp目錄
</property>
<property>
<name>dfs.replication</name> //數據節點冗余備份的數量,由于實驗只有2個
<value>1</value> // NN 顧設置唯一,實際配置是可由實際情況
</property> //配置,建議盡量大于3
<property>
<name>dfs.permissions</name> //是否需要角色權限驗證,上傳文件時會用到,
<value>false</value> //如果為true ,需要綁定hadoop用戶角色
</property>
<property>
<name>dfs.secondary.http.address</name> //SNN 的web訪問地址。
<value>hadoop.second:50090</value>
</property>
Ø DN節點配置
<property>
<name>dfs.data.dir</name> // 數據存放的目錄,如果不寫 默認為
<value>/usr/local/hadoop/hdfs/data</value> // core-site中配置的tmp目錄
</property>
<property>
<name>dfs.replication</name> //數據節點冗余備份的數量,由于實驗只有2個
<value>1</value> // NN 顧設置唯一,實際配置是可由實際情況
</property> //配置,建議盡量大于3
<property>
<name>dfs.permissions</name> //是否需要角色權限驗證,上傳文件時會用到
<value>false</value> //如果為true ,需要綁定hadoop用戶角色
</property>
<property>
<name>dfs.secondary.http.address</name> //SNN 的web訪問地址
<value>hadoop.second:50090</value>
</property>
Ø SN節點的配置
<property>
<name>dfs.name.dir</name> // 指定name 鏡像文件存放目錄,如不指定則
<value>/usr/local/hadoop/hdfs/name</value> //默認為core-site中配置的tmp目錄
</property>
<property>
<name>dfs.replication</name> //數據節點冗余備份的數量,由于實驗只有2個
<value>1</value> // NN 顧設置唯一,實際配置是可由實際情況
</property> //配置,建議盡量大于3
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.http.address</name> NN 的web訪問地址,注意此處和其他節點不同
<value>hadoop.master:50070</value>
</property>
Ø Mapred-site.xml配置
所有節點都一致
<property>
<name>mapred.job.tracker</name>
<value>hadoop.master:9001</value> //必須為host:port的形式,不能直接寫ip
</property>
Jobtracker的分布式的配置方法目前沒設置成功,有待于繼續研究
Ø Masters文件配置和slaves文件配置 所有節點全部一致
所有節點的masters 里面均配置 SNN的域名
所有節點的slaves 里面均配置所有DN的域名,一行一個DN
Ø Hadoop-env.sh 文件配置
里面是hadoop運行時定義的環境變量
其他的都可以用默認值,但是有一項必須修改 就是javahome環境變量,指定到實際的javahome目錄。實例:
export JAVA_HOME=/usr/local/java
1. hadoop無用戶登錄配置
用 hadoop用戶進入每臺機器:
進入 /home/hadoop 目錄
ssh-keygen -t rsa #建立ssh目錄,敲回車到底
1) 登錄NN服務器
2) 進入/home/hadoop/.ssh目錄
3) scp -r id_rsa.pub hadoop@hadoop.slave1:/home/hadoop/.ssh/authorized_keys
#將master上的密鑰傳到slave1的hadoop用戶下,重命名為authorized_keys
4) scp -r id_rsa.pub hadoop@hdoop.slave2:/home/hadoop/.ssh/authorized_keys
#將master上的密鑰傳到slave2的hadoop用戶下,重命名為authorized_keys
5) scp -r id_rsa.pub hadoop@hadoop.second:/home/hadoop/.ssh/authorized_keys
#將master上的密鑰傳到snn的hadoop用戶下,重命名為authorized_keys
6) 用hadoop用戶進入hadoop.slave1 /home/hadoop/.ssh目錄
7) cat id_rsa.pub >> authorized_keys
#把自己的id_rsa.pub內容也放到authorized_keys中
8) scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_s1
#將slave1上的密鑰傳到master的hadoop用戶下
9) 用hadoop用戶進入hadoop.slave2 /home/hadoop/.ssh目錄
10) cat id_rsa.pub >> authorized_keys
#把自己的id_rsa.pub內容也放到authorized_keys中
11) scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_s2
#將slave2上的密鑰傳到master的hadoop用戶下
12) 用hadoop用戶進入hadoop.second /home/hadoop/.ssh目錄
13) cat id_rsa.pub >> authorized_keys
#把自己的id_rsa.pub內容也放到authorized_keys中
14) scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_second
#將snn上的密鑰傳到master的hadoop用戶下
15) 在master,上執行以下操作
16) cat id_rsa.pub >> authorized_keys
#將本地密鑰添加authorized_keys
17) cat authorized_keys_s1 >> authorized_keys
18) cat authorized_keys_s2 >> authorized_keys
19) cat authorized_keys_second >> authorized_keys
20) rm authorized_keys_second
21) rm authorized_keys_s1
22) rm authorized_keys_s2
這樣主節點和從節點之間就可以不用密碼直接ssh訪問
特別注意 authorized_keys 文件的訪問權限 必須設置成600
登錄每臺機器 執行 chmod 600 authorized_keys
2. 啟動hadoop
用hadoop用戶進入nn服務器的 /usr/local/hadoop/hadoop-0.20.203.0/bin目錄
Ø 格式化hadoop
Hadoop namenode –format
Ø 啟動hadoop
./start-all.ssh ,不建議這樣啟動 建議單獨啟動守護進程。
Ø Hadoop日志目錄
/usr/local/hadoop/hadoop-0.20.203.0/logs
啟動完檢查下啟動日志,啟動后 到nn上查看
hadoop-hadoop-namenode-master.log
hadoop-hadoop-jobtracker-master.log
因為 我們的 nn和 jobtracker 部署在同一臺機器上,所有master上會有2個日志
登錄snn節點服務器 查看
hadoop-hadoop-secondarynamenode-master.log
這幾個沒錯誤就OK了
這時候就可以進入管理頁面看看了
posted on 2011-12-08 13:14
鄧兵野 閱讀(3507)
評論(2) 編輯 收藏