將數(shù)據(jù)導入集群還只是大數(shù)據(jù)分析的第一步。接下來我們需要提取HBase中來自文件的所有數(shù)據(jù)內容,而Hive的設計初衷在于規(guī)范這一提取流程。它提供一套SQL類語言,用于深入發(fā)掘文件內容并提取出代碼所需要的數(shù)據(jù)片段。這樣一來,所有結果數(shù)據(jù)就將具備標準化格式,而Hive則將其轉化為可直接用于查詢的存儲內容。
上圖所示為Hive代碼,這部分代碼的作用在于創(chuàng)建一套列表、向其中添加數(shù)據(jù)并選擇信息。Hive由Apache項目負責發(fā)行。
官方網(wǎng)站:hive.apache.org
Sqoop

要將蘊藏在SQL數(shù)據(jù)庫中的數(shù)據(jù)寶庫發(fā)掘出來并交給Hadoop打理需要進行一系列調整與操作。Sqoop負責將飽含信息的大型列表從傳統(tǒng)數(shù)據(jù)庫中移動到Hive或者HBase等工具的控制之下。
Sqoop是一款命令行工具,能夠控制列表與數(shù)據(jù)存儲層之間的映射關系,并將列表轉化為可為HDFS、HBase或者Hive所接納的可配置組合。上圖所示為Apache文檔材料中的內容,可以看到Sqoop位于傳統(tǒng)庫與節(jié)點上的Hadoop結構之間。
Sqoop的最新穩(wěn)定版本為1.4.4,但目前其2.0版本同樣進展順利。兩個版本目前都可供下載,且遵循Apache許可。
官方網(wǎng)站:sqoop.apache.org
Pig

一旦數(shù)據(jù)以Hadoop能夠識別的方式被保存在節(jié)點當中,有趣的分析工作將由此展開。Apache的Pig會用自己的小”豬拱”梳理數(shù)據(jù),運行利用自有語言(名為Pig Latin)所編寫的代碼,并添加處理數(shù)據(jù)所需要的各種抽象機制。這樣的結構會一步步指引用戶走向那些易于以并行方式運行在整個集群當中的算法。
Pig還擁有一系列針對常見任務的標準化功能,能夠輕松處理諸如數(shù)據(jù)平均值計算、日期處理或者字符串差異比較等工作。如果這些還不夠用–實際上一般都不夠用–大家還可以動手編寫屬于自己的功能。上圖所示為Apache說明文檔中的一項實例,解釋了用戶如何將自己的代碼與Pig代碼結合起來、從而實現(xiàn)數(shù)據(jù)發(fā)掘。目前Pig的最新版本為0.12.0。
官方網(wǎng)站:pig.apache.org
ZooKeeper

一旦Hadoop需要在大量設備之上,集群運作的順序就顯得非常重要,特別是在其中某些設備開始簽出的情況下。
ZooKeeper在集群中強制執(zhí)行一套文件系統(tǒng)式的層級結構,并為設備保存所有元數(shù)據(jù),這樣我們就可以在不同設備之間進行作業(yè)同步。(上圖所示為一套簡單的二層式集群。)說明文檔展示了如何在數(shù)據(jù)處理流程中實施多種標準化技術,例如生產(chǎn)方-消費方隊列,從而保證數(shù)據(jù)能夠以正確的順序進行拆分、清理、篩選以及分類。當上述過程結束后,使用ZooKeeper的節(jié)點會彼此通信、并以最終生成的數(shù)據(jù)為起點開始分析工作。
官方網(wǎng)站:zookeeper.apache.org
NoSQL

并不是所有Hadoop集群都會使用HBase或者HDFS。某些集成了NoSQL的數(shù)據(jù)存儲體系會采取自己的獨特機制實現(xiàn)跨集群各節(jié)點的數(shù)據(jù)存儲任務。在這種情況下,此類體系能夠利用NoSQL數(shù)據(jù)庫的全部功能對數(shù)據(jù)進行存儲與檢索,而后利用Hadoop規(guī)劃同一集群當中的數(shù)據(jù)分析作業(yè)。
此類方案中最為常見的當數(shù)Cassandra、Riak或者MongoDB,而用戶則在積極探索將這兩種技術加以結合的最佳方式。作為MongoDB的主要支持廠商之一,10Gen公司建議用戶利用Hadoop進行離線分析,而MongoDB同時仍然能夠以實時方式統(tǒng)計來自Web的數(shù)據(jù)。上圖所示為連接器如何實現(xiàn)兩套體系之間的數(shù)據(jù)遷移。
Mahout

目前能夠幫助我們進行數(shù)據(jù)分析、分類以及篩選的算法多種多樣,而Mahout項目的設計目的正是為了將這些算法引入Hadoop集群當中。大多數(shù)標準化算法,例如K-Means、Dirichelet、并行模式以及貝葉斯分類等,都能夠讓我們的數(shù)據(jù)同Hadoop類型的映射與規(guī)約機制進行協(xié)作。
上圖所示為一套篷聚類集群化算法,它選擇點與半徑來構成圓圈、從而覆蓋整個點集合中的對應部分。這只是眾多Hadoop內置數(shù)據(jù)分析工具之一。