天天看點

【學習】Hadoop、爬蟲和Elasticsearch的企業級應用

一、Hadoop生态系統

Hadoop利用大量廉價的計算機,提供了一個可擴充強,可靠性高的機制;并利用廉價的方式來存儲大量資料。Hadoop把任務分成任務片,分布在數千台計算機上,進而進行快速分析,并分布式存儲大量的資料。Hadoop還提供了新的和改進的分析技術,進而使大量結構化資料的複雜分析變為可能。

Hadoop的資料進行分布式存儲;在叢集上備份多份資料,進而來提高可靠性和實用性;資料在哪存儲就在哪處理,進而消除了帶寬瓶頸問題。

 Hadoop的主要特點如下:

(1)存儲量大

Hadoop能夠使應用程式運作在成千上萬的計算機和PB級資料上。那些曾經隻能由超級計算機來處理的高性能應用,可以由大量廉價的計算機一起處理。在叢集中,數百台“小”的電腦的聚合計算能力,可以超過一台超級計算機的計算能力,并且價格便宜。Hadoop利用超過數千台機器的叢集,在企業可以承受的價格範圍内,提供了巨大的存儲空間和處理能力。

(2)分布式處理與快速的資料通路

Hadoop叢集在提供高效資料存儲能力的同時,也提供了快速的資料通路能力。在Hadoop出現之前,應用程式很難并行運作在計算機叢集之間。這是因為叢集模型在建立共享存儲資料時,對I/O性能要求很高。用Hadoop來處理資料,減輕了許多高性能的挑戰。此外,Hadoop應用程式處理資料通常都是有序進行的,這就避免了随機的資料通路(磁盤尋道操作),進一步減輕了I/O負載。

(3)可靠性,故障轉移和可擴充性

在過去,并行應用程式很難解決叢集上機器的可靠性問題。雖然單台機器的可靠性相當高,但是随着群集增加,出故障的機率也随之增加。在數千個節點的叢集上,這種日常故障經常發生。由于Hadoop有獨特的設計和實施方式,相同的故障将會産生相似的結果。進而,Hadoop可以監測到這些故障,并利用不同的節點重新執行任務。此外,Hadoop有很好的可擴充性,實作無縫地将多個伺服器整合到一個叢集,并利用它們來存儲資料、執行程式。

(4)将業務規劃和基礎設施維護進行了清晰的劃分

對于大多數Hadoop使用者而言,Hadoop最重要的特征是,将業務規劃和基礎設施維護進行了清晰的劃分。為那些專注于商業業務的使用者,隐藏了Hadoop的基礎設施的複雜性,并提供了一個易于使用的平台,進而使複雜的分布式計算的問題簡單化。

二、網絡爬蟲Web Crawler

網絡爬蟲其實是非常重要的一個系統,特别是在今天這個資料為王的時代。如果你是一個剛剛開始的公司或者項目,沒有任何原始的資料積累,那麼通過爬蟲去Internet上找到那些有價值的資料再進行資料的清洗和整理,是一個可以快速得到資料的重要手段。

網絡爬蟲是搜尋引擎所必須的資訊采集系統,它即将網際網路上的網頁或其它資訊收集到本地,然後對這些資訊建立索引。當使用者輸入查詢請求的時,先對使用者的查詢請求進行分析,然後在索引庫中進行比對,最後對結果進行處理,傳回結果。

網絡爬蟲不僅是搜尋引擎的重要組成部分,在資訊采集、輿情分析、情報收集等一些需要進行資料采集的業務系統中也應用廣泛。對資料的采集是對大資料進行分析的重要前提條件。

網絡爬蟲能夠做到所見即所得的無阻攔式采集、快速把不規則頁面結構化并存儲、滿足越來越多的資料采集還要在有限時間内采集。

三、實時搜尋分析平台Elasticsearch

【簡介】

Elasticsearch成立于2012年,以搜尋業務起家,現在主打資訊搜尋與資料分析,更是為大資料挖掘提供了完整的解決方案。

Elasticsearch基于Foursquare、Soundcloud、GitHub等平台的分享點贊資訊,打造了開源搜尋分析引擎。目前主要有ELK組合:Elasticsearch(搜尋)、Logstash(大資料搜集)、Kibana(資料流實時分析)三個核心産品,日前已達到800萬下載下傳量。其中Kibana服務能夠基于時間段進行對比,進而對大量資料達到較好的透析結果。

Elasticsearch是一個實時的分布式搜尋和分析引擎。它可以幫助你用前所未有的速度去處理大規模資料。它可以用于全文搜尋,結構化搜尋以及分析,當然你也可以将這三者進行組合。

Elasticsearch是一個建立在全文搜尋引擎 Apache Lucene™ 基礎上的搜尋引擎,可以說Lucene是當今最先進,最高效的全功能開源搜尋引擎架構。

Elasticsearch不但包括了全文搜尋功能,還可以進行以下工作:

(1)分布式實時檔案存儲,并将每一個字段都編入索引,使其可以被搜尋。

(2)實時分析的分布式搜尋引擎。

(3)可以擴充到上百台伺服器,處理PB級别的結構化或非結構化資料。

這麼多的功能被內建到一台伺服器上,你可以輕松地通過用戶端或者任何你喜歡的程式語言與ES的RESTful API進行交流。

簡言之,Elasticsearch能夠提供簡單易用的方式幫助企業從大型資料庫中快速提取有效資訊進行分析,這種實時搜尋、分析的服務将為企業提供及時有效的資訊。

Elasticsearch的上手是非常簡單的。它附帶了很多非常合理的預設值,這讓初學者很好地避免一上手就要面對複雜的理論,

它安裝好了就可以使用了,用很小的學習成本就可以變得很有生産力。

【企業級應用案例】

1、Github

“Github使用Elasticsearch搜尋20TB的資料,包括13億的檔案和1300億行的代碼”,Github在2013年1月更新了他們的代碼搜尋,由solr轉為elasticsearch,目前叢集規模為26個索引存儲節點和8個用戶端節點(負責處理搜尋請求)

2、Mozilla

Mozilla公司以火狐著名,它目前使用 WarOnOrange 這個項目來進行單元或功能測試,測試的結果以 json的方式索引到elasticsearch中,開發人員可以非常友善的查詢。

Socorro是Mozilla 公司的程式崩潰報告系統,一有錯誤資訊就插入到 Hbase和Postgres 中,然後從 Hbase中讀取資料索引到elasticsearch中,友善查找。

3、Sony

Sony公司使用elasticsearch 作為資訊搜尋引擎

4、Infochimps

“在 Infochimps,我們已經索引了25億文檔,占 4TB的空間”。它是一家位于德克薩斯州奧斯丁的創業公司,為大資料平台提供商,主要提供基于hadoop的大資料處理方案。

四、Restful接口

大資料唯有通過應用投射給使用者才有用,對于架構師而言,設計大資料應用的關鍵問題是用面向對象架構(SOA)還是RESTful API将大資料元件及服務與應用其他部分連接配接。

Rest和非rest的主要差別看來就是Restful的架構風格明确的把資源和行為分開表述了,而不是像傳統的那樣竟然把資源和行為耦合在一起以Url的形式表述

随着雲計算和移動計算的興起,許多企業願意在網際網路上共享自己的資料、功能;另一方面,在企業中,RESTful API(也稱RESTful Web服務)也逐漸超越SOAP成為實作SOA的重要手段之一。

這個API應該是對浏覽器友好的,能夠很好地融入Web,而不是與Web格格不入。

浏覽器是最常見和最通用的REST用戶端。好的RESTful API應該能夠使用浏覽器+HTML完成所有的測試(不需要使用程式設計語言)。

當設計面向網際網路的API時,松耦合變成了一種“必須有”的強需求。緊耦合的API非常脆弱,一旦公布出去,伺服器端和用戶端都無法持續進化。尤其是伺服器端,公布出去的接口根本不敢改,改了之後,幾乎所有用戶端應用立即無法正常工作

在RESTful API中,對于資源的操作,是通過在伺服器端-用戶端之間傳遞資源的表述來間接完成的。

繼續閱讀