安裝必要的套件(ssh、rsync、jdk)

sudo apt-get install openssh-server rsync sun-java6-jdk

設定 SSH 可以透過公鑰認證的方式來連線

ssh-keygen -t rsa
cd /home/使用者/.ssh/
cat id_rsa.pub >> authorized_keys

#測試ssh(需更改 /etc/hostname /etc/hosts)
ssh pc1#(hostname)

cd /home/使用者/.ssh/

#將建好的key移到其他子節點(子節點主機也要做ssh-keygen -t rsa來產生.ssh資料夾)
scp authorized_keys pc2:/home/使用者/.ssh/

下載Hadoop,並切換到Hadoop目錄

cd /home/使用者
wget http://apache.stu.edu.tw/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
tar -zxvf hadoop-0.20.2.tar.gz
cd hadoop-0.20.2/

接下進行修改 Hadoop 的相關設定,首先修改 conf/masters(主要)

pc1

再來設定 conf/slaves(次要)

pc1
pc2

修改 conf/hadoop-env.sh 來設定 Hadoop 環境變數

export JAVA_HOME="/usr/lib/jvm/java-6-openjdk/"
export HADOOP_HOME="/home/johnson4932/hadoop/"
#如果要加入hbase的話需要加入相關設定
export HBASE_HOME="/home/johnson4932/hbase/"
export HADOOP_CLASSPATH="$HBASE_HOME/lib/:$HBASE_HOME/hbase-0.90.6.jar:$HADOOP_HOME/lib/"

接下來修改相關參數

conf/core-site.xml:

<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/johnson4932/hadoop/hadoop-${user.name}</value>
		<description>A base for other temporary directories.</description>
	</property>

	<property>
		<name>fs.default.name</name>
		<value>hdfs://pc1:9000</value>
	</property>
</configuration>

conf/hdfs-site.xml:

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
		<description>複本備份細數</description>
	</property>
</configuration>

conf/mapred-site.xml:

<configuration>
        <property>
                <name>mapred.job.tracker</name>
                <value>pc1:9001</value>
        </property>
        <property>
                <name>mapred.map.tasks</name>
                <value>3</value>
                <description>定義map會把任務分派給幾個節點</description>
        </property>
</configuration>

將Hadoop複製到其他子節點上

scp -r /home/使用者/hadoop-0.20.1 pc2:/home/使用者/

格式化一個新的分散式的檔案系統 HDFS

bin/hadoop namenode -format

啟動 Hadoop

bin/start-all.sh

接下來就打開網頁就會看到了「http://pc1:50070/」

由於 Hadoop 0.20.2 的 HDFS 檢查比較嚴謹,因此單機狀態下,會看到 http://pc1:50070 顯示Safe Mode is ON,代表 HDFS 目前是被封鎖住寫入權限,需等待至少 30 秒以後才會恢復正常。

測試:

移動到hadoop資料夾下

javac -classpath hadoop-0.20.2-core.jar -d MyJava WordCount.java #將WordCount.java編譯存到MyJava資料夾

jar -cvf wordcount.jar -C MyJava . #將MyJava包成jar,注意最後有一個 點 代表目前路徑

mkdir test_input #新建一個測資資料夾

echo "I like Cloud Course." > test_input/input1 #新增測資

bin/hadoop fs -put test_input input_hdfs #將測資丟進HDFS資料夾,input_hdfs自行命名

bin/hadoop fs -mkdir test #建立資料夾在HDFS裡

bin/hadoop fs -ls input_hdfs #確認有沒有成功放進HDFS裡

bin/hadoop jar wordcount.jar WordCount input_hdfs out/ #將jar檔裡的WordCount執行測資並把結果輸出到out資料夾裡

bin/hadoop fs -cat out/part-00000 #查看輸出,part從00000開始累加

bin/hadoop fs -rmr out (刪除out輸出資料夾)
Categories: HadoopLinux