這份文件提供 OSSF 工作坊 或是對 Hadoop 有興趣的朋友練習
環境設定小記
作業系統: openSUSE 11.2
分割區規劃
使用者管理
軟體
服務
大量複製
上課軟體準備
---------------------------------------- 練習步驟 ------------------------------------------
請以 使用者 max 登入系統, 密碼為 linux
請注意 shell 提示符號為 >
Step 1. 建立ssh 金鑰, 以便之後連線ssh 可以不輸入密碼
#利用非互動方式產生 Server1 的 DSA key pair
>ssh-keygen -N '' -d -q -f ~/.ssh/id_dsa
將公鑰複製一份為 authorized_keys
>cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
>ssh-add ~/.ssh/id_dsa
Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa)
測試是否可以使用金鑰, 透過 SSH 登入系統
>ssh localhost
The authenticity of host 'localhost (: :1)' can't be established.
RSA key fingerprint is 05:22:61:78:05:04:7e:d1:81:67:f2:d5:8a:42:bb:9f.
Are you sure you want to continue connecting (yes/no)? 請輸入 yes
登出 SSH
>exit
Step 2. 安裝 Hadoop 套件
解壓縮 Hadoop 套件(預先下載於 /opt/OSSF) --使用sudo的方式
(因為 /opt 目錄 一般使用者沒有寫入權限)
>sudo tar zxvf /opt/OSSF/hadoop-0.20.2.tar.gz -C /opt
會要求輸入 root 管理者密碼, 請輸入 linux
更改 /opt/hadoop-0.20.2 擁有者為 max 群組為 users
> sudo chown -R max:users /opt/hadoop-0.20.2/
建立 /var/hadoop 目錄
> sudo mkdir /var/hadoop
更改 /var/hadoop 擁有者為 max 群組為 users
> sudo chown -R max:users /var/hadoop/
Step 3. 設定 Hadoop 設定檔
3-1. 設定環境變數 hadoop-env.sh
>vi /opt/hadoop-0.20.2/conf/hadoop-env.sh
#請加入以下設定
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-sun
export HADOOP_HOME=/opt/hadoop-0.20.2
export HADOOP_CONF_DIR=/opt/hadoop-0.20.2/conf
3-2. 請於 core-site.xml 內的 configuration 區段內加入紫色部份的設定
>vi /opt/hadoop-0.20.2/conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/hadoop-\${user.name}</value>
</property>
</configuration>
3-3. 請於 hdfs-site.xml 內的 configuration 區段內加入紫色部份的設定(設定副本的數量)
>vi /opt/hadoop-0.20.2/conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3-4. 請於 mapred-site.xml 內的 configuration 區段內加入紫色部份的設定
(此為 JobTracker 的設定檔)
>vi /opt/hadoop-0.20.2/conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
Step 4. 格式化 HDFS
>/opt/hadoop-0.20.2/bin/hadoop namenode -format
10/07/20 00:51:13 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = server/127.0.0.2
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
10/07/20 00:51:13 INFO namenode.FSNamesystem: fsOwner=max,users,video
10/07/20 00:51:13 INFO namenode.FSNamesystem: supergroup=supergroup
10/07/20 00:51:13 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/07/20 00:51:14 INFO common.Storage: Image file of size 93 saved in 0 seconds.
10/07/20 00:51:14 INFO common.Storage: Storage directory /var/hadoop/hadoop-\max/dfs/name has been successfully formatted.
10/07/20 00:51:14 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at server/127.0.0.2
************************************************************/
Step 5. 啟動 hadoop
>/opt/hadoop-0.20.2/bin/start-all.sh
starting namenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-namenode-server.out
localhost: starting datanode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-datanode-server.out
localhost: starting secondarynamenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-secondarynamenode-server.out
starting jobtracker, logging to /opt/hadoop-0.20.2/logs/hadoop-max-jobtracker-server.out
localhost: starting tasktracker, logging to /opt/hadoop-0.20.2/logs/hadoop-max-tasktracker-server.out
Step 6. 檢查運作狀態
Hadoop 管理介面
http://localhost:50030
Hadoop Task Tracker
http://localhost:50060
Hadoop DFS
http://localhost:50070
Lab2 HDFS 常用指令練習
1.
觀察指令相關說明
>/opt/hadoop-0.20.2/bin/hadoop fs
使用 hadoop 指令列出HDFS 下面的檔案
, 因為還沒有上傳資料到HDFS 上面, 所以會出現錯誤訊息
>/opt/hadoop-0.20.2/bin/hadoop fs -ls
2. 上傳 /opt/hadoop-0.20.2/conf 目錄到 HDFS 命名為 input
#hadoop 指令 上傳 本機目錄 HDFS目錄名稱
>/opt/hadoop-0.20.2/bin/hadoop fs -put /opt/hadoop-0.20.2/conf input
3. 再次檢查 HDFS 上面的檔案
3-1 check the HDFS
> /opt/hadoop-0.20.2/bin/hadoop fs -ls
Found 1 items
drwxr-xr-x - max supergroup 0 2010-07-18 21:16 /user/max/input
如果沒有指定路徑, 預設是 /user/使用者名稱
也可以使用 完整路徑, 例如
> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/
Tips: 也可以上傳前及上傳後觀察 /var/hadoop 下的目錄
(雖然不能看到架構, 但是可以看到資料進到本機)
>ls -lh /var/hadoop/hadoop-\\max/dfs/data/current/
3-2 進一步觀察 input 目錄
>/opt/hadoop-0.20.2/bin/hadoop fs -ls input
Found 13 items
-rw-r--r-- 1 max supergroup 3936 2010-07-21 16:00 /user/max/input/capacity-scheduler.xml
-rw-r--r-- 1 max supergroup 535 2010-07-21 16:00 /user/max/input/configuration.xsl
-rw-r--r-- 1 max supergroup 379 2010-07-21 16:00 /user/max/input/core-site.xml
-rw-r--r-- 1 max supergroup 2367 2010-07-21 16:00 /user/max/input/hadoop-env.sh
-rw-r--r-- 1 max supergroup 1245 2010-07-21 16:00 /user/max/input/hadoop-metrics.properties
-rw-r--r-- 1 max supergroup 4190 2010-07-21 16:00 /user/max/input/hadoop-policy.xml
-rw-r--r-- 1 max supergroup 254 2010-07-21 16:00 /user/max/input/hdfs-site.xml
-rw-r--r-- 1 max supergroup 2815 2010-07-21 16:00 /user/max/input/log4j.properties
-rw-r--r-- 1 max supergroup 270 2010-07-21 16:00 /user/max/input/mapred-site.xml
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/masters
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/slaves
-rw-r--r-- 1 max supergroup 1243 2010-07-21 16:00 /user/max/input/ssl-client.xml.example
-rw-r--r-- 1 max supergroup 1195 2010-07-21 16:00 /user/max/input/ssl-server.xml.example
4. 從 HDFS 上面下載檔案
首先觀察目前的目錄
>ls
使用 hadoop fs -get 下載
>/opt/hadoop-0.20.2/bin/hadoop fs -get input fromHDFS
再次觀察目前的目錄
>ls
5. 觀看 HDFS 內的檔案內容 使用 -cat
>/opt/hadoop-0.20.2/bin/hadoop fs -cat input/slaves
localhost
6. 刪除 HDFS 檔案 使用 -rm (如果是目錄要使用 -rmr )
首先觀察 input 目錄內的檔案
>> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/input
Found 13 items
-rw-r--r-- 1 max supergroup 3936 2010-07-21 16:00 /user/max/input/capacity-scheduler.xml
-rw-r--r-- 1 max supergroup 535 2010-07-21 16:00 /user/max/input/configuration.xsl
-rw-r--r-- 1 max supergroup 379 2010-07-21 16:00 /user/max/input/core-site.xml
-rw-r--r-- 1 max supergroup 2367 2010-07-21 16:00 /user/max/input/hadoop-env.sh
-rw-r--r-- 1 max supergroup 1245 2010-07-21 16:00 /user/max/input/hadoop-metrics.properties
-rw-r--r-- 1 max supergroup 4190 2010-07-21 16:00 /user/max/input/hadoop-policy.xml
-rw-r--r-- 1 max supergroup 254 2010-07-21 16:00 /user/max/input/hdfs-site.xml
-rw-r--r-- 1 max supergroup 2815 2010-07-21 16:00 /user/max/input/log4j.properties
-rw-r--r-- 1 max supergroup 270 2010-07-21 16:00 /user/max/input/mapred-site.xml
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/masters
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/slaves
-rw-r--r-- 1 max supergroup 1243 2010-07-21 16:00 /user/max/input/ssl-client.xml.example
-rw-r--r-- 1 max supergroup 1195 2010-07-21 16:00 /user/max/input/ssl-server.xml.example
使用 hadoop 指令 -rm 的方式刪除檔案
>/opt/hadoop-0.20.2/bin/hadoop fs -rm input/slaves
Deleted hdfs://localhost:9000/user/max/input/slaves
再次觀察 input 目錄內的檔案
>> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/input
Found 12 items
-rw-r--r-- 1 max supergroup 3936 2010-07-22 15:08 /user/max/input/capacity-scheduler.xml
-rw-r--r-- 1 max supergroup 535 2010-07-22 15:08 /user/max/input/configuration.xsl
-rw-r--r-- 1 max supergroup 379 2010-07-22 15:08 /user/max/input/core-site.xml
-rw-r--r-- 1 max supergroup 2367 2010-07-22 15:08 /user/max/input/hadoop-env.sh
-rw-r--r-- 1 max supergroup 1245 2010-07-22 15:08 /user/max/input/hadoop-metrics.properties
-rw-r--r-- 1 max supergroup 4190 2010-07-22 15:08 /user/max/input/hadoop-policy.xml
-rw-r--r-- 1 max supergroup 254 2010-07-22 15:08 /user/max/input/hdfs-site.xml
-rw-r--r-- 1 max supergroup 2815 2010-07-22 15:08 /user/max/input/log4j.properties
-rw-r--r-- 1 max supergroup 270 2010-07-22 15:08 /user/max/input/mapred-site.xml
-rw-r--r-- 1 max supergroup 10 2010-07-22 15:08 /user/max/input/masters
-rw-r--r-- 1 max supergroup 1243 2010-07-22 15:08 /user/max/input/ssl-client.xml.example
-rw-r--r-- 1 max supergroup 1195 2010-07-22 15:08 /user/max/input/ssl-server.xml.example
使用 hadoop 指令 -rmr 的方式刪除目錄
>/opt/hadoop-0.20.2/bin/hadoop fs -rm input
Deleted hdfs://localhost:9000/user/max/input
Lab 3 Hadoop 範例練習
1.grep 指令練習
1-1上傳 /opt/hadoop-0.20.2/conf 目錄到 HDFS 命名為 source
#hadoop 指令 上傳 本機目錄 HDFS目錄名稱
>/opt/hadoop-0.20.2/bin/hadoop fs -put /opt/hadoop-0.20.2/conf source
1-2 確認 source 目錄上傳成功
> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/
Found 1 items
drwxr-xr-x - max supergroup 0 2010-07-23 15:13 /user/max/source
1-3 使用 grep 找出 source 目錄內文件 以 dfs 為開頭的文字, 儲存到 output-1
>/opt/hadoop-0.20.2/bin/hadoop jar /opt/hadoop-0.20.2/hadoop-0.20.2-examples.jar grep source output-1 'dfs[a-z.]+'
1-4 檢查結果
>/opt/hadoop-0.20.2/bin/hadoop fs -ls output-1
Found 2 items
drwxr-xr-x - max supergroup 0 2010-07-20 00:33 /user/max/output/_logs
-rw-r--r-- 1 max supergroup 96 2010-07-20 00:33 /user/max/output/part-00000
>/opt/hadoop-0.20.2/bin/hadoop fs -cat output-1/part-00000
3 dfs.class
2 dfs.period
1 dfs.file
1 dfs.replication
1 dfs.servers
1 dfsadmin
1 dfsmetrics.log
2. wordcount 練習
2-1 計算 source 目錄內所有文件內的字 並儲存到 output-2
>/opt/hadoop-0.20.2/bin/hadoop jar /opt/hadoop-0.20.2/hadoop-0.20.2-examples.jar wordcount source output-2
2-2 檢查結果
>/opt/hadoop-0.20.2/bin/hadoop fs -ls output-2
Found 2 items
drwxr-xr-x - max supergroup 0 2010-07-20 02:00 /user/max/output-2/_logs
-rw-r--r-- 1 max supergroup 10886 2010-07-20 02:01 /user/max/output-2/part-r-00000
>/opt/hadoop-0.20.2/bin/hadoop fs -cat output-2/part-r-00000
顯示計算結果
3. 解 sudoku 練習 ^__^
3-1 請下載 sudoku 檔案到 /home/max/
3-2 run the sudoku solver
> /opt/hadoop-0.20.2/bin/hadoop jar /opt/hadoop-0.20.2/hadoop-0.20.2-examples.jar sudoku /home/max/sudoku-n.txt
Lab 4 Hadoop Cluster 架設實做
以下操作請在 Server 2 上面操作
請以 使用者 max 密碼 linux 登入系統
1, 準備相關目錄
>sudo mkdir /opt/hadoop-0.20.2
會提示輸入 root 密碼, 請輸入 linux
>sudo mkdir /var/hadoop
>sudo chown -R max:users /opt/hadoop-0.20.2/
>sudo chown -R max:users /var/hadoop
設定名稱解析
>sudo vi /etc/hosts
請註解 server2 的 127.0.0.2 名稱解析
#127.0.0.2 server2.digitalairlines.com server2
請新增 server1 及 server2 的IP
10.10.x.y server.digitalairlines.com server
10.10.v.w server2.digitalairlines.com server2
-----------------------------------------------------------------------------------------------------------------------
請在 Server 1 上面( 第一台主機 )
1-1 stop hadoop
>/opt/hadoop-0.20.2/bin/stop-all.sh
1-2 刪除 hadoop 相關資料
>rm -rf /var/hadoop/*
1-3 修改相關設定 Namenode 設定
>vi /opt/hadoop-0.20.2/conf/core-site.xml
請修改
<value>hdfs://localhost:9000</value>
請改為 server1 的 IP
<value>hdfs://Srv1’s ip:9000</value>
***可以使用 “>ip address show” 或 “/sbin/ifconfig” 觀察 IP address***
1-4 修改 HDFS 副本數量
>vi /opt/hadoop-0.20.2/conf/hdfs-site.xml
請修改
<value>1</value>
請改為
<value>2</value>
1-5
>vi /opt/hadoop-0.20.2/conf/mapred-site.xml
請修改
1-6 設定 slaves 檔案(列於 slaves 的主機就會擔任 datanode 及 tasktracker 角色)
>vi /opt/hadoop-0.20.2/conf/slaves
請刪除 localhost
請加入 Srv1’s ip
請加入 Srv2’s ip
***在此次的工作坊 ip addree 應該會是 10.10.x.y ***
1-7 設定名稱解析
>sudo vi /etc/hosts
請註解 server1 的 127.0.0.2 名稱解析
#127.0.0.2 server.digitalairlines.com server
請新增 server1 及 server2 的IP
10.10.x.y server.digitalairlines.com server
10.10.v.w server2.digitalairlines.com server2
1-8 修改 ssh 相關設定檔
>sudo vi /etc/ssh/ssh_config
請修改
# StrictHostKeyChecking ask
請取消註解並改為 no
StrictHostKeyChecking no
1-9 將 SSH 金鑰複製到 其他的Node
>scp -r ~/.ssh Srv2-IP:~/
Warning: Permanently added '10.10.v.w' (RSA) to the list of known hosts.
Password: 請輸入 max 密碼
測試 SSH 登入免密碼
測試連線 server1
>ssh Srv1’s IP
>exit
測試連線 server2
>ssh Srv2’s IP
>exit
1-10 複製 hadoop 到 Server 2
>scp -r /opt/hadoop-0.20.2/* Srv2-IP:/opt/hadoop-0.20.2/
1-11 格式化 HDFS
>/opt/hadoop-0.20.2/bin/hadoop namenode -format
請注意 IP 是否為 10.10.x.y
1-12 啟動 DFS (會根據 /opt/hadoop-0.20.2/conf/slaves 內去啟動 datanode )
>/opt/hadoop-0.20.2/bin/start-dfs.sh
請確認是否啟動 2個 datanode
starting namenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-namenode-linux-7tce.out
10.10.x.y: starting datanode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-datanode-linux-7tce.out
10.10.v.w: starting datanode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-datanode-server2.out
localhost: starting secondarynamenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-secondarynamenode-linux-7tce.out
請檢查 “ http://Srv1’s IP:50070/ ”
請確認 “Live Nodes” 應該是 2 個
1-13 啟動 JobTracker
>/opt/hadoop-0.20.2/bin/start-mapred.sh
請檢查 “ http://Srv1’s IP:50030/ ”
請確認 “Nodes” 應該是 2 個
Now, just run programs like Lab3 to examine
環境設定小記
作業系統: openSUSE 11.2
分割區規劃
- swap 1GB
- / 73.5GB
使用者管理
- 管理者 root 密碼 linux
- 使用者 max 密碼 linux
軟體
- 勾選 基礎開發套件
- 利用 shell script 更改套件庫到 http://ftp.twaren.net 加快下載速度
- 更新 opensuse 套件
- 將 DVD 複製到 /srv/ftp/install/opensuse11-2
- 安裝 java-1_6_0-sun-devel 套件( 因為openjdk 會有問題 ^^||)(在 update 套件庫內可以安裝)
服務
- 啟動 sshd 並預設啟動
- #rcsshd start
- #chkconfig sshd on
大量複製
- 修正 /etc/fstab 與 /boot/grub/menu.lst 內的硬碟位置 使用/dev/sda1 非使用 /dev/disk/by-id 的方式以免開機找不到硬碟
- 藉由刪除 /etc/udev/rules.d/70-persistent-net.rules 讓網卡可以生效(因為新的網卡會變成eth1, 而並非原來的 eth0 )
上課軟體準備
- 建立資料夾 OSSF 於 /opt
- 下載 hadoop-0.20.2.tar.gz 存放於 /opt/OSSF
- http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz
---------------------------------------- 練習步驟 ------------------------------------------
請以 使用者 max 登入系統, 密碼為 linux
請注意 shell 提示符號為 >
Step 1. 建立ssh 金鑰, 以便之後連線ssh 可以不輸入密碼
#利用非互動方式產生 Server1 的 DSA key pair
>ssh-keygen -N '' -d -q -f ~/.ssh/id_dsa
將公鑰複製一份為 authorized_keys
>cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys
>ssh-add ~/.ssh/id_dsa
Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa)
測試是否可以使用金鑰, 透過 SSH 登入系統
>ssh localhost
The authenticity of host 'localhost (: :1)' can't be established.
RSA key fingerprint is 05:22:61:78:05:04:7e:d1:81:67:f2:d5:8a:42:bb:9f.
Are you sure you want to continue connecting (yes/no)? 請輸入 yes
登出 SSH
>exit
Step 2. 安裝 Hadoop 套件
解壓縮 Hadoop 套件(預先下載於 /opt/OSSF) --使用sudo的方式
(因為 /opt 目錄 一般使用者沒有寫入權限)
>sudo tar zxvf /opt/OSSF/hadoop-0.20.2.tar.gz -C /opt
會要求輸入 root 管理者密碼, 請輸入 linux
更改 /opt/hadoop-0.20.2 擁有者為 max 群組為 users
> sudo chown -R max:users /opt/hadoop-0.20.2/
建立 /var/hadoop 目錄
> sudo mkdir /var/hadoop
更改 /var/hadoop 擁有者為 max 群組為 users
> sudo chown -R max:users /var/hadoop/
Step 3. 設定 Hadoop 設定檔
3-1. 設定環境變數 hadoop-env.sh
>vi /opt/hadoop-0.20.2/conf/hadoop-env.sh
#請加入以下設定
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-sun
export HADOOP_HOME=/opt/hadoop-0.20.2
export HADOOP_CONF_DIR=/opt/hadoop-0.20.2/conf
3-2. 請於 core-site.xml 內的 configuration 區段內加入紫色部份的設定
>vi /opt/hadoop-0.20.2/conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/hadoop-\${user.name}</value>
</property>
</configuration>
3-3. 請於 hdfs-site.xml 內的 configuration 區段內加入紫色部份的設定(設定副本的數量)
>vi /opt/hadoop-0.20.2/conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
3-4. 請於 mapred-site.xml 內的 configuration 區段內加入紫色部份的設定
(此為 JobTracker 的設定檔)
>vi /opt/hadoop-0.20.2/conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
Step 4. 格式化 HDFS
>/opt/hadoop-0.20.2/bin/hadoop namenode -format
10/07/20 00:51:13 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = server/127.0.0.2
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
10/07/20 00:51:13 INFO namenode.FSNamesystem: fsOwner=max,users,video
10/07/20 00:51:13 INFO namenode.FSNamesystem: supergroup=supergroup
10/07/20 00:51:13 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/07/20 00:51:14 INFO common.Storage: Image file of size 93 saved in 0 seconds.
10/07/20 00:51:14 INFO common.Storage: Storage directory /var/hadoop/hadoop-\max/dfs/name has been successfully formatted.
10/07/20 00:51:14 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at server/127.0.0.2
************************************************************/
Step 5. 啟動 hadoop
>/opt/hadoop-0.20.2/bin/start-all.sh
starting namenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-namenode-server.out
localhost: starting datanode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-datanode-server.out
localhost: starting secondarynamenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-secondarynamenode-server.out
starting jobtracker, logging to /opt/hadoop-0.20.2/logs/hadoop-max-jobtracker-server.out
localhost: starting tasktracker, logging to /opt/hadoop-0.20.2/logs/hadoop-max-tasktracker-server.out
Step 6. 檢查運作狀態
Hadoop 管理介面
http://localhost:50030
Hadoop Task Tracker
http://localhost:50060
Hadoop DFS
http://localhost:50070
Lab2 HDFS 常用指令練習
1.
觀察指令相關說明
>/opt/hadoop-0.20.2/bin/hadoop fs
使用 hadoop 指令列出HDFS 下面的檔案
, 因為還沒有上傳資料到HDFS 上面, 所以會出現錯誤訊息
>/opt/hadoop-0.20.2/bin/hadoop fs -ls
2. 上傳 /opt/hadoop-0.20.2/conf 目錄到 HDFS 命名為 input
#hadoop 指令 上傳 本機目錄 HDFS目錄名稱
>/opt/hadoop-0.20.2/bin/hadoop fs -put /opt/hadoop-0.20.2/conf input
3. 再次檢查 HDFS 上面的檔案
3-1 check the HDFS
> /opt/hadoop-0.20.2/bin/hadoop fs -ls
Found 1 items
drwxr-xr-x - max supergroup 0 2010-07-18 21:16 /user/max/input
如果沒有指定路徑, 預設是 /user/使用者名稱
也可以使用 完整路徑, 例如
> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/
Tips: 也可以上傳前及上傳後觀察 /var/hadoop 下的目錄
(雖然不能看到架構, 但是可以看到資料進到本機)
>ls -lh /var/hadoop/hadoop-\\max/dfs/data/current/
3-2 進一步觀察 input 目錄
>/opt/hadoop-0.20.2/bin/hadoop fs -ls input
Found 13 items
-rw-r--r-- 1 max supergroup 3936 2010-07-21 16:00 /user/max/input/capacity-scheduler.xml
-rw-r--r-- 1 max supergroup 535 2010-07-21 16:00 /user/max/input/configuration.xsl
-rw-r--r-- 1 max supergroup 379 2010-07-21 16:00 /user/max/input/core-site.xml
-rw-r--r-- 1 max supergroup 2367 2010-07-21 16:00 /user/max/input/hadoop-env.sh
-rw-r--r-- 1 max supergroup 1245 2010-07-21 16:00 /user/max/input/hadoop-metrics.properties
-rw-r--r-- 1 max supergroup 4190 2010-07-21 16:00 /user/max/input/hadoop-policy.xml
-rw-r--r-- 1 max supergroup 254 2010-07-21 16:00 /user/max/input/hdfs-site.xml
-rw-r--r-- 1 max supergroup 2815 2010-07-21 16:00 /user/max/input/log4j.properties
-rw-r--r-- 1 max supergroup 270 2010-07-21 16:00 /user/max/input/mapred-site.xml
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/masters
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/slaves
-rw-r--r-- 1 max supergroup 1243 2010-07-21 16:00 /user/max/input/ssl-client.xml.example
-rw-r--r-- 1 max supergroup 1195 2010-07-21 16:00 /user/max/input/ssl-server.xml.example
4. 從 HDFS 上面下載檔案
首先觀察目前的目錄
>ls
使用 hadoop fs -get 下載
>/opt/hadoop-0.20.2/bin/hadoop fs -get input fromHDFS
再次觀察目前的目錄
>ls
5. 觀看 HDFS 內的檔案內容 使用 -cat
>/opt/hadoop-0.20.2/bin/hadoop fs -cat input/slaves
localhost
6. 刪除 HDFS 檔案 使用 -rm (如果是目錄要使用 -rmr )
首先觀察 input 目錄內的檔案
>> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/input
Found 13 items
-rw-r--r-- 1 max supergroup 3936 2010-07-21 16:00 /user/max/input/capacity-scheduler.xml
-rw-r--r-- 1 max supergroup 535 2010-07-21 16:00 /user/max/input/configuration.xsl
-rw-r--r-- 1 max supergroup 379 2010-07-21 16:00 /user/max/input/core-site.xml
-rw-r--r-- 1 max supergroup 2367 2010-07-21 16:00 /user/max/input/hadoop-env.sh
-rw-r--r-- 1 max supergroup 1245 2010-07-21 16:00 /user/max/input/hadoop-metrics.properties
-rw-r--r-- 1 max supergroup 4190 2010-07-21 16:00 /user/max/input/hadoop-policy.xml
-rw-r--r-- 1 max supergroup 254 2010-07-21 16:00 /user/max/input/hdfs-site.xml
-rw-r--r-- 1 max supergroup 2815 2010-07-21 16:00 /user/max/input/log4j.properties
-rw-r--r-- 1 max supergroup 270 2010-07-21 16:00 /user/max/input/mapred-site.xml
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/masters
-rw-r--r-- 1 max supergroup 10 2010-07-21 16:00 /user/max/input/slaves
-rw-r--r-- 1 max supergroup 1243 2010-07-21 16:00 /user/max/input/ssl-client.xml.example
-rw-r--r-- 1 max supergroup 1195 2010-07-21 16:00 /user/max/input/ssl-server.xml.example
使用 hadoop 指令 -rm 的方式刪除檔案
>/opt/hadoop-0.20.2/bin/hadoop fs -rm input/slaves
Deleted hdfs://localhost:9000/user/max/input/slaves
再次觀察 input 目錄內的檔案
>> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/input
Found 12 items
-rw-r--r-- 1 max supergroup 3936 2010-07-22 15:08 /user/max/input/capacity-scheduler.xml
-rw-r--r-- 1 max supergroup 535 2010-07-22 15:08 /user/max/input/configuration.xsl
-rw-r--r-- 1 max supergroup 379 2010-07-22 15:08 /user/max/input/core-site.xml
-rw-r--r-- 1 max supergroup 2367 2010-07-22 15:08 /user/max/input/hadoop-env.sh
-rw-r--r-- 1 max supergroup 1245 2010-07-22 15:08 /user/max/input/hadoop-metrics.properties
-rw-r--r-- 1 max supergroup 4190 2010-07-22 15:08 /user/max/input/hadoop-policy.xml
-rw-r--r-- 1 max supergroup 254 2010-07-22 15:08 /user/max/input/hdfs-site.xml
-rw-r--r-- 1 max supergroup 2815 2010-07-22 15:08 /user/max/input/log4j.properties
-rw-r--r-- 1 max supergroup 270 2010-07-22 15:08 /user/max/input/mapred-site.xml
-rw-r--r-- 1 max supergroup 10 2010-07-22 15:08 /user/max/input/masters
-rw-r--r-- 1 max supergroup 1243 2010-07-22 15:08 /user/max/input/ssl-client.xml.example
-rw-r--r-- 1 max supergroup 1195 2010-07-22 15:08 /user/max/input/ssl-server.xml.example
使用 hadoop 指令 -rmr 的方式刪除目錄
>/opt/hadoop-0.20.2/bin/hadoop fs -rm input
Deleted hdfs://localhost:9000/user/max/input
Lab 3 Hadoop 範例練習
1.grep 指令練習
1-1上傳 /opt/hadoop-0.20.2/conf 目錄到 HDFS 命名為 source
#hadoop 指令 上傳 本機目錄 HDFS目錄名稱
>/opt/hadoop-0.20.2/bin/hadoop fs -put /opt/hadoop-0.20.2/conf source
1-2 確認 source 目錄上傳成功
> /opt/hadoop-0.20.2/bin/hadoop fs -ls /user/max/
Found 1 items
drwxr-xr-x - max supergroup 0 2010-07-23 15:13 /user/max/source
1-3 使用 grep 找出 source 目錄內文件 以 dfs 為開頭的文字, 儲存到 output-1
>/opt/hadoop-0.20.2/bin/hadoop jar /opt/hadoop-0.20.2/hadoop-0.20.2-examples.jar grep source output-1 'dfs[a-z.]+'
1-4 檢查結果
>/opt/hadoop-0.20.2/bin/hadoop fs -ls output-1
Found 2 items
drwxr-xr-x - max supergroup 0 2010-07-20 00:33 /user/max/output/_logs
-rw-r--r-- 1 max supergroup 96 2010-07-20 00:33 /user/max/output/part-00000
>/opt/hadoop-0.20.2/bin/hadoop fs -cat output-1/part-00000
3 dfs.class
2 dfs.period
1 dfs.file
1 dfs.replication
1 dfs.servers
1 dfsadmin
1 dfsmetrics.log
2. wordcount 練習
2-1 計算 source 目錄內所有文件內的字 並儲存到 output-2
>/opt/hadoop-0.20.2/bin/hadoop jar /opt/hadoop-0.20.2/hadoop-0.20.2-examples.jar wordcount source output-2
2-2 檢查結果
>/opt/hadoop-0.20.2/bin/hadoop fs -ls output-2
Found 2 items
drwxr-xr-x - max supergroup 0 2010-07-20 02:00 /user/max/output-2/_logs
-rw-r--r-- 1 max supergroup 10886 2010-07-20 02:01 /user/max/output-2/part-r-00000
>/opt/hadoop-0.20.2/bin/hadoop fs -cat output-2/part-r-00000
顯示計算結果
3. 解 sudoku 練習 ^__^
3-1 請下載 sudoku 檔案到 /home/max/
3-2 run the sudoku solver
> /opt/hadoop-0.20.2/bin/hadoop jar /opt/hadoop-0.20.2/hadoop-0.20.2-examples.jar sudoku /home/max/sudoku-n.txt
Lab 4 Hadoop Cluster 架設實做
以下操作請在 Server 2 上面操作
請以 使用者 max 密碼 linux 登入系統
1, 準備相關目錄
>sudo mkdir /opt/hadoop-0.20.2
會提示輸入 root 密碼, 請輸入 linux
>sudo mkdir /var/hadoop
>sudo chown -R max:users /opt/hadoop-0.20.2/
>sudo chown -R max:users /var/hadoop
設定名稱解析
>sudo vi /etc/hosts
請註解 server2 的 127.0.0.2 名稱解析
#127.0.0.2 server2.digitalairlines.com server2
請新增 server1 及 server2 的IP
10.10.x.y server.digitalairlines.com server
10.10.v.w server2.digitalairlines.com server2
-----------------------------------------------------------------------------------------------------------------------
請在 Server 1 上面( 第一台主機 )
1-1 stop hadoop
>/opt/hadoop-0.20.2/bin/stop-all.sh
1-2 刪除 hadoop 相關資料
>rm -rf /var/hadoop/*
1-3 修改相關設定 Namenode 設定
>vi /opt/hadoop-0.20.2/conf/core-site.xml
請修改
<value>hdfs://localhost:9000</value>
請改為 server1 的 IP
<value>hdfs://Srv1’s ip:9000</value>
***可以使用 “>ip address show” 或 “/sbin/ifconfig” 觀察 IP address***
1-4 修改 HDFS 副本數量
>vi /opt/hadoop-0.20.2/conf/hdfs-site.xml
請修改
<value>1</value>
請改為
<value>2</value>
1-5
>vi /opt/hadoop-0.20.2/conf/mapred-site.xml
請修改
<value>localhost:9001</value>
請改為<value>Srv1’s ip:9001</value>
1-6 設定 slaves 檔案(列於 slaves 的主機就會擔任 datanode 及 tasktracker 角色)
>vi /opt/hadoop-0.20.2/conf/slaves
請刪除 localhost
請加入 Srv1’s ip
請加入 Srv2’s ip
***在此次的工作坊 ip addree 應該會是 10.10.x.y ***
1-7 設定名稱解析
>sudo vi /etc/hosts
請註解 server1 的 127.0.0.2 名稱解析
#127.0.0.2 server.digitalairlines.com server
請新增 server1 及 server2 的IP
10.10.x.y server.digitalairlines.com server
10.10.v.w server2.digitalairlines.com server2
1-8 修改 ssh 相關設定檔
>sudo vi /etc/ssh/ssh_config
請修改
# StrictHostKeyChecking ask
請取消註解並改為 no
StrictHostKeyChecking no
1-9 將 SSH 金鑰複製到 其他的Node
>scp -r ~/.ssh Srv2-IP:~/
Warning: Permanently added '10.10.v.w' (RSA) to the list of known hosts.
Password: 請輸入 max 密碼
測試 SSH 登入免密碼
測試連線 server1
>ssh Srv1’s IP
>exit
測試連線 server2
>ssh Srv2’s IP
>exit
1-10 複製 hadoop 到 Server 2
>scp -r /opt/hadoop-0.20.2/* Srv2-IP:/opt/hadoop-0.20.2/
1-11 格式化 HDFS
>/opt/hadoop-0.20.2/bin/hadoop namenode -format
請注意 IP 是否為 10.10.x.y
1-12 啟動 DFS (會根據 /opt/hadoop-0.20.2/conf/slaves 內去啟動 datanode )
>/opt/hadoop-0.20.2/bin/start-dfs.sh
請確認是否啟動 2個 datanode
starting namenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-namenode-linux-7tce.out
10.10.x.y: starting datanode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-datanode-linux-7tce.out
10.10.v.w: starting datanode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-datanode-server2.out
localhost: starting secondarynamenode, logging to /opt/hadoop-0.20.2/logs/hadoop-max-secondarynamenode-linux-7tce.out
請檢查 “ http://Srv1’s IP:50070/ ”
請確認 “Live Nodes” 應該是 2 個
1-13 啟動 JobTracker
>/opt/hadoop-0.20.2/bin/start-mapred.sh
請檢查 “ http://Srv1’s IP:50030/ ”
請確認 “Nodes” 應該是 2 個
Now, just run programs like Lab3 to examine
沒有留言:
張貼留言