在執行hadoop job時, 可以從管理的網頁觀察到 job 運行的狀態,
亦可觀察到job中的 task 運作的情況,
如下圖
好奇的是, 每個 task 的"Complete"的%數是怎麼來的
簡單去查看了一下jobtasks.jsp source code,
發現他是用到 Hadoop API 中的 TaskReports 這個class裡面的 getProgress()
但 getProgress() 是以 0~1 表現task完成度
所以 jobtasks.jsp 中在
--------
...
for (int i = start_index ; i < end_index; i++) {
TaskReport report = reports[i];
out.print("<tr><td><a href=\"taskdetails.jsp?tipid=" +
report.getTaskID() + "\">" + report.getTaskID() + "</a></td>");
out.print("<td>" + StringUtils.formatPercent(report.getProgress(),2) +
ServletUtil.percentageGraph(report.getProgress() * 100f, 80) + "</td>");
...
----------
乘上100來便於觀測完成的%數
2012年6月18日 星期一
2012年6月17日 星期日
VirtualBox Screen Size adjusting
VirtualBox的VM視窗大小可拖拉視窗邊緣來調整,
但有時會當解析度太大時會造成VM視窗無法涵蓋整個VM裡頭原有的螢幕大小,
導致操作不便, 如下
此時可透過去調整VM OS的解析度來解決VMS1
找到顯示器的選項
解析度調整為800X600
保留組態並關閉顯示器的設定
完成後的VM視窗比例,含括了整個VM內部OS的視窗, 相較下操作性更為便利
但有時會當解析度太大時會造成VM視窗無法涵蓋整個VM裡頭原有的螢幕大小,
導致操作不便, 如下
此時可透過去調整VM OS的解析度來解決VMS1
找到顯示器的選項
解析度調整為800X600
保留組態並關閉顯示器的設定
完成後的VM視窗比例,含括了整個VM內部OS的視窗, 相較下操作性更為便利
2012年6月10日 星期日
ignore the yes/no checking while ssh connect first time
[Problem]
當每回第一次連線到一個新的ip/host時總會產生以下的訊息:
此時就又必須在輸入一次" yes"才會完成連線
那假若不想輸入yes就直接連線進去可用以下方法
[Method]
在 ~/.ssh/ 中新創一份檔案叫 config
然後在config中加入
Host 192.168.1.1
儲存.
而之後若是第一次作ssh連線到192.168.1.1的host時,
就不會在出現以上的訊息, 也不用在輸入yes就可直接進入連線
[Note]
適用情況之一:
假設像是hadoop這種大規模數量的node建置時,
master必須先把authorized_keys scp給每個slave, 但手動每次的scp太花費時間,
當寫成shell script時又會卡在上述問題的詢問上,
此時就可先在master的~/.ssh/config 上利用Method加入所有slave
當每回第一次連線到一個新的ip/host時總會產生以下的訊息:
user@host:$ ssh 192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ECDSA key fingerprint is c7:16:8b:55:c8:39:24:5a:db:cd:e9:79:8c:24:59:39.
Are you sure you want to continue connecting (yes/no)?
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ECDSA key fingerprint is c7:16:8b:55:c8:39:24:5a:db:cd:e9:79:8c:24:59:39.
Are you sure you want to continue connecting (yes/no)?
此時就又必須在輸入一次" yes"才會完成連線
那假若不想輸入yes就直接連線進去可用以下方法
[Method]
在 ~/.ssh/ 中新創一份檔案叫 config
然後在config中加入
Host 192.168.1.1
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null儲存.
而之後若是第一次作ssh連線到192.168.1.1的host時,
就不會在出現以上的訊息, 也不用在輸入yes就可直接進入連線
[Note]
適用情況之一:
假設像是hadoop這種大規模數量的node建置時,
master必須先把authorized_keys scp給每個slave, 但手動每次的scp太花費時間,
當寫成shell script時又會卡在上述問題的詢問上,
此時就可先在master的~/.ssh/config 上利用Method加入所有slave
2012年6月6日 星期三
VirtualBox install on ubuntu
VirualBox 要安裝在 ubuntu上非常簡單
[Version]
Ubuntu 12.04
VirtualBox
[Steps]
1. Download VirtualBox package
2. sudo apt-get install dkms
3. sudo dpkg -i VirtualBox-3.2_4.1.16_Ubuntu_karmic_i386.deb
4. 要開啟virtualbox也很簡單, 只要在terminal上執行 virtualbox
就會開啟圖形介面
[Reference]
https://www.virtualbox.org/manual/ch02.html#idp12629648
[Version]
Ubuntu 12.04
VirtualBox
[Steps]
1. Download VirtualBox package
2. sudo apt-get install dkms
3. sudo dpkg -i VirtualBox-3.2_4.1.16_Ubuntu_karmic_i386.deb
就會開啟圖形介面
[Reference]
https://www.virtualbox.org/manual/ch02.html#idp12629648
Virtualbox-Build multiple VMs cross mutiple physical servers
[Motivation]
當想模擬數十台甚至數百台VM所組成的cluster時, 單一實體server會受限於cpu數量以及memory大小, 而無法建立如此多台VM, 所以必須跨連到其他實體的servers, 此時VM又該如何佈署及設置網路?
[Virtual Machine]
本篇使用的是VirtualBox4.1版
[Physical Machine]
HP ProLiant DL380 G6 (2core, 20G mem, 500G hd ) X 3
各自OS為 Ubuntu 12.04
[Method]
1. Install virtualbox at each physical servers 在各個server上安裝virtualbox
參考:http://lifenote332.blogspot.tw/2012/06/virtualbox-install-on-ubuntu.html
2. Start Virtualbox and Create a new VM 新增一個新VM
a. 設定[名稱], 選擇[作業系統]及[版本]
(在此的名稱與VM內的OS完全沒關, 只是Virtualbox辨識用)
b. 設定[記憶體大小] (在這設1G)
c. 啟動硬碟-->選擇[新建硬碟]
d. 檔案類型-->選擇[VDI]
e. 存放裝置選擇詳細資料-->選擇[動態配置]
f. 虛擬磁碟檔案位置-->選擇(即將創造的vdi檔的存放位置), 大小-->選擇(在此設成50G)
g. 完成建立
3. Set two network interface cards for the VM 給予此VM兩張網卡
a. NAT(Network Address Translation):
概念:模擬自身就是本台實體server(Host OS), 以便對外連線, 但會使得實體server無法偵測到自己(此VM即Guest OS), 也因此無法連線到其他實體server上的VM
功用:便利此VM上網作些更新或下載的動作
b. Bridge
概念:模擬自身與本台實體server(Host OS)存在於同一個Hob or Router底下,使得實體server能偵測得到自己, 因此在其他實體server上的VM也同樣的設定下, 可偵測到彼此
功用:讓VM不僅可在本台實體server上互連, 也可與其他台實體server上的VM互連
4. Install OS and set network configuration on the VM 安裝OS及設定網路
a. 在此安裝linux OS(Ubuntu 11.10)
b. 網路設定的部份, 選擇[編輯連線], 因為先前給予了兩張網卡所以會有兩個連線, 而連線對映的設置應為:
I. 裝置的MAC Address : (eth0) 即為給予的NAT網卡 --> IPv4設定 :自動(DHCP)
II. 裝置的MAC Address : (eth1) 即為給予的Bridge網卡 --> IPv4設定 :手動(manual)
address : 192.168.X.X(X表示自行設置, 在此設成192.168.123.1)
mask: 255.255.X.X(在此設成255.255.255.0)
gateway: 192.168.X.254(在此設成192.168.123.254, 網路上似乎常用254)
DNS server: (同gateway)
a. 執行:vboxmanage clonvdi old.vdi new.vdi
便會產生新的vdi來開啟新的VM
b. 執行:vboxmanage internalcommands sethduuid new.vdi
因為有可能新舊兩個VM的uuid重複導致Virtualbox無法去開啟, 所以需在給new.vdi一個隨機的新uuid
a. 再次實行2. , 只是到2. c.時, 選擇[使用現有硬碟], 然後選取要使用的vdi檔
(因為在"啟動硬碟"此步驟時, virtualbox會建立一個新VM的資料夾, 我習慣先把要開啟的vdi檔先移到此然後在選取開啟, 這樣新VM的資料夾就對應新vdi, 比較方便管理)
b. 執行3.
c. 執行4. , 但不用在裝OS(因為已經有了), 只需調整網卡的部份及IP
(IP一樣設成192.168.X.X)
d. 修改hostname, 執行:sudo gedit /etc/hostname 修改完要重開VM
(不要跟其他VM重複, 自己容易辨識的就行)
重複5., 6. 即可佈署大量的VM
[Recommendation]
A. 假設想要所有VM都裝一些相同套件(ex. hadoop and Java)或設定, 可在一開始建第一個VM就都先下載安裝好, 如此複製此VM所產生的vdi也會具有相同的套件安裝
B. 想建立ssh免密碼連線, 可以先在第一台VM做好自己連自己的免密碼
C. 若想建立一個大型互連的cluster, 在host設定上為了減少麻煩, 可在第一台VM先設置好
/etc/hosts, 將想要互連的host全部設進去, 之後的VM建立就不用在一個個去修改hosts
D. 當每次新建好一個VM時(就是網卡及hostname等全部設好),
1. 先ssh 到先前已經建好的VM, 若OK則表示Bridge設置沒問題
2. 然後開啟網頁瀏覽器, 若能正常開啟連外網頁, 則表示NAT沒問題
[延伸]
X. 曾經想過, 若VMs分佈在很多台physical machines上時, 控管每個VM要不斷轉換去使用各個physical machine, 這樣顯得很麻煩, 後來有找到一套軟體可以在單一一台server上就可去連到各個physical machine上的VM, 叫做"RemoteBox", 不過在嘗試使用下, 雖確實可以連到各台的VMs, 但卻無法開啟該VM的視窗畫面, 這點尚未突破
RemoteBox官網:
remotebox.knobgoblin.org.uk/downloads.cgi
[Reference]
多台實體machine建VM hadoop cluster
http://changyy.pixnet.net/blog/post/25612440-%5Blinux%5D-%E5%AE%89%E8%A3%9D-hadoop-0.20.1-multi-node-cluster-@-ubuntu-9.1
remotebox相關介紹
http://www.openfoundry.org/index.php?option=com_content&task=view&id=8319&Itemid=40
vboxmanage 指令doc
http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm
vboxmanage clonevdi指令介紹
http://lbt95.pixnet.net/blog/post/30970746-%5Bvirtualbox%5D-%E4%BD%BF%E7%94%A8vboxmanage-%E8%A4%87%E8%A3%BD%E5%87%BA%E7%AC%AC%E4%BA%8C%E5%80%8B%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1
virtualbox 網卡type介紹
http://www.wretch.cc/blog/mk99/22949462
當想模擬數十台甚至數百台VM所組成的cluster時, 單一實體server會受限於cpu數量以及memory大小, 而無法建立如此多台VM, 所以必須跨連到其他實體的servers, 此時VM又該如何佈署及設置網路?
[Virtual Machine]
本篇使用的是VirtualBox4.1版
[Physical Machine]
HP ProLiant DL380 G6 (2core, 20G mem, 500G hd ) X 3
各自OS為 Ubuntu 12.04
[Method]
1. Install virtualbox at each physical servers 在各個server上安裝virtualbox
參考:http://lifenote332.blogspot.tw/2012/06/virtualbox-install-on-ubuntu.html
2. Start Virtualbox and Create a new VM 新增一個新VM
a. 設定[名稱], 選擇[作業系統]及[版本]
(在此的名稱與VM內的OS完全沒關, 只是Virtualbox辨識用)
b. 設定[記憶體大小] (在這設1G)
c. 啟動硬碟-->選擇[新建硬碟]
d. 檔案類型-->選擇[VDI]
e. 存放裝置選擇詳細資料-->選擇[動態配置]
f. 虛擬磁碟檔案位置-->選擇(即將創造的vdi檔的存放位置), 大小-->選擇(在此設成50G)
g. 完成建立
3. Set two network interface cards for the VM 給予此VM兩張網卡
a. NAT(Network Address Translation):
概念:模擬自身就是本台實體server(Host OS), 以便對外連線, 但會使得實體server無法偵測到自己(此VM即Guest OS), 也因此無法連線到其他實體server上的VM
功用:便利此VM上網作些更新或下載的動作
b. Bridge
概念:模擬自身與本台實體server(Host OS)存在於同一個Hob or Router底下,使得實體server能偵測得到自己, 因此在其他實體server上的VM也同樣的設定下, 可偵測到彼此
功用:讓VM不僅可在本台實體server上互連, 也可與其他台實體server上的VM互連
4. Install OS and set network configuration on the VM 安裝OS及設定網路
a. 在此安裝linux OS(Ubuntu 11.10)
b. 網路設定的部份, 選擇[編輯連線], 因為先前給予了兩張網卡所以會有兩個連線, 而連線對映的設置應為:
I. 裝置的MAC Address : (eth0) 即為給予的NAT網卡 --> IPv4設定 :自動(DHCP)
II. 裝置的MAC Address : (eth1) 即為給予的Bridge網卡 --> IPv4設定 :手動(manual)
address : 192.168.X.X(X表示自行設置, 在此設成192.168.123.1)
mask: 255.255.X.X(在此設成255.255.255.0)
gateway: 192.168.X.254(在此設成192.168.123.254, 網路上似乎常用254)
DNS server: (同gateway)
5. Clone VDI 複製vdi
當一個VM建好時, 他所有的設定都包成了一個vdi檔, 當然也可以複製此vdi來開啟另一個新的VM, 使其具備與原始的VM有同樣的設定, 但無法直接複製, 必須透過VirtualBox上的指令a. 執行:vboxmanage clonvdi old.vdi new.vdi
便會產生新的vdi來開啟新的VM
b. 執行:vboxmanage internalcommands sethduuid new.vdi
因為有可能新舊兩個VM的uuid重複導致Virtualbox無法去開啟, 所以需在給new.vdi一個隨機的新uuid
6. Deploy new VM 開始佈署VM
複製好的vdi, 可在本機開啟成新的VM, 亦可透過scp傳給其他台實體server 來開啟新的VMa. 再次實行2. , 只是到2. c.時, 選擇[使用現有硬碟], 然後選取要使用的vdi檔
(因為在"啟動硬碟"此步驟時, virtualbox會建立一個新VM的資料夾, 我習慣先把要開啟的vdi檔先移到此然後在選取開啟, 這樣新VM的資料夾就對應新vdi, 比較方便管理)
b. 執行3.
c. 執行4. , 但不用在裝OS(因為已經有了), 只需調整網卡的部份及IP
(IP一樣設成192.168.X.X)
d. 修改hostname, 執行:sudo gedit /etc/hostname 修改完要重開VM
(不要跟其他VM重複, 自己容易辨識的就行)
重複5., 6. 即可佈署大量的VM
[Recommendation]
A. 假設想要所有VM都裝一些相同套件(ex. hadoop and Java)或設定, 可在一開始建第一個VM就都先下載安裝好, 如此複製此VM所產生的vdi也會具有相同的套件安裝
B. 想建立ssh免密碼連線, 可以先在第一台VM做好自己連自己的免密碼
C. 若想建立一個大型互連的cluster, 在host設定上為了減少麻煩, 可在第一台VM先設置好
/etc/hosts, 將想要互連的host全部設進去, 之後的VM建立就不用在一個個去修改hosts
D. 當每次新建好一個VM時(就是網卡及hostname等全部設好),
1. 先ssh 到先前已經建好的VM, 若OK則表示Bridge設置沒問題
2. 然後開啟網頁瀏覽器, 若能正常開啟連外網頁, 則表示NAT沒問題
[延伸]
X. 曾經想過, 若VMs分佈在很多台physical machines上時, 控管每個VM要不斷轉換去使用各個physical machine, 這樣顯得很麻煩, 後來有找到一套軟體可以在單一一台server上就可去連到各個physical machine上的VM, 叫做"RemoteBox", 不過在嘗試使用下, 雖確實可以連到各台的VMs, 但卻無法開啟該VM的視窗畫面, 這點尚未突破
RemoteBox官網:
remotebox.knobgoblin.org.uk/downloads.cgi
[Reference]
多台實體machine建VM hadoop cluster
http://changyy.pixnet.net/blog/post/25612440-%5Blinux%5D-%E5%AE%89%E8%A3%9D-hadoop-0.20.1-multi-node-cluster-@-ubuntu-9.1
remotebox相關介紹
http://www.openfoundry.org/index.php?option=com_content&task=view&id=8319&Itemid=40
vboxmanage 指令doc
http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm
vboxmanage clonevdi指令介紹
http://lbt95.pixnet.net/blog/post/30970746-%5Bvirtualbox%5D-%E4%BD%BF%E7%94%A8vboxmanage-%E8%A4%87%E8%A3%BD%E5%87%BA%E7%AC%AC%E4%BA%8C%E5%80%8B%E4%BD%9C%E6%A5%AD%E7%B3%BB%E7%B5%B1
virtualbox 網卡type介紹
http://www.wretch.cc/blog/mk99/22949462
訂閱:
文章 (Atom)