Pages

Subscribe:

Ads 468x60px

Labels

顯示具有 雲端運算 標籤的文章。 顯示所有文章
顯示具有 雲端運算 標籤的文章。 顯示所有文章

2013年12月2日 星期一

創新服務更要小心 雲端運算的安全與風險

花俊傑
談到雲端運算,它究竟是一種「技術」或「概念」,到底是「產品」還是「服務」,在搜尋引擎上只要打入關鍵字,就可以看到許多不同的見解與想法。本文僅從資訊安全的角度,來探討雲端運算可能帶來的資安問題或風險,以提供給資訊管理人員作為參考。
雲端運算(Cloud Computing)從2008年開始就是一個熱門話題,對於雲端運算的應用,無論是應用程式服務、資安服務或資料儲存等等,各家都有不同的說法與見解,但從資安的觀點來看,仍有一些地方值得企業審慎注意,以免落入新資訊科技運用的迷思之中。

首先,讓我們回憶一下,在還沒有所謂的雲端運算之前,企業對於資訊的處理與運作的方式是什麼?一般普遍性的作法是,企業需要自行添購或開發商務運作所需要的軟體和硬體,並且建置專屬的資訊機房和網路環境,然後由內部的資訊人員來執行維運等相關工作。

對大多數的企業而言,隨著營運規模的擴展,為了要增加資訊服務的穩定與效率,在資訊科技的費用支出相對也會節節升高,尤其是面對現今愈來愈複雜的網路環境與技術,再加上好的資訊人才難尋,和營運相關的資訊問題解決能力也需要時間培養,種種問題都讓企業主傷透腦筋,而「雲端運算」的出現,彷彿就像在烏雲之中露出一道曙光。

雲端運算的資安服務 

究竟什麼是雲端運算,Gartner定義它是一種嶄新且具延展性的運算方法,可以將計算、儲存等資訊科技的運用,透過網路以服務方式提供給外部客戶使用。而維基百科則說,「雲端運算是一種基於網際網路的運算新方式,透過網際網路上的服務為個人和企業使用者提供所需即取的運算。」

▲雲端運算具備三大運算架構與服務模式,包括了基礎架構即服務、平台即服務以及軟體即服務等,當然還有人提供許多不同的服務。


目前,雲端運算具備三大運算架構與服務模式,包括了基礎架構即服務(Infrastructure as a Service,IaaS)、平台即服務(Platform as a Service,PaaS)及軟體即服務(Software as a Service,SaaS)等,當然還有人提供許多不同的服務。

各種雲端服務雖然眾說紛紜,但有三樣東西卻是必要組成,分別是網路、運算、服務。換句話說,透過網路連線,由遠端所提供的強大運算和服務,讓企業可藉此改變以往的資訊處理方式,除了可提高作業效率,進而節省成本支出之外,同時更獲得資訊科技的創新應用。

對於資安廠商而言,除了銷售傳統的資安軟硬體設備,若是還能藉由雲端運算的協助加持,提供更多的資安加值應用服務,那是再好也不過了。根據個人的觀察,目前資安廠商運用雲端運算來提供的資安服務,大致有下列幾種:

●病毒防護—讓防毒軟體的使用者,能夠即時回傳電腦上可疑的病毒相關資訊,就能在防毒業者的雲端上比對病毒特徵,不需要再等候防毒軟體更新病毒碼,可以更有效地防止病毒的感染。

●網址過濾—面對日益增加的惡意網站,可協助企業透過雲端進行網址黑名單的比對,透過即時更新的惡意網頁資料庫,可以提高攔截的效率。

●郵件過濾—配合傳統的垃圾郵件過濾機制,比對垃圾郵件如來源IP、信件標頭等資訊,同時也可結合防毒功能,即時掃描郵件的附件是否安全。

●身分識別—企業可透過雲端進行使用者身分認證,做到單一登入功能,讓使用者可在任何地點登入使用各項應用服務,解決使用者的授權問題。

至於業者宣稱雲端運算可為企業帶來的好處,則有以下幾點:

1. 降低營運成本—企業不需要再花錢去購買軟體和硬體,也不需要資訊人員來開發或維運所需的應用服務,只需透過租賃或使用者付費方式,大幅節省不必要的成本支出。

2. 提高工作效率—隨著網路無所不在的連結性,無論工作者身在何處都可享有相同便捷的應用服務,而且藉由雲端強大的運算能力,可有效解決工作端運算效能不足的問題。

3. 擴充未來應用—雲端運算可讓企業快速部署及應用新科技,無論是應用服務的升級或擴展,在短時間之內就可完成,不必擔心資源耗費的問題。

雲端運算可能的資安風險 

根據市場調查機構Gartner的研究顯示,未來以雲端運算方式所提供的安全應用服務,將會對市場造成相當大的衝擊,預估在2013年會比目前再成長三倍。而趨勢科技的調查則指出,雖然業界看好雲端運算在資安上的應用,但是也有61%的企業受訪者表示,除非可以確定應用雲端運算不會產生重大的資安風險,否則目前仍不會急於導入雲端運算的相關應用服務。

從資訊安全的觀點來看,企業在運用新的資訊技術時,對於其隱含的資安風險,當然要做審慎的評估,而個人認為在採用雲端運算服務方面,至少有三個層面需要考量。

首先是網路層面,因為一旦商業運作需要仰賴雲端來進行,那麼網路頻寬的消耗,是否真如業者所言來得那麼節省?會不會拖累了原有網路服務的正常使用?這些都需要實地測試才可得知。

另外,網路連線的穩定性也會比以往要求來得更高,因此在網路管理方面,原有的網路設備是否需要擴充?如何進行網路效能的最佳化調校?採用何種網路備援的方式?這些可能都會變成隱藏的成本支出。而網路傳輸的安全性當然也要涵蓋其中,若是有敏感資料需要傳輸,那麼是否有相對安全的加密機制和身分認證機制等等,都是使用雲端服務時必需的要求。

其次是資料層面,企業要放置什麼資料在雲端上,將會決定所需的安全強度,在採用雲端資料服務的初期,建議企業先以非敏感性的資料為主,藉此來測試評估服務的安全性,而非一開始即將最重要的商業資訊,透過雲端方式來進行運算或儲存,以避免當資訊外洩時可能造成的衝擊。

最後則是法規層面,企業要注意雲端服務廠商本身的安全是否值得信賴,是否有可供辨識的安全保證,例如取得政府的許可或國際標準ISO 27001的認證,因為這代表了雲端服務廠商在資料保護、實體安全、應用程式安全、系統可用性、漏洞管理、法規遵循方面是否有一套完善的管理制度,對於資訊安全可提供一定的保障。

另外,萬一不幸發生資安問題,在責任歸屬與賠償機制上,就有賴於事先的合約或服務等級協議(SLA),所以在一開始的服務簽定時,企業法務部門的參與協助也是十分重要。

評估企業整體的應用安全 

事實上,雲端運算服務除了造福企業之外,對於惡意的駭客而言,也算是一大福音,因為這代表了許多企業更加依賴網路連線,會將重要的資訊透過網路傳輸,並且將商業資料儲存在企業環境之外,如果輕忽了可能的資安風險,就等於增加了駭客入侵的機會。

舉例來說,像是駭客可以利用雲端運算的強大能力來破解使用者帳號、密碼,竊取雲端所儲存的資訊;或是發動分散式阻斷網路攻擊(DDoS),癱瘓雲端網路的運作,也就間接導致重要營運服務的停擺。另外,雲端資安服務機制的有效性,是否一如業者宣稱的可有效攔阻惡意程式入侵,是否會有潛藏的安全漏洞反而受到利用等,這些也都是未來需要關注的地方。

▲採用雲端運算服務需要考量網路層面,一旦商業運作需要仰賴雲端來進行,那麼網路頻寬的消耗,是否真如業者所言來得那麼節省?


所以,企業在評估導入雲端運算的服務時,建議一開始先從非關鍵性的應用服務開始,而除了尋找可靠的雲端服務供應商之外,也要考慮有沒有其他的替代選擇。否則一旦企業所倚賴的雲端服務受到攻擊而停擺之後,將會對企業造成重大衝擊,例如關鍵資料無法存取、客戶資料外洩、防毒系統失效、惡意程式入侵等等,這些都有賴於事前整體的考量,絕非像是購置單一硬體和軟體一樣,只要輕鬆以對即可完成。

NCHC Cloud Computing Research Group

http://trac.nchc.org.tw/cloud/

2013年12月1日 星期日

[hadoop]Hadoop 小象安裝測試在 Ubuntu (2)

續前篇 http://codebeta.blogspot.tw/2012/12/hadoophadoop-ubuntu.html,接下來是試跑 wordcount 程式,驗證系統有安裝好。
下載所需資料
要執行 wordcount 程式,要先有資料才行。Noll 好心已經給了三個連結的文件讓你下載。
每一個電子書,請下載 UTF-8 的文字檔,放在你想要的位置。這裡選的是 /tmp/gutenberg
hduser@ubuntu:~$ ls -l /tmp/gutenberg/ 
total 3592 
-rw-r--r-- 1 hduser hadoop  674566 Dec 23 07:37 pg20417.txt 
-rw-r--r-- 1 hduser hadoop 1573150 Dec 23 07:39 pg4300.txt 
-rw-r--r-- 1 hduser hadoop 1423801 Dec 23 07:38 pg5000.txt 
hduser@ubuntu:~$

啟動 hadoop 叢集

hduser@ubuntu:~$ /usr/local/hadoop/bin/start-all.sh

複製資料到 HDFS (Hadoop 的檔案系統)

使用 hadoop 的指令,把檔案從真實檔案系統,送進 HDFS。
hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop dfs -copyFromLocal /tmp/gutenberg /user/hduser/gutenberg 
hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop dfs -ls /user/hduser 
Found 1 items 
drwxr-xr-x   - hduser supergroup          0 2012-12-25 00:23 /user/hduser/gutenberg 
hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop dfs -ls /user/hduser/gutenberg 
Found 4 items 
drwxr-xr-x   - hduser supergroup          0 2012-12-25 00:23 /user/hduser/gutenberg/gutenberg 
-rw-r--r--   1 hduser supergroup     674566 2012-12-25 00:21 /user/hduser/gutenberg/pg20417.txt 
-rw-r--r--   1 hduser supergroup    1573150 2012-12-25 00:21 /user/hduser/gutenberg/pg4300.txt 
-rw-r--r--   1 hduser supergroup    1423801 2012-12-25 00:21 /user/hduser/gutenberg/pg5000.txt 
hduser@ubuntu:~$

執行 MapReduce 程式

請注意執行的路徑:要先 cd 到 /usr/local/hadoop。
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop jar hadoop*examples*.jar wordcount /user/hduser/gutenberg/* /user/hduser/gutenberg-output
[註1]若在別的工作路徑,會發生:
hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop jar hadoop*examples*.jar wordcount /user/hduser/gutenberg /user/hduser/gutenberg-output 
Exception in thread "main" java.io.IOException: Error opening job jar: hadoop*examples*.jar
[註3]如果已經執行過,想再執行一次,會因為 output 目錄已經存在而失敗。此時可以執行刪目錄的指令:
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -rmr /user/hduser/gutenberg-output 
Deleted hdfs://localhost:54310/user/hduser/gutenberg-output 
hduser@ubuntu:/usr/local/hadoop$
執行結果如下:
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop jar hadoop*examples*.jar wordcount /user/hduser/gutenberg/* /user/hduser/gutenberg-output 
12/12/25 00:52:27 INFO input.FileInputFormat: Total input paths to process : 6 
12/12/25 00:52:27 INFO util.NativeCodeLoader: Loaded the native-hadoop library 
12/12/25 00:52:27 WARN snappy.LoadSnappy: Snappy native library not loaded 
12/12/25 00:52:28 INFO mapred.JobClient: Running job: job_201212250016_0007 
12/12/25 00:52:29 INFO mapred.JobClient:  map 0% reduce 0% 
12/12/25 00:52:44 INFO mapred.JobClient:  map 16% reduce 0% 
12/12/25 00:52:47 INFO mapred.JobClient:  map 33% reduce 0% 
12/12/25 00:52:53 INFO mapred.JobClient:  map 50% reduce 0% 
12/12/25 00:52:56 INFO mapred.JobClient:  map 66% reduce 11% 
12/12/25 00:52:59 INFO mapred.JobClient:  map 83% reduce 11% 
12/12/25 00:53:01 INFO mapred.JobClient:  map 100% reduce 11% 
12/12/25 00:53:04 INFO mapred.JobClient:  map 100% reduce 22% 
12/12/25 00:53:10 INFO mapred.JobClient:  map 100% reduce 100% 
12/12/25 00:53:15 INFO mapred.JobClient: Job complete: job_201212250016_0007 
12/12/25 00:53:15 INFO mapred.JobClient: Counters: 29 
12/12/25 00:53:15 INFO mapred.JobClient:   Job Counters 
12/12/25 00:53:15 INFO mapred.JobClient:     Launched reduce tasks=1 
12/12/25 00:53:15 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=45175 
12/12/25 00:53:15 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0 
12/12/25 00:53:15 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0 
12/12/25 00:53:15 INFO mapred.JobClient:     Launched map tasks=6 
12/12/25 00:53:15 INFO mapred.JobClient:     Data-local map tasks=6 
12/12/25 00:53:15 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=25718 
12/12/25 00:53:15 INFO mapred.JobClient:   File Output Format Counters 
12/12/25 00:53:15 INFO mapred.JobClient:     Bytes Written=886978 
12/12/25 00:53:15 INFO mapred.JobClient:   FileSystemCounters 
12/12/25 00:53:15 INFO mapred.JobClient:     FILE_BYTES_READ=4429692 
12/12/25 00:53:15 INFO mapred.JobClient:     HDFS_BYTES_READ=7343786 
12/12/25 00:53:15 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=7529522 
12/12/25 00:53:15 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=886978 
12/12/25 00:53:15 INFO mapred.JobClient:   File Input Format Counters 
12/12/25 00:53:15 INFO mapred.JobClient:     Bytes Read=7343034 
12/12/25 00:53:15 INFO mapred.JobClient:   Map-Reduce Framework 
12/12/25 00:53:15 INFO mapred.JobClient:     Map output materialized bytes=2948682 
12/12/25 00:53:15 INFO mapred.JobClient:     Map input records=155864 
12/12/25 00:53:15 INFO mapred.JobClient:     Reduce shuffle bytes=2681669 
12/12/25 00:53:15 INFO mapred.JobClient:     Spilled Records=511924 
12/12/25 00:53:15 INFO mapred.JobClient:     Map output bytes=12152190 
12/12/25 00:53:15 INFO mapred.JobClient:     Total committed heap usage (bytes)=978935808 
12/12/25 00:53:15 INFO mapred.JobClient:     CPU time spent (ms)=7070 
12/12/25 00:53:15 INFO mapred.JobClient:     Combine input records=1258344 
12/12/25 00:53:15 INFO mapred.JobClient:     SPLIT_RAW_BYTES=752 
12/12/25 00:53:15 INFO mapred.JobClient:     Reduce input records=204644 
12/12/25 00:53:15 INFO mapred.JobClient:     Reduce input groups=82335 
12/12/25 00:53:15 INFO mapred.JobClient:     Combine output records=204644 
12/12/25 00:53:15 INFO mapred.JobClient:     Physical memory (bytes) snapshot=1124028416 
12/12/25 00:53:15 INFO mapred.JobClient:     Reduce output records=82335 
12/12/25 00:53:15 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=2677747712 
12/12/25 00:53:15 INFO mapred.JobClient:     Map output records=1258344
檢查輸出結果,使用以下指令:
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -ls /user/hduser/gutenberg-output 
Found 3 items 
-rw-r--r--   1 hduser supergroup          0 2012-12-25 00:53 /user/hduser/gutenberg-output/_SUCCESS 
drwxr-xr-x   - hduser supergroup          0 2012-12-25 00:52 /user/hduser/gutenberg-output/_logs 
-rw-r--r--   1 hduser supergroup     886978 2012-12-25 00:53 /user/hduser/gutenberg-output/part-r-00000 
hduser@ubuntu:/usr/local/hadoop$
把結果的內容顯示出來的指令:
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -cat /user/hduser/gutenberg-output/part-r-00000
把結果搬回真實檔案系統,然後看內容的指令:
hduser@ubuntu:/usr/local/hadoop$ mkdir /tmp/gutenberg-output 
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop dfs -getmerge /user/hduser/gutenberg-output /tmp/gutenberg-output 
12/12/25 01:03:58 INFO util.NativeCodeLoader: Loaded the native-hadoop library 
hduser@ubuntu:/usr/local/hadoop$ head /tmp/gutenberg-output/gutenberg-output 
"(Lo)cra"    2 
"1490    2 
"1498,"    2 
"35"    2 
"40,"    2 
"A    4 
"AS-IS".    2 
"A_    2 
"Absoluti    2 
"Alack!    2 
hduser@ubuntu:/usr/local/hadoop$

Hadoop Web Interface

目前版本有提供 web 介面,只能看狀態,不能改。
  • http://localhost:50070/ – 可以看 NameNode 的狀態
  • http://localhost:50030/ – 可以看 JobTracker 的狀態
  • http://localhost:50060/ – 可以看 TaskTracker 的狀態

結語

到這裡,單電腦叢集的 Hadoop 系統,算是非常簡單的介紹完畢。可以從這裡的操作知道,若是需要一個可用的 Hadoop,要經過:(1)操作系統的安裝、(2)java系統的安裝、(3)hadoop系統的安裝、(4)以上三個系統的設定。要執行程式,則要:(1)程式資料的準備、(2)將資料搬進至Hadoop檔案系統、(3)撰寫執行 MapReduce 程式、(4)將資料搬出Hadoop檔案系統。這些工作都不是簡單買個套裝程式回來,拖一拖、拉一拉,或是按一按鈕就可以解決的事情。而且,這個單叢集系統,還不具備備援、分散式計算的功能,都還需要進一步的規劃及調整。
從這個最簡單的系統,接下來則會因著各人的工作項目而有不同的發展方向:
  • 系統工程師,要開始研究 hadoop 設定,使之成為分散式系統。並且建立備援機制。研究 hadoop 管理工具
  • 軟體工程師,依據需求,安裝 HBASE 或 Cassandra 資料庫,或者利用檔案來存放資料。研究 MapReduce 程式風格。建立自用的介面程式與資料系統、檔案系統做存取。

[hadoop]Hadoop 小象安裝測試在 Ubuntu

小象要開始跑

在了解大概 hadoop 能做什麼之後,就來安裝試試吧。Michael G. Noll 寫了幾份非常好的教學。 這裡就按照他的教學,一步步重做一遍。就從他的 Running Hadoop On Ubuntu Linux (Single-Node Cluster) 開始讓小象跑。
而我這篇是讓我自己這個新手能夠不忘記我是怎麼安裝的筆記。

安裝 ubuntu 在 vmware 裡,完成 vmware-tool 安裝。

這一步是原來教學沒有的步驟。為了大家可以在公司、或自家的電腦試用,所以用 vmware 裝一個虛擬電腦。首先要注意,vmware-tool 的安裝跟 vmware 版本有關。vmware-tool 最重要的是可以讓 host 系統 及 guest 系統用「拖拉」、「複製貼上」的方式,交換檔案及文字。我使用的版本是 vmware 8,在裝好 ubuntu 12.04 之後,vmware-tool 可使用隨附的 8.8.0 版安裝。(vmware 7 可裝 ubuntu 11.04 配合 6.0.2。)在確認完 vmware 版本之後,就不用擔心之後會有問題了。
到 http://www.ubuntu.com/download/desktop 下載 12.04 LTS,下載 iso 檔。選擇 desktop 是因為有桌面可用,比較方便。
將 ubuntu 安裝完畢,先加入一個使用者 hduser,這是之後專門執行 hadoop 程式的使用者。
$ sudo addgroup hadoop
$ sudo adduser --ingroup hadoop hduser
hduser 要加入 sudoer 名單中,才能安裝 vmware-tool。
先用安裝者的帳號執行
$ sudo visudo
再把 hduser (ALL:ALL)=ALL 加在 root (ALL:ALL)=ALL 底下。
或把 hduser 加到 admin 的 group 裡面。(首先要確定有 admin 的 group。可參考)
$ sudo usermod -g admin hduser
然後切換使用者為 hduser。
接下來,在 vmware 的「VM」選單,按下「install VMware tool」,在虛擬電腦裡,會 mount 一個檔案。點兩下,會使用 archie manager 開啟檔案,把裡面的目錄「vmware-tools-distrib」拖到桌面上。
啟動 terminal,切換到 ~/Desktop/vmware-tools-distrib,執行
$ sudo ./vmware-install.pl
中間經過一連串的問題,都是按 enter 通過。如果有因為任何的錯誤而停下,都是因為 vmware-tools 的版本與 ubuntu 版本不合導致。我花了很多冤枉時間,才知道是版本問題。vmware 出 vmware-tools 程式一定是可以用才釋出,把版本弄對就不用白花時間。
安裝完畢,重開機一次。

設定 SSH

因為 hadoop 使用 ssh 管理它的 node,接下來要設定 ssh。
首先,產生 ssh key。
$ su - hduser # 換成 root 權限 
hduser@ubuntu:~$ ssh-keygen -t rsa -P "" 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/hduser/.ssh/id_rsa): 
Created directory '/home/hduser/.ssh'. 
Your identification has been saved in /home/hduser/.ssh/id_rsa. 
Your public key has been saved in /home/hduser/.ssh/id_rsa.pub. 
The key fingerprint is: 
db:35:f4:ae:e3:79:48:d3:95:fa:2d:22:a8:43:5c:dd hduser@ubuntu 
The key's randomart image is: 
... 
hduser@ubuntu:~$
第二行是產生一個不用密碼的 RSA key pari。這樣就不用 hadoop 與 node 溝通時,都要人去打密碼。
再來,把新產生的 key 放到已認證的 key 中。
hduser@ubuntu:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
因為 desktop 版沒有 ssh server,因此,要加裝 openssh-server
hduser@ubuntu:~$ sudo apt-get install openssh-server
測試一下能不能連上 ssh server。因為這版的 server 預設使用 ECDSA 所以,ssh 的指令要強迫使用 rsa。
hduser@ubuntu:~$ ssh -oHostKeyAlgorithms='ssh-rsa' localhost 
The authenticity of host 'localhost (127.0.0.1)' can't be established. 
RSA key fingerprint is a3:99:7f:2b:8e:92:34:20:59:2f:2d:10:94:c9:60:74. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'localhost' (RSA) to the list of known hosts. 
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic i686)
* Documentation:  https://help.ubuntu.com/
222 packages can be updated. 
52 updates are security updates.
Last login: Mon Dec 24 00:56:30 2012 from localhost 
hduser@ubuntu:~$ exit 
logout 
Connection to localhost closed. 
hduser@ubuntu:~$
另一個解決辦法是產生 ECDSA,並使用 ECDSA。
hduser@ubuntu:~$ ssh-keygen -t ecdsa -P "" 
Generating public/private ecdsa key pair. 
Enter file in which to save the key (/home/hduser/.ssh/id_ecdsa): 
Your identification has been saved in /home/hduser/.ssh/id_ecdsa. 
Your public key has been saved in /home/hduser/.ssh/id_ecdsa.pub. 
The key fingerprint is: 
27:64:63:de:16:4b:97:f4:58:96:11:46:6d:a2:24:7e hduser@ubuntu 
The key's randomart image is:
因為後續的過程中,按照這個教學的話,hadoop 會自然的使用 ECDSA,所以,還是要用 ECDSA 的方式把 key 加到 .ssh/authorized_keys 裡面。
hduser@ubuntu:~$ cat $HOME/.ssh/id_ecdsa.pub >> $HOME/.ssh/authorized_keys
Noll 先生說,如果有遇到問題,要檢查一下在 /etc/ssh/sshd_config 裡:
  • PubkeyAuthentication 應該是 yes。
  • AllowUsers 如果有打開,則要把 hduser 加進去。
  • 如果 ssh server 的設定有異動,要強迫 ssh server 重載設定。 $ sudo /etc/init.d/ssh reload

安裝 java

java 至少要用到 ,我們可以使用指令來檢查 java 版本
hduser@ubuntu:~$ java -version 
The program 'java' can be found in the following packages: 
* default-jre 
* gcj-4.6-jre-headless 
* gcj-4.7-jre-headless 
* openjdk-7-jre-headless 
* openjdk-6-jre-headless 
Try: sudo apt-get install
新安裝的 ubuntu 12.04 desktop LTS 沒有裝 java runtime。要自己安裝。
hduser@ubuntu:~$ sudo apt-get install default-jre
hduser@ubuntu:~$ java -version 
java version "1.7.0_09" 
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1) 
OpenJDK Client VM (build 23.2-b09, mixed mode, sharing) 
hduser@ubuntu:~$

安裝小象

從 Apache 下載 hadoop,目前穩定版是 1.0.4,到 http://www.apache.org/dyn/closer.cgi/hadoop/common/ 它會給你最近的 mirror 站點。下載 1.0.4 版的 hadoop-1.0.4.tar.gz。
 image
使用 firefox 下載,預設會放到 ~/Downloads 裡面。點兩下 hadoop-1.0.4.tar.gz,archive manager 會打開該壓縮檔,把裡面的目錄 hadoop-1.0.4 拉到桌面,改名為 hadoop,再移到 /usr/local 裡面去。使用指令
hduser@ubuntu:~$ sudo mv Desktop/hadoop/ /usr/local/ 
[sudo] password for hduser: 
hduser@ubuntu:~$ ls -l /usr/local 
total 36 
drwxr-xr-x  2 root   root   4096 Oct 17 07:56 bin 
drwxr-xr-x  2 root   root   4096 Oct 17 07:56 etc 
drwxr-xr-x  2 root   root   4096 Oct 17 07:56 games 
drwxr-xr-x 14 hduser hadoop 4096 Dec 24 01:09 hadoop 
drwxr-xr-x  2 root   root   4096 Oct 17 07:56 include 
drwxr-xr-x  4 root   root   4096 Oct 17 07:59 lib 
lrwxrwxrwx  1 root   root      9 Dec 13 10:10 man -> share/man 
drwxr-xr-x  2 root   root   4096 Oct 17 07:56 sbin 
drwxr-xr-x  7 root   root   4096 Oct 17 08:00 share 
drwxr-xr-x  2 root   root   4096 Oct 17 07:56 src
接下來要設定 .bashrc。(ubuntu 預設是用 bash。)使用指令開啟 .bashrc 來改。
hduser@ubuntu:~$ gedit .bashrc
在檔案的最後加進以下的設定。(原文中的 HADOOP_HOME 的設定已經要改用 HADOOP_PREFIX。)
################# for hadoop settings ############## 
# Set Hadoop-related environment variables 
export HADOOP_PREFIX=/usr/local/hadoop
# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on) 
export JAVA_HOME=/usr/lib/jvm/default-java
# Some convenient aliases and functions for running Hadoop-related commands 
unalias fs &> /dev/null 
alias fs="hadoop fs" 
unalias hls &> /dev/null 
alias hls="fs -ls"
# If you have LZO compression enabled in your Hadoop cluster and 
# compress job outputs with LZOP (not covered in this tutorial): 
# Conveniently inspect an LZOP compressed file from the command 
# line; run via: 

# $ lzohead /hdfs/path/to/lzop/compressed/file.lzo 

# Requires installed 'lzop' command. 

lzohead () { 
    hadoop fs -cat $1 | lzop -dc | head -1000 | less 
}
# Add Hadoop bin/ directory to PATH 
export PATH=$PATH:$HADOOP_PREFIX/bin

其他使用者要用 hadoop 的,也要更新這個 ~/.bashrc

設定 hadoop -- 1

第一個要處理的是 hadoop-env.sh
hduser@ubuntu:~$ gedit /usr/local/hadoop/conf/hadoop-env.sh
把裡面的
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
的底下,加上
export JAVA_HOME=/usr/lib/jvm/default-java
再來要把 ipv6 關掉。檔案的最後加上
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

設定 hadoop -- 2

接下來是 core-site.xml,這是設定 hadoop 要在真實檔案系統的位置。因此,先建立一個目錄給 hadoop 使用。
hduser@ubuntu:~$ sudo mkdir -p /app/hadoop/tmp 
[sudo] password for hduser: 
hduser@ubuntu:~$ ls -l /app/hadoop/ 
total 4 
drwxr-xr-x 2 root root 4096 Dec 24 02:02 tmp 
hduser@ubuntu:~$ sudo chown hduser:hadoop /app/hadoop/tmp 
hduser@ubuntu:~$ ls -l /app/hadoop/ 
total 4 
drwxr-xr-x 2 hduser hadoop 4096 Dec 24 02:02 tmp 
hduser@ubuntu:~$ sudo chmod 750 /app/hadoop/tmp 
hduser@ubuntu:~$ ls -l /app/hadoop/ 
total 4 
drwxr-x--- 2 hduser hadoop 4096 Dec 24 02:02 tmp 
hduser@ubuntu:~$
把下列的文字,加到 /usr/local/hadoop/conf/core-site.xml 的  ...  中間:


  hadoop.tmp.dir
  /app/hadoop/tmp
  A base for other temporary directories.



  fs.default.name
  hdfs://localhost:54310
  The name of the default file system.  A URI whose
  scheme and authority determine the FileSystem implementation.  The
  uri's scheme determines the config property (fs.SCHEME.impl) naming
  the FileSystem implementation class.  The uri's authority is used to
  determine the host, port, etc. for a filesystem.
把下列的文字,加到 /usr/local/hadoop/conf/mapred-site.xml 的  ...  中間:


  mapred.job.tracker
  localhost:54311
  The host and port that the MapReduce job tracker runs
  at.  If "local", then jobs are run in-process as a single map
  and reduce task.
  
把下列的文字,加到 /usr/local/hadoop/conf/hdfs-site.xml 的  ...  中間:


  dfs.replication
  1
  Default block replication.
  The actual number of replications can be specified when the file is created.
  The default is used if replication is not specified in create time.
  

如果要對設定檔多了解,可以到以下連結查看:

格式化 HDFS 的檔案系統

Noll 先生在這非常強調,不要對正在使用中的系統做格式化的動作。該系統資料會消失。
我們這個新系統要啟用,則必須先格式化檔案系統。
hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop namenode -format
結果如下:
hduser@ubuntu:~$ /usr/local/hadoop/bin/hadoop namenode -format 
12/12/24 02:14:23 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = ubuntu/127.0.1.1 
STARTUP_MSG:   args = [-format] 
STARTUP_MSG:   version = 1.0.4 
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290; compiled by 'hortonfo' on Wed Oct  3 05:13:58 UTC 2012 
************************************************************/ 
12/12/24 02:14:23 INFO util.GSet: VM type       = 32-bit 
12/12/24 02:14:23 INFO util.GSet: 2% max memory = 19.33375 MB 
12/12/24 02:14:23 INFO util.GSet: capacity      = 2^22 = 4194304 entries 
12/12/24 02:14:23 INFO util.GSet: recommended=4194304, actual=4194304 
12/12/24 02:14:24 INFO namenode.FSNamesystem: fsOwner=hduser 
12/12/24 02:14:24 INFO namenode.FSNamesystem: supergroup=supergroup 
12/12/24 02:14:24 INFO namenode.FSNamesystem: isPermissionEnabled=true 
12/12/24 02:14:24 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 
12/12/24 02:14:24 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 
12/12/24 02:14:24 INFO namenode.NameNode: Caching file names occuring more than 10 times 
12/12/24 02:14:25 INFO common.Storage: Image file of size 112 saved in 0 seconds. 
12/12/24 02:14:25 INFO common.Storage: Storage directory /app/hadoop/tmp/dfs/name has been successfully formatted. 
12/12/24 02:14:25 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1 
************************************************************/ 
hduser@ubuntu:~$

啟動 cluster

到了要啟動系統的時候,使用指令:
hduser@ubuntu:~$ /usr/local/hadoop/bin/start-all.sh
看到以下的 log 就代表成功了。
hduser@ubuntu:~$ /usr/local/hadoop/bin/start-all.sh 
starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-namenode-ubuntu.out 
localhost: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-datanode-ubuntu.out 
localhost: starting secondarynamenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-secondarynamenode-ubuntu.out 
starting jobtracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-jobtracker-ubuntu.out 
localhost: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-hduser-tasktracker-ubuntu.out 
hduser@ubuntu:~$

利用 jps 來看是否已啟動

Noll 先生說可以使用 jps 來看啟動是否成功。但新裝的 ubuntu 沒有這東西。
The program 'jps' can be found in the following packages: 
* openjdk-6-jdk 
* openjdk-7-jdk 
Ask your administrator to install one of them
於是,安裝 openjdk-7-jdk
sudo apt-get install openjdk-7-jdk
再試一次
hduser@ubuntu:~$ jps 
7516 TaskTracker 
7287 SecondaryNameNode 
7839 DataNode 
12038 Jps 
6491 NameNode 
6901 JobTracker 
hduser@ubuntu:~$

也可以用 netstat 來看監聽的 port 是否有開。
hduser@ubuntu:~$ sudo netstat -plten | grep java

停止 single-node cluster

使用這個指令:
hduser@ubuntu:~$ /usr/local/hadoop/bin/stop-all.sh
會看到:
hduser@ubuntu:~$ /usr/local/hadoop/bin/stop-all.sh 
stopping jobtracker 
localhost: Agent admitted failure to sign using the key. 
localhost: stopping tasktracker 
stopping namenode 
localhost: Agent admitted failure to sign using the key. 
localhost: stopping datanode 
localhost: Agent admitted failure to sign using the key. 
localhost: no secondarynamenode to stop 
hduser@ubuntu:~$
原篇照我的方式走,真的太長。因此下一篇來驗證,這個系統真的可以用。


資料來源 

浮雲雅築: [研究] Hadoop 1.2.1 安裝 (CentOS 6.4 x64)

浮雲雅築: [研究] Hadoop 1.2.1 安裝 (CentOS 6.4 x64): [研究] Hadoop 1.2.1 安裝 (CentOS 6.4 x64) 2013-07-27 Hadoop 是個架設雲端的系統,它參考Google Filesystem,以Java開發,提供HDFS與MapReduce API。 The Apache Hadoop...

3秒處理1PB資料!Google Dremel打敗Hadoop引領「巨量資料處理」趨勢

By CADE METZ   | 11 七月 2013
Photo: Chapendra/ Flickr

如果全球巨量資料(Big Data)相關處理技術的研發是一場競賽,Google精益求精,持續保持領先。一如業內人士所熟知,臉書(Facebook)與雅虎(Yahoo)皆用以分析大量網路資料的「Hadoop」架構軟體平台,必需歸功Google先後在2003年末、2004年發表的「Google File System」、「MapReduce」兩份技術研究報告。
Dremel首度現身
8年後,當眾人仍熱衷使用Hadoop於各式資料分析工作,Google又以新技術自我超越,取代不夠完美的「Google File System」與「MapReduce」,並於2009年針對大型網路營運基礎架構發表三份研究報告,分別有關Google網路搜尋引擎的索引製作軟體平台「Caffeine」、可繪製大量網路資訊彼此對應關係的圖表資料庫「Pregel」,以及備受矚目的「Dremel」。
矽谷新創公司Cloudera執行長歐森(Mike Olson),便在不久前的一場座談會中指出,Google再度揭示巨量資料處理的未來走向,「想知道大型、高效能資料處理基礎架構的新面貌,不妨閱讀Google發表的研究報告。」
專精資料中心規模軟體平台的加州大學柏克萊分校資訊工程教授福克斯(Armando Fox),也十分驚豔於Dremel的優越,「以前若有人向我描述Dremel的功能,我絕對會認為那只能存在於想像。」
兼顧資料處理「量」與「速度」,功能空前 
Dremel是一種資訊分析的方式,可以橫跨數千部伺服器,查詢大量資料,例如查詢網路文件、一批電子書的個別作者、某個特定主題的作者列表,甚至是記錄無數垃圾訊息的資料,類似數十年來運用於分析傳統資料庫的「結構式查詢語言」(SQL)技術。
Hadoop也有類似SQL的工具「Pig and Hive」,但耗時較長;向平台提出查詢需求後,需要幾分鐘至幾小時,才會得到結果。
同類的工具已經不少,Google必然同中求異,否則就不必大費周章研發Dremel了;以極短時間處理極龐大的資料量,即是Dremel最空前的突破。
Google在報告中明確指出,「過去MapReduce需要分多次查詢的資料,Dremel可同時處理,並大幅縮短運算時間」,Google基礎架構資深副總裁霍澤說,查詢一拍位元組(Petabyte,PB)、也就是相當十億位元組(Gigabyte,GB)百萬倍的資料量,大概只需要3秒鐘,Dremel完全是為立即查詢設計,「Dremel操作容易,適合處理臨時或定期查詢,直接在指令列輸入查詢項目就行了,不需要任何程式設計技巧。」
福克斯說,這是前所未有見的功能,他說,包括Hadoop在內的現行巨量資料處理工具,都有速度與準確度不及傳統資料分析或「商業智慧」工具的缺點,但Dremel卻成功克服障礙。
「許多人都曾使用巨量資料系統,但規模、速度都無法與Dremel相提並論;一直以來,『資料量』與『速度』總是顧此失彼,Dremel終於找到兼顧兩者的方法。」
承接Google成果,軟體人員還要加把勁
自2006年起,Google的數千名員工已經開始使用Dremel來分析橫跨數十部至數千部不等的伺服器巨量資料,包括服務軟體的故障報告、資料中心的表現等。
面對巨量資料的大趨勢,Cloudera執行長歐森認為,程式人員還需要加快後續開發的速度。
儘管Hadoop已經是相當成功的軟體,它讓打造平台科技基礎的Google稱霸網路世界,也帶來龐大商機,預估至2016年將可創造8.13億美元的軟體收益,以Hadoop運用為主要業務的公司如Cloudea,直接蒙受其利。
不過,歐森還是認為,自家公司與業界程式設計人員的開發速度實在太慢,現在面對新的Dremel,又出現類似現象。
2010年,Google發表Dremel研究報告,但軟體業界幾乎毫無反應。一群以色列工程師目前正著手建置叫做「OpenDremel」的複製品,其中一位開發人員古茲曼(David Gruzman)就說,程式編寫的時程先前停滯了一陣子,最近才又重新開始。
華盛頓大學粒子物理學特聘教授、Cloudant公司首席科學家米勒(Mike Miller),對於創投竟然尚未投資新創公司著手研究Dremel逆向工程,也大感意外。Cloudant已自發投入處理Google多年來面臨的資料問題。
無論業界反應如何,Google的開放態度倒是很一致,提供的Dremel相關雲端服務不勝枚舉。即使非Google工程師,也能透過「Google應用程式引擎」使用Google的基礎架構,來製作、經營、儲存整套應用程式;或透過Dremel,使用應用程式「BigQuery」,將資料上傳至Google,即時存取虛擬伺服器,進行查詢。
世界或許落後Google,但Google正迎向世界。

【Hadoop in Taiwan 2012】Hadoop在精準行銷上的應用 by 陳志昇 (Vincent Chen)

中華電信用Hadoop技術分析通話明細

中華電信利用自行開發的Hadoop大資料運算平臺,找出非結構化資料中的結構性,精簡資料後再置於資料倉儲運算,節省儲存空間
面對資料快速成長以及非結構性資料的增加,中華電信資訊處第四科科長楊秀一表示,中華電信近來利用Hadoop雲端運算技術自行開發了一個專門用來分析非結構化資料的巨量資料(Big Data)運算平臺,嘗試在資料進到資料倉儲系統之前,先進行資料的分析與處理以減少資料倉儲的資料量。

近年來行動語音市場趨於飽和,為了掌握用戶特性進行客製化行銷,一份資料要進行分析,就會被多次複製,因此即使用戶增加趨緩,但中華電信擁有的資料量仍快速暴增。

中華電信用來分析的資料模型最早於10多年前已有雛形,但當初主要用於行動語音分析。一直到2009年,他們完整導入Teradata的電信業邏輯資料模型cLDM 9.0版,整合更多電信服務的用戶資料。楊秀一表示,當初導入該模型的目的主要是為了整合行動語音、固網、數據的資料,進行以人為中心的分析模式。在導入之前,中華電信的資料模型是以設備為中心,因為不同設備的記錄資料儲存在不同的資料庫,無法進行整合性的分析。

舉例來說,同一個顧客在中華電信申辦了行動電話、家用電話以及固網服務,過去沒有整合前,中華電信只能分析單一設備的使用行為,而無法全面性分析單一顧客在不同設備上的使用狀況。

中華電信解決了資料整合分析的問題後,出現了另一個難題,就是蒐集的資料數量越來越多。比如說近年使用者大量利用行動裝置上網,這些上網行為,如網頁瀏覽、登入都會產生一些可分析的資料。於是,中華電信面臨了大量資料需要分析的挑戰。

楊秀一表示,目前中華電信每個月保留的資料記錄約為3~4TB的資料量,若要分析這些原始資料,過程中系統要處理的資料量還要再增加2倍以上,但中華電信現有資料倉儲設備僅能保存6~9個月的通話明細資料量,其餘就必須移到2線設備儲存,也讓資料分散不易整體分析。

精簡資料就先從結構化非結構化資料開始

中華電信資訊處第四科科長楊秀一表示,先透過Hadoop技術的大資料運算平臺精簡非結構化資料,找出結構化的部份後,再放入資料庫進行分析,可減少資料庫的I/O負擔。

楊秀一認為,分析非結構化資料最大的挑戰是沒有便宜的儲存方法,資料倉儲的容量價格高,大量資料的處理成本昂貴,所以必須先將非結構化的資料轉化成真正有分析價值的結構化資料,減少必須儲存在資料倉儲中的資料,建立分析平臺就能夠擴充儲存能量。

所以,中華電信運用了開源雲端運算技術Hadoop技術來建置大資料運算平臺,主要分析的非結構性資料為通話明細與網頁點擊率分析。藉由這個平臺可以儲存資料,並且找到資料的關聯性後,再由資料庫進行分析。

楊秀一表示,通話明細或是網頁點擊率雖不一定是非結構化資料,但是這些資料的結構是變動的,只要能夠找出固定特徵,就能夠放進可對應的資料庫欄位進行分析。

舉例來說,同樣打一通5分鐘的電話,每一通經過的基地臺數量與路徑完全不同,導致每一筆資料的長度並不一樣。因此,在處理資料時,先訂出可讓資料長度相同的規則,就能將相同長度的資料放在同一個欄位,進行結構化的分析。

楊秀一表示,將資料在進入資料倉儲之前就先放進另一個平臺分析,而不是將所有資料放進資料庫後,再將資料取出分析,可以減少一次資料庫的I/O負擔。

中華電信建置的大資料運算平臺目前仍在測試階段,楊秀一表示,未來希望透過該平臺精簡資料量,讓線上保存的資料增至12~27個月的通話明細,達到擴充容量的目的。文⊙辜雅蕾

資料來源

NCHC Cloud Computing Research Group

http://trac.nchc.org.tw/cloud/

【Hadoop in Taiwan 2012】快速搭建Hadoop單機開發環境與雲端叢集架設實務

2013年11月24日 星期日

雅芳運用社交化業務模式取得成功

Salesforce Work.com 示範

Honkawa Farm 採用 Salesforce 技術,管理 30,000 多頭乳牛的資訊。

Sales Cloud系統展示與概覽

Service Cloud 系統展示與概覽

成為客戶導向型企業

Salesforce 解決方案示範 - 高科技業

什麼是「雲端運算」? (What is Cloud Computing - Traditional Chinese version)