天天看點

《R與Hadoop大資料分析實戰》一1.7 Hadoop的子項目

本節書摘來自華章出版社《r與hadoop大資料分析實戰》一書中的第1章,第1.7節,作者 (印)vignesh prajapati,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

mahout是一個很強大的資料挖掘庫,其中包含大部分與資料挖掘有關的機器學習算法,可實作聚類、分類、回歸分析及統計模組化等,可用于智能應用,它也是一個不錯的機器學習庫。

apache mahout是一個商用軟體,需要apache軟體分發的許可證。apache mahout的目标是建立一個充滿活力、反應靈敏、多樣化的社群,以友善對項目本身以及潛在使用案例的讨論。

使用mahout的一些公司如下:

amazon:這是一個提供個性化推薦的購物網站。

aol:這是一個有購物建議的購物導航網站。

drupal:這是提供開放資源的基于内容建議的一個使用mahout的php内容管理系統。

ioffer:這是一個購物網站,它使用mahout的頻繁模式集挖掘(frequent pattern set mining)和協同過濾(collaborative filtering)來為使用者推薦商品。

lucidworks big data:一個著名的資料分析公司,使用mahout來實作聚類、檔案複制跟蹤、段落提取及分類等。

radoop:提供了一個拖曳式的資料分析界面,包括mahout的聚類及分類算法。

twitter:這是一個社交網站,它使用mahout的latent dirichlet allocation(lda) 實作使用者興趣模組化,并且在github保持mahout的一個分支。

yahoo!:這是世界上最流行的網絡服務供應商之一,yahoo! mail使用 mahout的頻繁模式集挖掘。

apache hbase是hadoop的一個分布式大資料存儲系統。它允許随機、實時讀寫通路大資料。它創新性地被設計為面向列的資料存儲模型,其靈感來自google bigtable。

使用hbase的公司如下:

yahoo!:這是世界上流行的為相鄰檔案複本檢測提供服務的網站。

twitter:這是進行版本控制存儲和檢索的一個社交網站。

mahalo:這是一項類似内容推薦的知識共享的服務。

ning:這是進行實時分析和報告的社交網絡服務一個提供商。

stumbleupon:這是一個普遍的個性化推薦系統、實時資料存儲和資料分析平台。

veoh:這是為使用者分析系統提供線上多媒體内容共享的一個平台。

hive是一個基于hadoop的資料倉庫,類似于facebook開發的架構。它允許使用者查詢類sql語言,例如高度抽象到hadoop mapreduce中的hiveql。這使得沒有mapreduce經驗的sql程式員可以使用資料倉庫,并且使它更容易內建商業智能和可視化工具用于實時查詢處理。

pig是一個使用類sql語言,稱為pig latin。該語言基于hadoop開源平台分析大規模資料集。它提供了一個簡單的操作和程式設計接口,用于大規模的、複雜的資料并行計算。具有易于開發、高易用性及可擴充性特點。apache pig是由yahoo!開發的,yahoo!和twitter是pig的主要使用者。

對開發人員來說,直接使用的java api可能是很乏味或容易出錯,而且限制了java程式員在使用hadoop程式設計時的靈活性。是以,hadoop提供了兩個解決方案,pig和hive,它們使用了mapreduce對資料集進行管理和分析,使hadoop程式設計更加容易。

apache sqoop提供了hadoop資料處理平台、關系型資料庫、資料倉庫。同時提供了一種非關系型資料庫快速轉換大量資料的新方法。apache sqoop是一個互動式的工具,可用于将資料從關系型資料庫導入hadoop hdfs中,并将hdfs的資料導出到關系型資料庫中。

它可與目前最流行的關系型資料庫一起工作,例如mysql、postgresql、oracle、microsoft sql server和ibm db2,以及企業級資料倉庫。sqoop的擴充api提供了資料庫系統的連接配接方法。并且,這個sqoop資源也與一些很流行的資料庫連接配接方法并駕齊驅。為了進行這個操作,sqoop首先用一些資料庫視圖建立和轉化的邏輯向hadoop mapreduce傳輸資料。

apache zookeeper也是hadoop的子項目,它用于管理hadoop、hive、pig、hbase、solr以及一些其他工程。zookeeper是一個開源的分布式應用協調服務,它是利用基于同步和配置的快速paxos算法以及一些例如分布式應用維護的命名服務設計出來的。在程式設計中,zookeeper設計是一個非常簡單的資料模型結構,很像系統檔案目錄的樹狀結構。

zookeeper被分為兩個部分:服務端和用戶端。對于一個使用zookeeper服務的叢集,隻能一台伺服器扮演主伺服器,用來接受和協調所有請求。其他的伺服器都是主伺服器的隻讀副本。如果主伺服器崩潰,任何一台其他伺服器可以開始為響應請求提供服務。zookeeper用戶端依據zookeeper服務連接配接到伺服器上。用戶端發送請求,接受回應,讀取監視事件并通過tcp協定連接配接到伺服器發送一個心跳。

對于分布式應用的高性能協調服務,zookeeper是一個集中服務,用于提供維護配置資訊、命名、分布式同步群組服務。所有這些類型的服務通過某種形式被分布式應用使用。每次部署這些應用,就會有很多修複漏洞的工作和不能改變的競争環境。這些服務在應用部署後會導緻管理工作複雜。

apache solr是一個基于apache認證項目的開源企業級搜尋平台。apache solr具有高度的可擴充性,支援分布式查詢及索引響應引擎。是以,可以建立網頁版的應用,可實作強大的文本查找、分片查找、即時索引、動态叢集、資料庫內建及富文檔處理等。

apache soar是用java編寫的,它作為一台獨立的伺服器,通過類似于rest http/xml和json的過程來提供查詢結果。是以,solr 伺服器很容易與用其他的程式設計語言編寫的應用內建。基于這些特性,netflix、aol、cnet和zappos都在使用apache soar查詢伺服器。

ambari是針對hortonworks的工具。apache ambari是一個基于網絡的工具,用于支援apache hadoop叢集的支援、管理和監視。ambari支援操作絕大多數hadoop元件,如同集中管理一樣包括hdfs、mapreduce、hive、pig、hbase、zookeeper、sqoop和hcatlog。

除此以外,ambari能夠在基于kerberos遠端認證協定的hadoop叢集上安裝安全服務。同時,它還為管理內建式ldap和活動目錄提供基于角色的使用者識别、授權和審計的功能。