Pseudo-Destributed Operation
Supported Platforms
-
GNU/Linux
Required Software
-
Java 1.6
-
openssh-client
-
openssh-server
-
rsync
-
Cygwin (windows only)
Installing Software
以ubuntu Linux為例
$ sudo apt-get install sun-java6-jdk $ sudo apt-get install ssh $ sudo apt-get install rsync |
Download
穩定版下載點
http://hadoop.apache.org/common/releases.html
Prepare to Start the Hadoop Clouster
Hadoop主要有三種模式可以啟動:
-
Local(Standalone) Mode
-
Pseudo-Distributed Mode
-
Fully-Distributed Mode
Standalone Operation
預設解壓縮開來的Hadoop是可以執行在non-distributed mode,當作一個Java Process執行,是用這種方式執行可以更容易的去做Debug的動作
$ mkdir input |
Pseudo-Distributed Operation
Hadoop也可以執行在單一結點的狀態下,讓多個Hadoop daemon執行在多個不同的Java Process.
Configuration
-
Modify conf/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> |
-
Modify conf/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
-
Modify conf/mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> |
Setup passphraseless ssh
因為整個Hadoop都是經由ssh來進行溝通,所以必須設定系統可以不必使用密碼來進行ssh 連線。
首先先檢查系統是否可以不必輸入passphrase來使用ssh
$ ssh localhost |
如果需要使用密碼的話:
-
建立ssh key file
$ ssh-keygen -t rsa
-
複製public key到目標伺服器
$ ssh-copy-id localhost |
Execution
-
建立新的distributed-filesystem
$ bin/hadoop namenode -format |
-
啟動Hadoop Daemons:
$ bin/start-all.sh |
Hadoop的Log預設會放置到${HADOOP_LOG_DIR}的資料夾內(Default: export HADOOP_LOG_DIR=${HADOOP_HOME}/logs)
使用瀏覽器觀看NameNode跟JobTracker的運作情形,預設連結會在:
-
NameNode:http://localhost:50070/
-
JobTracker:http://localhost:50030/
-
複製檔案到distributed filesystem當作我們的測試來源資料
$ bin/hadoop fs -put conf input |
-
執行測試
$ bin/hadoop jar hadoop-*-example.jar grep input output 'dfs[a-z].+' |
-
檢視測試結果
$ bin/hadoop fs -get output output $ cat output/* or $ bin/hadoop fs -cat output/* |
-
關閉Hadoop Daemons
$ bin/stop-all.sh |
Cluster Setup
Pre-requistes
-
至少要能執行單一結點模式
Installation
Hadoop會設定一台機器(master)做為NameNode其他的機器做為JobTracker,其他機器(slaves)則是同時擁有DataNode和TaskTracker。
所有的Hadoop 的HADOOP_HOME都會必須有相同的HADOOP_HOME path
Configuration
Configuration Files
-
Modify /etc/hosts
node-1 192.168.0.1 192.168.0.1 node-2 192.168.0.2 192.168.0.2 node-3 192.168.0.3 192.168.0.3 node-4 192.168.0.4 192.168.0.4 node-5 192.168.0.5 192.168.0.5 |
Note:必須每一台的/etc/hosts設定都要一樣,就算其他設定檔案是直接設定ip這個檔案也必須設定,否則會發生Reduce時找不到機器而卡住的情形。
-
Modify conf/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://node-1:9000</value> </property> </configuration> |
-
Modify conf/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> |
-
Modify conf/mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>node-1:9001</value> </property> </configuration> |
-
Modify conf/masters
node-1 |
Modify conf/slaves
node-1 node-2 node-3 node-4 node-5 |
-
確認ssh 連線
$ssh node-{1,2,3,4,5} |
如果需要使用密碼的話:
-
建立ssh key file
-
複製public key到目標伺服器
$ ssh-copy-i node-{1,2,3,4,5} |
Execution
-
建立新的distributed-filesystem
$ bin/hadoop namenode -format |
-
啟動Hadoop Daemons:
$ bin/start-all.sh |
Hadoop的Log預設會放置到${HADOOP_LOG_DIR}的資料夾內(Default: export HADOOP_LOG_DIR=${HADOOP_HOME}/logs)
使用瀏覽器觀看NameNode跟JobTracker的運作情形,預設連結會在:
-
NameNode:http://localhost:50070/
-
JobTracker:http://localhost:50030/
-
複製檔案到distributed filesystem當作我們的測試來源資料
$ bin/hadoop fs -put conf input |
-
執行測試
$ bin/hadoop jar hadoop-*-example.jar grep input output 'dfs[a-z].+' |
-
檢視測試結果
$ bin/hadoop fs -get output output $ cat output/* or $ bin/hadoop fs -cat output/* |
-
關閉Hadoop Daemons
$ bin/stop-all.sh |
其他紀錄:
- 一般來說,剛啟動Hadoop,Hadoop會先讓datanote進入safe mode,待所以資料正常後才可以開始使用
- 每一台的hostname(/etc/hostname)必須不一樣否則Hadoop會產生混亂,導致reduce的時候卡住
[Hadoop]Name node is in safe mode
以正常情況來說,啟動Hadoop後會停留在safe mode幾秒中!
(所謂的safe mode是指等待各節點傳送狀態資料到主節點時HDFS的唯讀模式)
最近遇到因為不正常的關閉Hadoop,節點出現錯誤,導致name node一直停留在safe mode
這時只好下指令強迫離開safe mode
bin/hadoop dfsadmin -safemode leave
leave 可以替換成以下
enter-進入安全模式
get-返回安全模式是否開啟的訊息
wait-一直等到安全模式結束
leave-離開安全模式
其他小記
壓力測試
平衡各主機資料:
./bin/start-balancer.sh
快速佈署Hadoop
Using DRBL
Reference
Cluster Setup : http://hadoop.apache.org/common/docs/current/cluster_setup.html