原文地址: http://www.infoq.com/cn/articles/nioche-apache-nutch2前端
開源的Web搜索框架Apache Nutch的2.1版本已於2012年10月5日發佈,該版本的新特性包括:支持一些改進屬性,用於更好地配置Solr;更新到各個Gora依賴;能夠選擇構建彈性搜索中的索引。Nutch既能夠運行在單臺服務器上,也能夠用做大規模抓取平臺運行在Hadoop集羣上。git
Nutch框架的2.0版本在經歷了兩年開發以後,已於今年7月發佈,該版本以Apache Gora框架做爲其存儲抽象而構建。Apache Gora開源框架提供了一種內存數據模型,並支持大數據的持久化。它支持將數據持久化到列存儲、鍵值存儲、文檔存儲和關係數據庫中,還能夠利用大量Apache Hadoop的MapReduce支持工具來分析數據。在今年早些時候,Gora已成爲Apache的頂級項目。數據庫
Nutch 2支持大數據存儲方案,如分佈式鍵值存儲Apache Accumulo、數據序列化系統Apache Avro、列族數據存儲Apache Cassandra、分佈式大數據存儲Apache HBase和Hadoop分佈式文件系統(HDFS)。apache
InfoQ:Apache Nutch framework的哪些方面使其適合NoSQL數據庫和大數據領域?後端
Julien:Nutch的確是被打上了「大數據」的標籤。一方面,Apache Hadoop就是產生自Nutch項目,而Apache Hadoop如今已是用於大規模數據處理的事實上的標準框架。Nutch是爲大規模Web數據抓取而設計的。有些用戶使用由數以百計的服務器組成的集羣來運行Nutch並保存了數十億的頁面。服務器
至於它與NoSQL的關係,這正是Nutch 2要解決的問題。Nutch 1.x分支依賴於Hadoop數據結構,這很是適合批處理任務;而Nutch 2則依賴於Apache GORA來提供一個在各類NoSQL數據存儲之上的統一前端。網絡
InfoQ:Apache Gora框架也是出自Nutch項目。做爲NoSQL數據庫的一個ORM框架,你可否談論一下它對應用程序開發人員有何幫助?數據結構
Julien:我喜歡把GORA看成「NoSQL數據庫的JDBC」,由於它在存儲之上提供了一層抽象,容許開發者編寫獨立於任何特定API的代碼。GORA的部分API也提供了一種在不一樣後端之上的MapReduce API,此外還有一種基於Apache AVRO的序列化機制。固然,它也支持基本的GET-PUT-DELETE等原子操做。框架
Apache GORA如今是2.1版本了,支持HBase、Cassandra和Accumulo等數據存儲,並且它還有一個SQL模塊!這意味着用戶能夠在MySQL數據庫之上運行MapReduce,一些Nutch 2用戶正是這麼作的。實際上,經過Nutch 2咱們也發現,人們喜歡不一樣的存儲方式,所以GORA是很是有用的。機器學習
InfoQ:最新的版本也支持HTML解析,這是利用Apache Tika框架來處理的。你能詳細描述一下這一特性是如何工做的嗎?
Julien:Apache Tika是一個用Java實現的開源庫,支持從多種格式中(如HTML、PDF和Word等)抽取文本和元數據,也能用於語言和MIME類型識別。 實際上它就是現有的第三方解析器(如PDFBox)的包裝器,只是提供了一個統一的API來使用這些解析器。在Nutch 1.x分支和Nutch解析器遺留系統中,Tika已經有所應用了,所以它並非Nutch 2.0中的新東西。有趣的是,就像Hadoop和GORA同樣,Apache Tika是也是一個脫胎於Nutch的項目。
InfoQ:在即將發佈的版本和特性方面,Nutch項目將來的路線圖是什麼樣的?
Julien: Nutch的發佈並無遵循一個嚴格的時間表。基本上是這樣,當咱們認爲大部分工做已經完成時,就會發布新的版本,而工做的完成又要依賴於有多少貢獻者參與和用戶最快要多久才能採用新項目等因素。Nutch 1.x和2.x一定會共存一段時間,直到2.x徹底成熟爲止。儘管如此,它們的發佈不太可能徹底同步。近來,咱們平均每一年發佈兩個版本,但隨着2.x版吸引力的增長,咱們可能會加快新版本發佈的頻率。
至於特性,最重要的一個就是升級到SOLR 4,再就是它的雲功能。咱們可能也會看到更多的功能將委託給第三方項目,好比Crawler Commons,這樣其餘項目就能複用並改進代碼了。咱們也考慮過將索引後端變爲可插拔的:雖然目前只支持SOLR(2.x版支持ElasticSearch),可是咱們但願開發者可以使用插件機制編寫新的索引後端,這樣就無需捆綁Nutch代碼了。把網頁排名功能交給Apache Giraph等圖庫,咱們能夠少編寫不少代碼,並且更有效率。我但願將大部分精力放在鞏固2.x的代碼上。
他也談到了完成這一項目所用的十年:
Julien:Apache Nutch最近已經10歲了,對軟件而言,這已經算很老了。爲何它仍然存在呢?我想緣由是,它可以把要作的事情作好,而且沒有試圖重複發明輪子。有趣的是,如今不少源自Nutch的項目,如Hadoop或Tika等,它們的發展也讓Nutch獲益匪淺。我但願這一切也會出如今GORA身上。Nutch 2的開發很是激動人心,並且咱們看到很是多的新用戶選擇了它。在開發過程當中,不斷有新的貢獻者和提交者加入進來,而這正是一個項目健康的標誌。
7月份,Apache Nutch團隊宣佈發佈了Nutch v1.5.1。這是Nutch 框架1.5.x主幹版本的一個維護性發布。具體信息見該版本的修改列表。該搜索框架能夠從網絡上下載。Nutch的文檔和教程等資料請參見項目的wiki頁面。
查看英文原文:Julien Nioche on Apache Nutch 2 Features and Product Roadmap