ADVERTISEMENT
在64期電腦王雜誌中刊登了「家裡敦雲端運算公司」,教讀者在Linux平台上架設Eucalyptus雲端運算平台,並且建立自己的虛擬機器。這次作者李柏寬先生以搜尋引擎示範如何實作雲端上的服務。可惜65期稿擠未能刊出,在此先分享本文的精采摘要,詳情請期待電腦王66期。
上期筆者介紹了Eucalyptus雲端中的基礎設施即服務(IaaS)的建置後,Linux陣營中強調使用者體驗的Ubuntu也於不久前發布了最新的9.10版。9.10伺服器版將Eucalyptus整合在其中,只要放入光碟即可安裝。
但對於習慣使用圖形化操作介面的朋友可別開心的太早,伺服器版本並不含桌面環境,也就是安裝後,只會看到黑底白字的命令列模式,沒有任何的美圖,滑鼠當然也可以收起來了。不過話說回來,筆者都是從華麗的GNOME或KDE桌面環境中開啟個單調的終端機視窗工作。雖然單調,但功能卻也是最強大的,而且路人經過時總是會對你一臉欽佩(幻想)。言歸正傳,看過了上次電腦王的教學,讀者已可在家開一間雲端運算公司,給客戶們建置上層的服務。而接下來更將快速地教導讀者建立一個真正乾淨、並屬於自己的雲端搜尋引擎。
商業必然廣告
搜尋幾乎是現代人上網時必做的事項之一,各大入口網站也無不絞盡腦汁提供更貼近人性化的搜尋。好用的搜尋讓人如魚得水,難以割捨;不好用的則將怨聲載道,眾叛親離。讀者們或許有過如下經驗:使用某大商業搜尋引擎時,列出的結果總是塞了一堆行銷和廣告,我們得用眼睛過濾掉這些無用的資訊並多翻個幾頁才可能找到想要的資料。
當然我們不該指責這些提供搜尋的公司,公司本為了獲利而生存,在需獲利又不能跟使用者收費的前提下,勢必得提供廣告版面給買主,或是將廣告行為秘密地安插至搜尋結果中,但這些行為依舊會影響到使用者的操作便利性。其實搜尋引擎不必然非得由大公司把持,即使是個人網站或企業內部,也可建置出相當客製化的搜尋引擎,而不必屈就於商業搜尋引擎。
建立自己的搜尋
部份個人或企業內部在架設網站時或許有些機密資料並不希望被商業搜尋引擎挖掘到,但仍需提供搜尋欄位給使用者找尋站內或其他相關網站的資料,這時候建立一個自己的搜尋引擎會是一個不錯的方案。
當然筆者傳授的不會是需要讀者花錢的玩意兒,只要讀者可以連接到網路,一切搞定。搜尋引擎固然可以自己打造,但矛盾的是網海無涯,區區一台電腦怎麼在短時間內對網路上的資訊做蒐集檢索?筆者在此也不建議對整個網路做全面性的分析,即使是超級電腦也要運算好 一段時間。我們可針對特定網站進行分析檢索,並運用目前熱門的雲端平台來加速分析的進行,讓讀者們更加暸解雲端運算的好用之處。以下將介紹可建立搜尋引擎的開放原始碼軟體Nutch,以及上期簡單介紹過可發揮雲端力量的分散式運算軟體Hadoop。
什麼是Nutch
Nutch是隸屬於Apache軟體基金會的開發項目之一,基於名為Lucene的Java檢索函式庫所實作出的網頁搜尋引擎。Nutch分為爬網(crawler)和查詢(searcher)兩部份,爬網部分主要用在抓取網頁資料並建立出索引,查詢部分則利用爬網建立出的索引,提供使用者來查詢所要找的資料。雖說Nutch主要為網頁搜尋,但其實它也可以用在本機內部的資料檢索。由以下Nutch的工作流程圖中可看出,首先:
- 1. 給定Nutch一開始要爬網的網址。
- 2. Nutch會生成待擷取的網址列表並排入排程中。
- 3. Nutch開始從指定的網址中擷取網頁資料。
- 4. 從擷取的網頁資料中提取出新的網址並加入到步驟2的排程,並重複步驟2~4的流程。
- 5. 分析擷取的網頁資料內容並做反向的編排索引。
- 6. 使用者便可透過瀏覽器從搜尋字串中找出相對應的網址。
▲ Nutch的分析使用了現在業界琅琅上口的Map/Reduce工作方式,而Map/Reduce則正是Hadoop的功能之一。
Hadoop是Nutch的小孩
上期簡單介紹過Hadoop,其中包含拆解/合併引擎(Map/Reduce)、分散式檔案系統(HDFS)及分散式資料庫(HBase)。Hadoop並非無中生有,它來自於上述的Nutch。Nutch的開發者Doug Cutting原本只是專心地在開發Nutch搜尋引擎,後來發現其底層所使用的Map/Reduce架構可以做其他事,之後便分割出來成為獨立的Hadoop專案。
而取名為Hadoop也只是因為Doug Cutting的小孩把他心愛的黃色大象玩具叫做Hadoop。Hadoop的目標在於處理petabyte(10的15次方位元組)等級的資料量,一個petabyte差不多等同於一千顆1TB硬碟加起來的容量。Hadoop的分散式檔案系統在設計上具有高度容錯性,一份資料寫入時會打散後並複製多個副本儲存在不同的節點(Datanode)上,讀取時再重新組合回一個檔案。這些工作分配都由架構圖中的Namenode老大控制,也就是說哪天老大掛了,HDFS也就玩完了。
▲ 在HDFS中的檔案以區塊(block)方式儲存,Namenode則存放了詮釋檔案的元資料(metadata)。客戶端(client)從Namenode請求讀寫命令後,Namenode會告訴客戶該至哪些Datanodes讀取或寫入檔案,而不會經手該檔案內容。
欲知詳情,敬請期待66期電腦王雜誌
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!