Hadoop已經通過自身的蓬勃發展證明,它不僅僅是一套用于將工作內容傳播到計算機群組當中的小型堆棧–不,這與它的潛能相比簡直微不足道。這套核心的價值已經被廣泛證實,目前大量項目如雨后春筍般圍繞它建立起來。有些項目負責數據管理、有些負責流程監控、還有一些則提供先進的數據存儲機制。
成都創新互聯主營民勤網站建設的網絡公司,主營網站建設方案,手機APP定制開發,民勤h5小程序設計搭建,民勤網站營銷推廣歡迎民勤等地區企業咨詢Hadoop業界正在迅速發展,從業企業拿出的解決方案也多種多樣,其中包括提供技術支持、在托管集群中提供按時租用服務、為這套開源核心開發先進的功能強化或者將自有工具添加到方案組合當中。
在今天的文章中,我們將一同了解當下Hadoop生態系統當中那些最為突出的杰作。總體而言,這是一套由眾多工具及代碼構成的堅實基礎、共同聚集在”Hadoop”這面象征著希望的大旗之下。
Hadoop
雖然很多人會把映射與規約工具廣義化稱為Hadoop,但從客觀角度講、其實只有一小部分核心代碼算是真正的Hadoop。多個工作節點負責對保存在本地的數據進行功能執行,而基于Java的代碼則對其加以同步。這些工作節點得到的結果隨后經過匯總并整理為報告。第一個步驟被稱為”映射(即map)”,而第二步驟則被稱為”規約(reduce)”。
Hadoop為本地數據存儲與同步系統提供一套簡化抽象機制,從而保證程序員能夠將注意力集中在編寫代碼以實現數據分析工作上,其它工作交給Hadoop處理即可。Hadoop會將任務加以拆分并設計執行規程。錯誤或者故障在意料之中,Hadoop的設計初衷就在于適應由單獨設備所引發的錯誤。項目代碼遵循Apache許可機制。
官方網站:hadoop.apache.org
Ambari
Hadoop集群的建立需要涉及大量重復性工作。Ambari提供一套基于Web的圖形用戶界面并配備引導腳本,能夠利用大部分標準化組件實現集群設置。在大家采納Ambari并將其付諸運行之后,它將幫助各位完成配置、管理以及監管等重要的Hadoop集群相關任務。上圖顯示的就是集群啟動后Ambari所顯示的信息屏幕。Ambari屬于Apache旗下的衍生項目,并由Hortonworks公司負責提供支持。
下載地址:http://incubator.apache.org/ambari/
HDFS (即Hadoop分布式文件系統)
Hadoop分布式文件系統提供一套基礎框架,專門用于拆分收集自不同節點之間的數據,并利用復制手段在節點故障時實現數據恢復。大型文件會被拆分成數據塊,而多個節點能夠保留來自同一個文件的所有數據塊。上圖來自Apache公布的說明文檔,旨在展示數據塊如何分布至各個節點當中。
這套文件系統的設計目的在于同時實現高容錯性與高數據吞吐能力的結合。加載數據塊能夠保持穩定的信息流通,而低頻率緩存處理則將延遲降至最小。默認模式假設的是需要處理大量本地存儲數據的長時間作業,這也吻合該項目所提出的”計算能力遷移比數據遷移成本更低”的座右銘。HDFS同樣遵循Apache許可。
官方網站:hadoop.apache.org
HBase
當數據被匯總成一套規模龐大的列表時,HBase將負責對其進行保存、搜索并自動在不同節點之間共享該列表,從而保證MapReduce作業能夠以本地方式運行。即使列表中容納的數據行數量高達數十億,該作業的本地版本仍然能夠對其進行查詢。
該代碼并不能提供其它全功能數據庫所遵循的ACID保證,但它仍然為我們帶來一部分關于本地變更的承諾。所有衍生版本的命運也都維系在一起–要么共同成功、要么一起失敗。
這套系統通常被與谷歌的BigTable相提并論,上圖所示為來自HareDB(一套專為HBase打造的圖形用戶界面客戶端)的截圖。官方網站:hbase.apache.org
Hive
將數據導入集群還只是大數據分析的第一步。接下來我們需要提取HBase中來自文件的所有數據內容,而Hive的設計初衷在于規范這一提取流程。它提供一套SQL類語言,用于深入發掘文件內容并提取出代碼所需要的數據片段。這樣一來,所有結果數據就將具備標準化格式,而Hive則將其轉化為可直接用于查詢的存儲內容。
上圖所示為Hive代碼,這部分代碼的作用在于創建一套列表、向其中添加數據并選擇信息。Hive由Apache項目負責發行。
官方網站:hive.apache.org
Sqoop
要將蘊藏在SQL數據庫中的數據寶庫發掘出來并交給Hadoop打理需要進行一系列調整與操作。Sqoop負責將飽含信息的大型列表從傳統數據庫中移動到Hive或者HBase等工具的控制之下。
Sqoop是一款命令行工具,能夠控制列表與數據存儲層之間的映射關系,并將列表轉化為可為HDFS、HBase或者Hive所接納的可配置組合。上圖所示為Apache文檔材料中的內容,可以看到Sqoop位于傳統庫與節點上的Hadoop結構之間。
Sqoop的最新穩定版本為1.4.4,但目前其2.0版本同樣進展順利。兩個版本目前都可供下載,且遵循Apache許可。
官方網站:sqoop.apache.org
Pig
一旦數據以Hadoop能夠識別的方式被保存在節點當中,有趣的分析工作將由此展開。Apache的Pig會用自己的小”豬拱”梳理數據,運行利用自有語言(名為Pig Latin)所編寫的代碼,并添加處理數據所需要的各種抽象機制。這樣的結構會一步步指引用戶走向那些易于以并行方式運行在整個集群當中的算法。
Pig還擁有一系列針對常見任務的標準化功能,能夠輕松處理諸如數據平均值計算、日期處理或者字符串差異比較等工作。如果這些還不夠用–實際上一般都不夠用–大家還可以動手編寫屬于自己的功能。上圖所示為Apache說明文檔中的一項實例,解釋了用戶如何將自己的代碼與Pig代碼結合起來、從而實現數據發掘。目前Pig的最新版本為0.12.0。
官方網站:pig.apache.org
ZooKeeper
一旦Hadoop需要在大量設備之上,集群運作的順序就顯得非常重要,特別是在其中某些設備開始簽出的情況下。
ZooKeeper在集群中強制執行一套文件系統式的層級結構,并為設備保存所有元數據,這樣我們就可以在不同設備之間進行作業同步。(上圖所示為一套簡單的二層式集群。)說明文檔展示了如何在數據處理流程中實施多種標準化技術,例如生產方-消費方隊列,從而保證數據能夠以正確的順序進行拆分、清理、篩選以及分類。當上述過程結束后,使用ZooKeeper的節點會彼此通信、并以最終生成的數據為起點開始分析工作。
官方網站:zookeeper.apache.org
NoSQL
并不是所有Hadoop集群都會使用HBase或者HDFS。某些集成了NoSQL的數據存儲體系會采取自己的獨特機制實現跨集群各節點的數據存儲任務。在這種情況下,此類體系能夠利用NoSQL數據庫的全部功能對數據進行存儲與檢索,而后利用Hadoop規劃同一集群當中的數據分析作業。
此類方案中最為常見的當數Cassandra、Riak或者MongoDB,而用戶則在積極探索將這兩種技術加以結合的最佳方式。作為MongoDB的主要支持廠商之一,10Gen公司建議用戶利用Hadoop進行離線分析,而MongoDB同時仍然能夠以實時方式統計來自Web的數據。上圖所示為連接器如何實現兩套體系之間的數據遷移。
Mahout
目前能夠幫助我們進行數據分析、分類以及篩選的算法多種多樣,而Mahout項目的設計目的正是為了將這些算法引入Hadoop集群當中。大多數標準化算法,例如K-Means、Dirichelet、并行模式以及貝葉斯分類等,都能夠讓我們的數據同Hadoop類型的映射與規約機制進行協作。
上圖所示為一套篷聚類集群化算法,它選擇點與半徑來構成圓圈、從而覆蓋整個點集合中的對應部分。這只是眾多Hadoop內置數據分析工具之一。
Mahout從屬于Apache項目并遵循Apache許可。
官方網站:mahout.apache.org
Lucene/Solr
這是目前惟一的一款用于檢索非結構化文本大型塊的工具,它同時也是Hadoop的天生合作伙伴。由于利用Java編寫,Lucene能夠輕松與Hadoop展開協作,共同創建出一套用于分布式文本管理的大型工具。Lucene負責處理檢查任務、Hadoop則負責將查詢分布到整個集群當中。
新的Lucene-Hadoop功能正迅速發展成為全新項目。以Katta為例,作為Lucene的衍生版本,它能自動對整個集群進行解析。Solr則提供集成度更高的動態集群化解決方案,能夠解析XML等標準化文件格式。上圖所示為Luke,一款用于Lucene瀏覽的圖形用戶界面。它現在還提供插件、用于對Hadoop集群進行瀏覽檢索。
Lucene及其多個衍生版本都屬于Apache項目的組成部分。
官方網站:www.apache.org
Avro
當Hadoop作業需要進行數據共享時,我們完全可以使用任何一種數據庫加以實現。但Avro是一套序列化系統,能夠利用一定模式將數據整理起來并加以理解。每一個數據包都附帶一種JSON數據結構,用于解釋數據的具體解析方式。這種數據頭會指定數據結構,從而避免我們在數據中編寫額外的標簽來對字段進行標記。如此一來,當共享數據較為規律時,其體積將比傳統格式(例如XML或者JSON)更為緊湊。
上圖所示為針對某個文件的Avro處理模式,其中分為三種不同字段:姓名、最喜歡的數字與最喜歡的顏色。Avro同樣屬于Apache項目的組成部分,其代碼擁有Java、C++以及Python等多個語言版本。
官方網站:avro.apache.org
Oozie
將一項作業拆分成多個步驟能夠讓工作變得更為簡單。如果大家將自己的項目拆分成數個Hadoop作業,那么Oozie能夠以正確的順序將其組合起來并加以執行。大家不需要插手堆棧調整,等待一個堆棧執行結束后再啟動另一個。Oozie能夠按照DAG(即有向無環圖)的規范對工作流加以管理。(環圖相當于無限循環,對于計算機來說就像一種陷阱。)只需將DAG交給Oozie,我們就可以放心出去吃飯了。
上圖所示為來自Oozie說明文檔的一幅流程圖。Oozie代碼受到Apache許可的保護。
官方網站:oozie.apache.org
GIS工具
咱們生活的世界相當廣闊,因此讓運行Hadoop的集群與地理地圖協作也是項難度很高的任務。針對Hadoop項目的GIS(即地理信息系統)工具采用多種基于Java的最佳工具,能夠透徹理解地理信息并使其與Hadoop共同運行。我們的數據庫將通過坐標而非字符串來處理地理查詢,我們的代碼則通過部署GIS工具來計算三維空間。有了GIS工具的幫助,大家面臨的大難題只剩下正確解讀”map”這個詞–它到底代表的是象征整個世界的平面圖形,還是Hadoop作業當中的第一步、也就是”映射”?
上圖所示為說明文檔中關于這些工具的不同層級。目前這些工具可在GitHub上進行下載。
下載地址:http://esri.github.io/gis-tools-for-hadoop/
Flume
數據收集這項任務絕對不比數據存儲或者數據分析更輕松。作為又一個Apache項目,Flume能夠通過分派”代理”以收集信息并將結果保存在HDFS當中。每一個代理可以收集日志文件、調用Twitter API或者提取網站數據。這些代理由事件觸發,而且可以被鏈接在一起。由此獲得的數據隨后即可供分析使用。Flume項目的代碼受Apache許可保護。
下載地址: flume.apache.org.
Hadoop上的SQL
如果大家希望在自己的大型集群當中對全部數據來一次快速的臨時性查詢,正常來說需要編寫一個新的Hadoop作業,這自然要花上一些時間。過去程序員們多次掉進過這同一個坑里,于是大家開始懷念老式SQL數據庫–利用相對簡單的SQL語言,我們就能為問題找到答案。從這一思路出發,眾多公司開發出一系列新興工具,這些方案全部指向更為快捷的應答途徑。
其中最引人注目的方案包括:HAWQ、Impalla、Drill、Stinger以及Tajo。此類方案數量眾多,足夠另開一個全新專題。
云計算
很多云平臺都在努力吸引Hadoop作業,這是因為其按分鐘計算租金的靈活業務模式非常適合Hadoop的實際需求。企業可以在短時間內動用數千臺設備進行大數據處理,而不必再像過去那樣永久性購入機架、再花上幾天或者幾周時間執行同樣的計算任務。某些企業,例如Amazon,正在通過將JAR文件引入軟件規程添加新的抽象層。一切其它設置與調度工作都可由云平臺自行完成。
上圖所示為Martin Abegglen在Flickr上發表的幾臺刀片計算機。
Spark
未來已然到來。對于某些算法,Hadoop的處理速度可能慢得令人抓狂–這是因為它通常依賴于存儲在磁盤上的數據。對于日志文件這種只需讀取一次的處理任務來說,速度慢些似乎還可以忍受;但一旦把范圍擴大到所有負載,那些需要一次又一次訪問數據的人工智能類程序可能因為速度過慢而根本不具備實用價值。
Spark代表著下一代解決思路。它與Hadoop的工作原理相似,但面向的卻是保存在內存緩存中的數據。上圖來自Apache說明文檔,其中演示的是Spark在理想狀態下與Hadoop之間的處理速度對比。Spark項目正處于Apache開發當中。
分享名稱:十八款Hadoop工具幫你馴服大數據
當前地址:http://m.newbst.com/article42/chgphc.html
成都網站建設公司_創新互聯,為您提供網站收錄、網站內鏈、企業網站制作、網站排名、定制網站、企業建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯