Pseudo-Destributed Operation

Supported Platforms

  • GNU/Linux

Required Software

  1. Java 1.6

  2. openssh-client

  3. openssh-server

  4. rsync

  5. 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
$ cp conf/* input
$ bin/hadoop jar hadoop-*-example.jar grep input output 'dfs[a-z].+'
$ cat output

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

如果需要使用密碼的話:

  1. 建立ssh key file

    $ ssh-keygen -t rsa

  2. 複製public key到目標伺服器

$ ssh-copy-id localhost

Execution

  • 建立新的distributed-filesystem

$ bin/hadoop namenode -format

  • 啟動Hadoop Daemons:

$ bin/start-all.sh

HadoopLog預設會放置到${HADOOP_LOG_DIR}的資料夾內(Default: export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

使用瀏覽器觀看NameNodeJobTracker的運作情形,預設連結會在:

  1. NameNodehttp://localhost:50070/

  2. JobTrackerhttp://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)則是同時擁有DataNodeTaskTracker

所有的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}

如果需要使用密碼的話:

  1. 建立ssh key file

  2. 複製public key到目標伺服器

$ ssh-copy-i node-{1,2,3,4,5}

Execution

  • 建立新的distributed-filesystem

$ bin/hadoop namenode -format

  • 啟動Hadoop Daemons:

$ bin/start-all.sh

HadoopLog預設會放置到${HADOOP_LOG_DIR}的資料夾內(Default: export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

使用瀏覽器觀看NameNodeJobTracker的運作情形,預設連結會在:

  1. NameNodehttp://localhost:50070/

  2. JobTrackerhttp://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

http://drbl.nchc.org.tw/

Reference

Cluster Setup : http://hadoop.apache.org/common/docs/current/cluster_setup.html

 

創作者介紹

Amin's Note

Aminzai 發表在 痞客邦 PIXNET 留言(0) 人氣()