
十八款Hadoop工具幫你馴服大數(shù)據(jù)_數(shù)據(jù)分析師培訓(xùn)
Hadoop已經(jīng)通過(guò)自身的蓬勃發(fā)展證明,它不僅僅是一套用于將工作內(nèi)容傳播到計(jì)算機(jī)群組當(dāng)中的小型堆棧–不,這與它的潛能相比簡(jiǎn)直微不足道。這套核心的價(jià)值已經(jīng)被廣泛證實(shí),目前大量項(xiàng)目如雨后春筍般圍繞它建立起來(lái)。有些項(xiàng)目負(fù)責(zé)數(shù)據(jù)管理、有些負(fù)責(zé)流程監(jiān)控、還有一些則提供先進(jìn)的數(shù)據(jù)存儲(chǔ)機(jī)制。
Hadoop業(yè)界正在迅速發(fā)展,從業(yè)企業(yè)拿出的解決方案也多種多樣,其中包括提供技術(shù)支持、在托管集群中提供按時(shí)租用服務(wù)、為這套開源核心開發(fā)先進(jìn)的功能強(qiáng)化或者將自有工具添加到方案組合當(dāng)中。
在今天的文章中,我們將一同了解當(dāng)下Hadoop生態(tài)系統(tǒng)當(dāng)中那些最為突出的杰作??傮w而言,這是一套由眾多工具及代碼構(gòu)成的堅(jiān)實(shí)基礎(chǔ)、共同聚集在”Hadoop”這面象征著希望的大旗之下。
雖然很多人會(huì)把映射與規(guī)約工具廣義化稱為Hadoop,但從客觀角度講、其實(shí)只有一小部分核心代碼算是真正的Hadoop。多個(gè)工作節(jié)點(diǎn)負(fù)責(zé)對(duì)保存在本地的數(shù)據(jù)進(jìn)行功能執(zhí)行,而基于Java的代碼則對(duì)其加以同步。這些工作節(jié)點(diǎn)得到的結(jié)果隨后經(jīng)過(guò)匯總并整理為報(bào)告。第一個(gè)步驟被稱為”映射(即map)”,而第二步驟則被稱為”規(guī)約(reduce)”。
Hadoop為本地?cái)?shù)據(jù)存儲(chǔ)與同步系統(tǒng)提供一套簡(jiǎn)化抽象機(jī)制,從而保證程序員能夠?qū)⒆⒁饬性诰帉懘a以實(shí)現(xiàn)數(shù)據(jù)分析工作上,其它工作交給Hadoop處理即可。Hadoop會(huì)將任務(wù)加以拆分并設(shè)計(jì)執(zhí)行規(guī)程。錯(cuò)誤或者故障在意料之中,Hadoop的設(shè)計(jì)初衷就在于適應(yīng)由單獨(dú)設(shè)備所引發(fā)的錯(cuò)誤。項(xiàng)目代碼遵循Apache許可機(jī)制。
官方網(wǎng)站:hadoop.apache.org
Ambari
Hadoop集群的建立需要涉及大量重復(fù)性工作。Ambari提供一套基于Web的圖形用戶界面并配備引導(dǎo)腳本,能夠利用大部分標(biāo)準(zhǔn)化組件實(shí)現(xiàn)集群設(shè)置。在大家采納Ambari并將其付諸運(yùn)行之后,它將幫助各位完成配置、管理以及監(jiān)管等重要的Hadoop集群相關(guān)任務(wù)。上圖顯示的就是集群?jiǎn)?dòng)后Ambari所顯示的信息屏幕。Ambari屬于Apache旗下的衍生項(xiàng)目,并由Hortonworks公司負(fù)責(zé)提供支持。
下載地址:http://incubator.apache.org/ambari/
Hadoop分布式文件系統(tǒng)提供一套基礎(chǔ)框架,專門用于拆分收集自不同節(jié)點(diǎn)之間的數(shù)據(jù),并利用復(fù)制手段在節(jié)點(diǎn)故障時(shí)實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。大型文件會(huì)被拆分成數(shù)據(jù)塊,而多個(gè)節(jié)點(diǎn)能夠保留來(lái)自同一個(gè)文件的所有數(shù)據(jù)塊。上圖來(lái)自Apache公布的說(shuō)明文檔,旨在展示數(shù)據(jù)塊如何分布至各個(gè)節(jié)點(diǎn)當(dāng)中。
這套文件系統(tǒng)的設(shè)計(jì)目的在于同時(shí)實(shí)現(xiàn)高容錯(cuò)性與高數(shù)據(jù)吞吐能力的結(jié)合。加載數(shù)據(jù)塊能夠保持穩(wěn)定的信息流通,而低頻率緩存處理則將延遲降至最小。默認(rèn)模式假設(shè)的是需要處理大量本地存儲(chǔ)數(shù)據(jù)的長(zhǎng)時(shí)間作業(yè),這也吻合該項(xiàng)目所提出的”計(jì)算能力遷移比數(shù)據(jù)遷移成本更低”的座右銘。HDFS同樣遵循Apache許可。
官方網(wǎng)站:hadoop.apache.org
HBase
當(dāng)數(shù)據(jù)被匯總成一套規(guī)模龐大的列表時(shí),HBase將負(fù)責(zé)對(duì)其進(jìn)行保存、搜索并自動(dòng)在不同節(jié)點(diǎn)之間共享該列表,從而保證MapReduce作業(yè)能夠以本地方式運(yùn)行。即使列表中容納的數(shù)據(jù)行數(shù)量高達(dá)數(shù)十億,該作業(yè)的本地版本仍然能夠?qū)ζ溥M(jìn)行查詢。
該代碼并不能提供其它全功能數(shù)據(jù)庫(kù)所遵循的ACID保證,但它仍然為我們帶來(lái)一部分關(guān)于本地變更的承諾。所有衍生版本的命運(yùn)也都維系在一起–要么共同成功、要么一起失敗。
這套系統(tǒng)通常被與谷歌的BigTable相提并論,上圖所示為來(lái)自HareDB(一套專為HBase打造的圖形用戶界面客戶端)的截圖。官方網(wǎng)站:hbase.apache.org
將數(shù)據(jù)導(dǎo)入集群還只是大數(shù)據(jù)分析的第一步。接下來(lái)我們需要提取HBase中來(lái)自文件的所有數(shù)據(jù)內(nèi)容,而Hive的設(shè)計(jì)初衷在于規(guī)范這一提取流程。它提供一套SQL類語(yǔ)言,用于深入發(fā)掘文件內(nèi)容并提取出代碼所需要的數(shù)據(jù)片段。這樣一來(lái),所有結(jié)果數(shù)據(jù)就將具備標(biāo)準(zhǔn)化格式,而Hive則將其轉(zhuǎn)化為可直接用于查詢的存儲(chǔ)內(nèi)容。
上圖所示為Hive代碼,這部分代碼的作用在于創(chuàng)建一套列表、向其中添加數(shù)據(jù)并選擇信息。Hive由Apache項(xiàng)目負(fù)責(zé)發(fā)行。
官方網(wǎng)站:hive.apache.org
Sqoop
要將蘊(yùn)藏在SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)寶庫(kù)發(fā)掘出來(lái)并交給Hadoop打理需要進(jìn)行一系列調(diào)整與操作。Sqoop負(fù)責(zé)將飽含信息的大型列表從傳統(tǒng)數(shù)據(jù)庫(kù)中移動(dòng)到Hive或者HBase等工具的控制之下。
Sqoop是一款命令行工具,能夠控制列表與數(shù)據(jù)存儲(chǔ)層之間的映射關(guān)系,并將列表轉(zhuǎn)化為可為HDFS、HBase或者Hive所接納的可配置組合。上圖所示為Apache文檔材料中的內(nèi)容,可以看到Sqoop位于傳統(tǒng)庫(kù)與節(jié)點(diǎn)上的Hadoop結(jié)構(gòu)之間。
Sqoop的最新穩(wěn)定版本為1.4.4,但目前其2.0版本同樣進(jìn)展順利。兩個(gè)版本目前都可供下載,且遵循Apache許可。
官方網(wǎng)站:sqoop.apache.org
Pig
一旦數(shù)據(jù)以Hadoop能夠識(shí)別的方式被保存在節(jié)點(diǎn)當(dāng)中,有趣的分析工作將由此展開。Apache的Pig會(huì)用自己的小”豬拱”梳理數(shù)據(jù),運(yùn)行利用自有語(yǔ)言(名為Pig Latin)所編寫的代碼,并添加處理數(shù)據(jù)所需要的各種抽象機(jī)制。這樣的結(jié)構(gòu)會(huì)一步步指引用戶走向那些易于以并行方式運(yùn)行在整個(gè)集群當(dāng)中的算法。
Pig還擁有一系列針對(duì)常見(jiàn)任務(wù)的標(biāo)準(zhǔn)化功能,能夠輕松處理諸如數(shù)據(jù)平均值計(jì)算、日期處理或者字符串差異比較等工作。如果這些還不夠用–實(shí)際上一般都不夠用–大家還可以動(dòng)手編寫屬于自己的功能。上圖所示為Apache說(shuō)明文檔中的一項(xiàng)實(shí)例,解釋了用戶如何將自己的代碼與Pig代碼結(jié)合起來(lái)、從而實(shí)現(xiàn)數(shù)據(jù)發(fā)掘。目前Pig的最新版本為0.12.0。
官方網(wǎng)站:pig.apache.org
ZooKeeper
一旦Hadoop需要在大量設(shè)備之上,集群運(yùn)作的順序就顯得非常重要,特別是在其中某些設(shè)備開始簽出的情況下。
ZooKeeper在集群中強(qiáng)制執(zhí)行一套文件系統(tǒng)式的層級(jí)結(jié)構(gòu),并為設(shè)備保存所有元數(shù)據(jù),這樣我們就可以在不同設(shè)備之間進(jìn)行作業(yè)同步。(上圖所示為一套簡(jiǎn)單的二層式集群。)說(shuō)明文檔展示了如何在數(shù)據(jù)處理流程中實(shí)施多種標(biāo)準(zhǔn)化技術(shù),例如生產(chǎn)方-消費(fèi)方隊(duì)列,從而保證數(shù)據(jù)能夠以正確的順序進(jìn)行拆分、清理、篩選以及分類。當(dāng)上述過(guò)程結(jié)束后,使用ZooKeeper的節(jié)點(diǎn)會(huì)彼此通信、并以最終生成的數(shù)據(jù)為起點(diǎn)開始分析工作。
官方網(wǎng)站:zookeeper.apache.org
NoSQL
并不是所有Hadoop集群都會(huì)使用HBase或者HDFS。某些集成了NoSQL的數(shù)據(jù)存儲(chǔ)體系會(huì)采取自己的獨(dú)特機(jī)制實(shí)現(xiàn)跨集群各節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)任務(wù)。在這種情況下,此類體系能夠利用NoSQL數(shù)據(jù)庫(kù)的全部功能對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)與檢索,而后利用Hadoop規(guī)劃同一集群當(dāng)中的數(shù)據(jù)分析作業(yè)。
此類方案中最為常見(jiàn)的當(dāng)數(shù)Cassandra、Riak或者M(jìn)ongoDB,而用戶則在積極探索將這兩種技術(shù)加以結(jié)合的最佳方式。作為MongoDB的主要支持廠商之一,10Gen公司建議用戶利用Hadoop進(jìn)行離線分析,而MongoDB同時(shí)仍然能夠以實(shí)時(shí)方式統(tǒng)計(jì)來(lái)自Web的數(shù)據(jù)。上圖所示為連接器如何實(shí)現(xiàn)兩套體系之間的數(shù)據(jù)遷移。
Mahout
目前能夠幫助我們進(jìn)行數(shù)據(jù)分析、分類以及篩選的算法多種多樣,而Mahout項(xiàng)目的設(shè)計(jì)目的正是為了將這些算法引入Hadoop集群當(dāng)中。大多數(shù)標(biāo)準(zhǔn)化算法,例如K-Means、Dirichelet、并行模式以及貝葉斯分類等,都能夠讓我們的數(shù)據(jù)同Hadoop類型的映射與規(guī)約機(jī)制進(jìn)行協(xié)作。
上圖所示為一套篷聚類集群化算法,它選擇點(diǎn)與半徑來(lái)構(gòu)成圓圈、從而覆蓋整個(gè)點(diǎn)集合中的對(duì)應(yīng)部分。這只是眾多Hadoop內(nèi)置數(shù)據(jù)分析工具之一。
Mahout從屬于Apache項(xiàng)目并遵循Apache許可。
官方網(wǎng)站:mahout.apache.org
Lucene/Solr
這是目前惟一的一款用于檢索非結(jié)構(gòu)化文本大型塊的工具,它同時(shí)也是Hadoop的天生合作伙伴。由于利用Java編寫,Lucene能夠輕松與Hadoop展開協(xié)作,共同創(chuàng)建出一套用于分布式文本管理的大型工具。Lucene負(fù)責(zé)處理檢查任務(wù)、Hadoop則負(fù)責(zé)將查詢分布到整個(gè)集群當(dāng)中。
新的Lucene-Hadoop功能正迅速發(fā)展成為全新項(xiàng)目。以Katta為例,作為L(zhǎng)ucene的衍生版本,它能自動(dòng)對(duì)整個(gè)集群進(jìn)行解析。Solr則提供集成度更高的動(dòng)態(tài)集群化解決方案,能夠解析XML等標(biāo)準(zhǔn)化文件格式。上圖所示為L(zhǎng)uke,一款用于Lucene瀏覽的圖形用戶界面。它現(xiàn)在還提供插件、用于對(duì)Hadoop集群進(jìn)行瀏覽檢索。
Lucene及其多個(gè)衍生版本都屬于Apache項(xiàng)目的組成部分。
官方網(wǎng)站:www.apache.org
Avro
當(dāng)Hadoop作業(yè)需要進(jìn)行數(shù)據(jù)共享時(shí),我們完全可以使用任何一種數(shù)據(jù)庫(kù)加以實(shí)現(xiàn)。但Avro是一套序列化系統(tǒng),能夠利用一定模式將數(shù)據(jù)整理起來(lái)并加以理解。每一個(gè)數(shù)據(jù)包都附帶一種JSON數(shù)據(jù)結(jié)構(gòu),用于解釋數(shù)據(jù)的具體解析方式。這種數(shù)據(jù)頭會(huì)指定數(shù)據(jù)結(jié)構(gòu),從而避免我們?cè)跀?shù)據(jù)中編寫額外的標(biāo)簽來(lái)對(duì)字段進(jìn)行標(biāo)記。如此一來(lái),當(dāng)共享數(shù)據(jù)較為規(guī)律時(shí),其體積將比傳統(tǒng)格式(例如XML或者JSON)更為緊湊。
上圖所示為針對(duì)某個(gè)文件的Avro處理模式,其中分為三種不同字段:姓名、最喜歡的數(shù)字與最喜歡的顏色。Avro同樣屬于Apache項(xiàng)目的組成部分,其代碼擁有Java、C++以及Python等多個(gè)語(yǔ)言版本。
官方網(wǎng)站:avro.apache.org
Oozie
將一項(xiàng)作業(yè)拆分成多個(gè)步驟能夠讓工作變得更為簡(jiǎn)單。如果大家將自己的項(xiàng)目拆分成數(shù)個(gè)Hadoop作業(yè),那么Oozie能夠以正確的順序?qū)⑵浣M合起來(lái)并加以執(zhí)行。大家不需要插手堆棧調(diào)整,等待一個(gè)堆棧執(zhí)行結(jié)束后再啟動(dòng)另一個(gè)。Oozie能夠按照DAG(即有向無(wú)環(huán)圖)的規(guī)范對(duì)工作流加以管理。(環(huán)圖相當(dāng)于無(wú)限循環(huán),對(duì)于計(jì)算機(jī)來(lái)說(shuō)就像一種陷阱。)只需將DAG交給Oozie,我們就可以放心出去吃飯了。
上圖所示為來(lái)自O(shè)ozie說(shuō)明文檔的一幅流程圖。Oozie代碼受到Apache許可的保護(hù)。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10CDA 數(shù)據(jù)分析師:商業(yè)數(shù)據(jù)分析實(shí)踐的落地者與價(jià)值創(chuàng)造者 商業(yè)數(shù)據(jù)分析的價(jià)值,最終要在 “實(shí)踐” 中體現(xiàn) —— 脫離業(yè)務(wù)場(chǎng)景的分 ...
2025-09-10機(jī)器學(xué)習(xí)解決實(shí)際問(wèn)題的核心關(guān)鍵:從業(yè)務(wù)到落地的全流程解析 在人工智能技術(shù)落地的浪潮中,機(jī)器學(xué)習(xí)作為核心工具,已廣泛應(yīng)用于 ...
2025-09-09SPSS 編碼狀態(tài)區(qū)域中 Unicode 的功能與價(jià)值解析 在 SPSS(Statistical Product and Service Solutions,統(tǒng)計(jì)產(chǎn)品與服務(wù)解決方案 ...
2025-09-09