當前位置:首頁 » 操作系統 » tez演算法

tez演算法

發布時間: 2022-05-02 05:05:38

① Hadoop與Spark的關系,Spark集群必須依賴Hadoop嗎

必須在hadoop集群上,它的數據來源是HDFS,本質上是yarn上的一個計算框架,像MR一樣。

Hadoop是基礎,其中的HDFS提供文件存儲,Yarn進行資源管理。可以運行MapRece、Spark、Tez等計算框架。

與Hadoop相比,Spark真正的優勢在於速度,Spark的大部分操作都是在內存中,而Hadoop的MapRece系統會在每次操作之後將所有數據寫回到物理存儲介質上,這是為了確保在出現問題時能夠完全恢復,但Spark的彈性分布式數據存儲也能實現這一點。

(1)tez演算法擴展閱讀:

Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和Scala能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。

盡管創建 Spark 是為了支持分布式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中並行運行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。

② Spark-Hadoop,Hive,Spark 之間是什麼關系

大數據本身是個很寬泛的概念,Hadoop生態圈(或者泛生態圈)基本上都是為了處理超過單機尺度的數據處理而誕生的。你可以把它比作一個廚房所以需要的各種工具。鍋碗瓢盆,各有各的用處,互相之間又有重合。你可以用湯鍋直接當碗吃飯喝湯,你可以用小刀或者刨子去皮。但是每個工具有自己的特性,雖然奇怪的組合也能工作,但是未必是最佳選擇。
大數據,首先你要能存的下大數據
傳統的文件系統是單機的,不能橫跨不同的機器。HDFS(Hadoop Distributed FileSystem)的設計本質上是為了大量的數據能橫跨成百上千台機器,但是你看到的是一個文件系統而不是很多文件系統。比如你說我要獲取/hdfs/tmp/file1的數據,你引用的是一個文件路徑,但是實際的數據存放在很多不同的機器上。你作為用戶,不需要知道這些,就好比在單機上你不關心文件分散在什麼磁軌什麼扇區一樣。HDFS為你管理這些數據。
存的下數據之後,你就開始考慮怎麼處理數據。雖然HDFS可以為你整體管理不同機器上的數據,但是這些數據太大了。一台機器讀取成T上P的數據(很大的數據哦,比如整個東京熱有史以來所有高清電影的大小甚至更大),一台機器慢慢跑也許需要好幾天甚至好幾周。對於很多公司來說,單機處理是不可忍受的,比如微博要更新24小時熱博,它必須在24小時之內跑完這些處理。那麼我如果要用很多台機器處理,我就面臨了如何分配工作,如果一台機器掛了如何重新啟動相應的任務,機器之間如何互相通信交換數據以完成復雜的計算等等。這就是MapRece
/ Tez / Spark的功能。MapRece是第一代計算引擎,Tez和Spark是第二代。MapRece的設計,採用了很簡化的計算模型,只有Map和Rece兩個計算過程(中間用Shuffle串聯),用這個模型,已經可以處理大數據領域很大一部分問題了。
那什麼是Map,什麼是Rece?
考慮如果你要統計一個巨大的文本文件存儲在類似HDFS上,你想要知道這個文本里各個詞的出現頻率。你啟動了一個MapRece程序。Map階段,幾百台機器同時讀取這個文件的各個部分,分別把各自讀到的部分分別統計出詞頻,產生類似(hello, 12100次),(world,15214次)等等這樣的Pair(我這里把Map和Combine放在一起說以便簡化);這幾百台機器各自都產生了如上的集合,然後又有幾百台機器啟動Rece處理。Recer機器A將從Mapper機器收到所有以A開頭的統計結果,機器B將收到B開頭的詞彙統計結果(當然實際上不會真的以字母開頭做依據,而是用函數產生Hash值以避免數據串化。因為類似X開頭的詞肯定比其他要少得多,而你不希望數據處理各個機器的工作量相差懸殊)。然後這些Recer將再次匯總,(hello,12100)+(hello,12311)+(hello,345881)=
(hello,370292)。每個Recer都如上處理,你就得到了整個文件的詞頻結果。
這看似是個很簡單的模型,但很多演算法都可以用這個模型描述了。
Map+Rece的簡單模型很黃很暴力,雖然好用,但是很笨重。第二代的Tez和Spark除了內存Cache之類的新feature,本質上來說,是讓Map/Rece模型更通用,讓Map和Rece之間的界限更模糊,數據交換更靈活,更少的磁碟讀寫,以便更方便地描述復雜演算法,取得更高的吞吐量。
有了MapRece,Tez和Spark之後,程序員發現,MapRece的程序寫起來真麻煩。他們希望簡化這個過程。這就好比你有了匯編語言,雖然你幾乎什麼都能幹了,但是你還是覺得繁瑣。你希望有個更高層更抽象的語言層來描述演算法和數據處理流程。於是就有了Pig和Hive。Pig是接近腳本方式去描述MapRece,Hive則用的是sql。它們把腳本和SQL語言翻譯成MapRece程序,丟給計算引擎去計算,而你就從繁瑣的MapRece程序中解脫出來,用更簡單更直觀的語言去寫程序了。
有了Hive之後,人們發現SQL對比java有巨大的優勢。一個是它太容易寫了。剛才詞頻的東西,用SQL描述就只有一兩行,MapRece寫起來大約要幾十上百行。而更重要的是,非計算機背景的用戶終於感受到了愛:我也會寫SQL!於是數據分析人員終於從乞求工程師幫忙的窘境解脫出來,工程師也從寫奇怪的一次性的處理程序中解脫出來。大家都開心了。Hive逐漸成長成了大數據倉庫的核心組件。甚至很多公司的流水線作業集完全是用SQL描述,因為易寫易改,一看就懂,容易維護。
自從數據分析人員開始用Hive分析數據之後,它們發現,Hive在MapRece上跑,真雞巴慢!流水線作業集也許沒啥關系,比如24小時更新的推薦,反正24小時內跑完就算了。但是數據分析,人們總是希望能跑更快一些。比如我希望看過去一個小時內多少人在一些特定頁面駐足,分別停留了多久,對於一個巨型網站海量數據下,這個處理過程也許要花幾十分鍾甚至很多小時。而這個分析也許只是你萬里長征的第一步,你還有很多其他的要分析。你無法忍受等待的折磨,只能跟帥帥的工程師蟈蟈說,快,快,再快一點!
於是Impala,Presto,Drill誕生了(當然還有無數非著名的交互SQL引擎,就不一一列舉了)。三個系統的核心理念是,MapRece引擎太慢,因為它太通用,太強壯,太保守,我們SQL需要更輕量,更激進地獲取資源,更專門地對SQL做優化,而且不需要那麼多容錯性保證(因為系統出錯了大不了重新啟動任務,如果整個處理時間更短的話,比如幾分鍾之內)。這些系統讓用戶更快速地處理SQL任務,犧牲了通用性穩定性等特性。如果說MapRece是大砍刀,砍啥都不怕,那上面三個就是剔骨刀,靈巧鋒利,但是不能搞太大太硬的東西。
這些系統,說實話,一直沒有達到人們期望的流行度。因為這時候又兩個異類被造出來了。他們是Hive on Tez / Spark和SparkSQL。它們的設計理念是,MapRece慢,但是如果我用新一代通用計算引擎Tez或者Spark來跑SQL,那我就能跑的更快。而且用戶不需要維護兩套系統。這就好比如果你廚房小,人又懶,對吃的精細程度要求有限,那你可以買個電飯煲,能蒸能煲能燒,省了好多廚具。
上面的介紹,基本就是一個數據倉庫的構架了。底層HDFS,上面跑MapRece/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。這解決了中低速數據處理的要求。
那如果我要更高速的處理呢?
如果我是一個類似微博的公司,我希望顯示不是24小時熱博,我想看一個不斷變化的熱播榜,更新延遲在一分鍾之內,上面的手段都將無法勝任。於是又一種計算模型被開發出來,這就是Streaming(流)計算。Storm是最流行的流計算平台。流計算的思路是,如果要達到更實時的更新,我何不在數據流進來的時候就處理了?比如還是詞頻統計的例子,我的數據流是一個一個的詞,我就讓他們一邊流過我就一邊開始統計了。流計算很牛逼,基本無延遲,但是它的短處是,不靈活,你想要統計的東西必須預先知道,畢竟數據流過就沒了,你沒算的東西就無法補算了。因此它是個很好的東西,但是無法替代上面數據倉庫和批處理系統。
還有一個有些獨立的模塊是KV Store,比如Cassandra,HBase,MongoDB以及很多很多很多很多其他的(多到無法想像)。所以KV Store就是說,我有一堆鍵值,我能很快速滴獲取與這個Key綁定的數據。比如我用身份證號,能取到你的身份數據。這個動作用MapRece也能完成,但是很可能要掃描整個數據集。而KV
Store專用來處理這個操作,所有存和取都專門為此優化了。從幾個P的數據中查找一個身份證號,也許只要零點幾秒。這讓大數據公司的一些專門操作被大大優化了。比如我網頁上有個根據訂單號查找訂單內容的頁面,而整個網站的訂單數量無法單機資料庫存儲,我就會考慮用KV Store來存。KV Store的理念是,基本無法處理復雜的計算,大多沒法JOIN,也許沒法聚合,沒有強一致性保證(不同數據分布在不同機器上,你每次讀取也許會讀到不同的結果,也無法處理類似銀行轉賬那樣的強一致性要求的操作)。但是丫就是快。極快。
每個不同的KV Store設計都有不同取捨,有些更快,有些容量更高,有些可以支持更復雜的操作。必有一款適合你。
除此之外,還有一些更特製的系統/組件,比如Mahout是分布式機器學習庫,Protobuf是數據交換的編碼和庫,ZooKeeper是高一致性的分布存取協同系統,等等。
有了這么多亂七八糟的工具,都在同一個集群上運轉,大家需要互相尊重有序工作。所以另外一個重要組件是,調度系統。現在最流行的是Yarn。你可以把他看作中央管理,好比你媽在廚房監工,哎,你妹妹切菜切完了,你可以把刀拿去殺雞了。只要大家都服從你媽分配,那大家都能愉快滴燒菜。
你可以認為,大數據生態圈就是一個廚房工具生態圈。為了做不同的菜,中國菜,日本菜,法國菜,你需要各種不同的工具。而且客人的需求正在復雜化,你的廚具不斷被發明,也沒有一個萬用的廚具可以處理所有情況,因此它會變的越來越復雜。

③ 大數據專業都需要學習哪些軟體啊

一、Phoenix
簡介:這是一個Java中間層,可以讓開發者在Apache HBase上執行SQL查詢。Phoenix完全使用Java編寫,代碼位於GitHub上,並且提供了一個客戶端可嵌入的JDBC驅動。
Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase scan,並編排執行以生成標準的JDBC結果集。直接使用HBase API、協同處理器與自定義過濾器,對於簡單查詢來說,其性能量級是毫秒,對於百萬級別的行數來說,其性能量級是秒。
Phoenix最值得關注的一些特性有:
❶嵌入式的JDBC驅動,實現了大部分的java.sql介面,包括元數據API❷可以通過多部行鍵或是鍵/值單元對列進行建模❸完善的查詢支持,可以使用多個謂詞以及優化的掃描鍵❹DDL支持:通過CREATE TABLE、DROP TABLE及ALTER TABLE來添加/刪除列❺版本化的模式倉庫:當寫入數據時,快照查詢會使用恰當的模式❻DML支持:用於逐行插入的UPSERT VALUES、用於相同或不同表之間大量數據傳輸的UPSERT ❼SELECT、用於刪除行的DELETE❽通過客戶端的批處理實現的有限的事務支持❾單表——還沒有連接,同時二級索引也在開發當中➓緊跟ANSI SQL標准
二、Stinger
簡介:原叫Tez,下一代Hive,Hortonworks主導開發,運行在YARN上的DAG計算框架。
某些測試下,Stinger能提升10倍左右的性能,同時會讓Hive支持更多的SQL,其主要優點包括:
❶讓用戶在Hadoop獲得更多的查詢匹配。其中包括類似OVER的字句分析功能,支持WHERE查詢,讓Hive的樣式系統更符合SQL模型。
❷優化了Hive請求執行計劃,優化後請求時間減少90%。改動了Hive執行引擎,增加單Hive任務的被秒處理記錄數。
❸在Hive社區中引入了新的列式文件格式(如ORC文件),提供一種更現代、高效和高性能的方式來儲存Hive數據。
❹引入了新的運行時框架——Tez,旨在消除Hive的延時和吞吐量限制。Tez通過消除不必要的task、障礙同步和對HDFS的讀寫作業來優化Hive job。這將優化Hadoop內部的執行鏈,徹底加速Hive負載處理。
三、Presto
簡介:Facebook開源的數據查詢引擎Presto ,可對250PB以上的數據進行快速地互動式分析。該項目始於 2012 年秋季開始開發,目前該項目已經在超過 1000 名 Facebook 雇員中使用,運行超過 30000 個查詢,每日數據在 1PB 級別。Facebook 稱 Presto 的性能比諸如 Hive 和 Map*Rece 要好上 10 倍有多。
Presto 當前支持 ANSI SQL 的大多數特效,包括聯合查詢、左右聯接、子查詢以及一些聚合和計算函數;支持近似截然不同的計數(DISTINCT COUNT)等。

④ hadoop maprece 如何才能實現遞歸調用如Tarjan演算法

maprece中沒有遞歸一說吧,想那些需要遞歸實現的演算法,如果用原生maprece,只能是job循環執行,不過使用Tez貌似會好些

⑤ 求大數據分析技術

目前,大數據領域每年都會涌現出大量新的技術,成為大數據獲取、存儲、處理分析或可視化的有效手段。大數據技術能夠將大規模數據中隱藏的信息和知識挖掘出來,為人類社會經濟活動提供依據,提高各個領域的運行效率,甚至整個社會經濟的集約化程度。

01 大數據生命周期

⑥ 大數據與Hadoop之間是什麼關系

大數據是一系列技術的統稱,經過多年的發展,大數據已經形成了從數據採集、整理、傳輸、存儲、安全、分析、呈現和應用等一系列環節,這些環節涉及到諸多大數據工作崗位,這些工作崗位與物聯網、雲計算也都有密切的聯系。

大數據技術的三個重點:Hadoop、spark、storm。Hadoop本身就是大數據平台研發人員的工作成果,Hadoop是目前常見的大數據支撐性平台,Hadoop平台提供了分布式存儲(HDFS)、分布式計算(MapRece)、任務調度(YARN)、對象存儲(Ozone)和組件支撐服務(Common)。

⑦ 大數據運算的三種引擎是什麼有什麼區別

現在流行的開源引擎可不止三個,先羅列5個給你:
1)Hive,披著SQL外衣的Map-Rece。Hive是為方便用戶使用Map-Rece而在外面封裝了一層SQL,由於Hive採用了SQL,它的問題域比Map-Rece更窄,因為很多問題,SQL表達不出來,比如一些數據挖掘演算法,推薦演算法、圖像識別演算法等,這些仍只能通過編寫Map-Rece完成。
2) Impala:Google Dremel的開源實現(Apache Drill類似),因為互動式實時計算需求,Cloudera推出了Impala系統,該系統適用於互動式實時處理場景,要求最後產生的數據量一定要少。
3)Shark/Spark:為了提高Map-Rece的計算效率,Berkeley的AMPLab實驗室開發了Spark,Spark可看做基於內存的Map-Rece實現,此外,伯克利還在Spark基礎上封裝了一層SQL,產生了一個新的類似Hive的系統Shark。
4) Stinger Initiative(Tez optimized Hive):Hortonworks開源了一個DAG計算框架Tez,Tez可以理解為Google Pregel的開源實現,該框架可以像Map-Rece一樣,可以用來設計DAG應用程序,但需要注意的是,Tez只能運行在YARN上。Tez的一個重要應用是優化Hive和PIG這種典型的DAG應用場景,它通過減少數據讀寫IO,優化DAG流程使得Hive速度提供了很多倍。
5)Presto:FaceBook於2013年11月份開源了Presto,一個分布式SQL查詢引擎,它被設計為用來專門進行高速、實時的數據分析。它支持標準的ANSI SQL,包括復雜查詢、聚合(aggregation)、連接(join)和窗口函數(window functions)。Presto設計了一個簡單的數據存儲的抽象層,來滿足在不同數據存儲系統(包括HBase、HDFS、Scribe等)之上都可以使用SQL進行查詢。

⑧ hivetez引擎和mr引擎的區別

MapRece: 是一種離線計算框架,將一個演算法抽象成Map和Rece兩個階段進行處理,每個階段都是用鍵值對(key/value)作為輸入和輸出,非常適合數據密集型計算。Map/Rece通過把對數據集的大規模操作分發給網路上的每個節點實現可靠性;每個節點會周期性地返回它所完成的工作和最新的狀態。如果一個節點在設定的時間內沒有進行心跳上報,主節點(可以理解為主伺服器)就會認為這個節點down掉了,此時就會把分配給這個節點的數據發到別的節點上運算,這樣可以保證系統的高可用性和穩定性。因此它是一個很好的計算框架。

TEZ:

是基於Hadoop YARN之上的DAG(有向無環圖,Directed Acyclic Graph)計算框架。核心思想是將Map和Rece兩個操作進一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Rece被拆分成Input、Shuffle、Sort、Merge、Processor和Output等。這樣,這些分解後的元操作可以任意靈活組合,產生新的操作,這些操作經過一些控製程序組裝後,可形成一個大的DAG作業,從而可以減少Map/Rece之間的文件存儲,同時合理組合其子過程,也可以減少任務的運行時間。

兩者比較:

MR計算,會對磁碟進行多次的讀寫操作,這樣啟動多輪job的代價略有些大,不僅佔用資源,更耗費大量的時間,

而採用TEZ計算框架,就會生成一個簡潔的DAG作業,運算元跑完不退出,下輪繼續使用上一輪的運算元,這樣大大減少磁碟IO操作,從而計算速度更快。 TEZ比MR至少快5倍

相關資料鏈接:網頁鏈接

⑨ 數據分析師如何選擇合適的數據分析工具

其實題主需要搞清楚以下幾個問題,搞清楚了,其實問題的答案也就有了:
1、是從個人學習成長的角度想搭建平台自學?還是現在的公司需要大數據技術進行分析?——如果是從個人學習成長的角度,建議直接按照Hadoop或者Spark的官網教程安裝即可,建議看官網(英文),在大數據技術領域,英語的掌握是非常重要的,因為涉及到組件選型、日後的安裝、部署、運維,所有的任務運行信息、報錯信息都是英文的,包括遇到問題的解答,所以還是非常重要的。如果是公司需要進行大數據分析,那麼還要研究以下幾個問題:為什麼需要搭建大數據分析平台?要解決什麼業務問題?需要什麼樣的分析?數據量有多少?是否有實時分析的需求?是否有BI報表的需求?——這里舉一個典型的場景:公司之前採用Oracle或MySQL搭建的業務資料庫,而且有簡單的數據分析,或者可能采購了BI系統,就是直接用業務系統資料庫進行支持的,現在隨著數據量越來越大,那麼就需要採用大數據技術進行擴容。
搞清楚需求之後,按照以下的步驟進行:
1、整體方案設計;整體方案設計時需要考慮的因素:數據量有多少:幾百GB?幾十TB?數據存儲在哪裡:存儲在MySQL中?Oracle中?或其他資料庫中?數據如何從現在的存儲系統進入到大數據平台中?如何將結果數據寫出到其他存儲系統中?分析主題是什麼:只有幾個簡單指標?還是說有很多統計指標,需要專門的人員去梳理,分組,並進行產品設計;是否需要搭建整體數倉?是否需要BI報表:業務人員有無操作BI的能力,或團隊組成比較簡單,不需要前後端人員投入,使用BI比較方便;是否需要實時計算?
2、組件選型;架構設計完成後就需要組件選型了,這時候最好是比較資深的架構師參與設計,選型包括:離線計算引擎:Hadoop、Spark、Tez……實時計算引擎:Storm、Flink、Samza、Spark
Streaming……BI軟體:Tableau、QlikView、帆軟……
3、安裝部署;選型完成後,就可以進行安裝部署了,這部分其實是最簡單的,直接按照每個組件的部署要求安裝即可。
4、另一種選擇:採用商用軟體如果是企業需要搭建大數據平台,那麼還有一種選擇是直接採用商用的數據平台。市面上有很多成熟的商用大數據平台,Cloudera、星環、華為、亞信等等,都有對應的產品線,像我們袋鼠雲就有一款非常優秀的大數據平台產品:數棧。主要有以下幾個特點:
1.一站式。一站式數據開發產品體系,滿足企業建設數據中台過程中的多樣復雜需求。
2.兼容性強。支持對接多種計算引擎,使更多企業「半路上車」。
3.開箱即用。基於Web的圖形化操作界面,開箱即用,快速上手。
4.性價比高。滿足中小企業數據中台建設需求,降低企業投入成本。
可以了解下。

熱點內容
檢查電腦與伺服器的連通性和路徑 發布:2024-10-06 01:37:38 瀏覽:431
宋春麗訪問 發布:2024-10-06 01:34:23 瀏覽:676
美國往事ftp 發布:2024-10-06 01:29:03 瀏覽:771
dtu編程 發布:2024-10-06 01:23:30 瀏覽:594
照片視頻加密 發布:2024-10-05 23:58:58 瀏覽:479
北京java培訓班多少錢 發布:2024-10-05 23:49:03 瀏覽:814
subversion源碼安裝 發布:2024-10-05 23:48:17 瀏覽:122
ipad文件怎麼解壓縮 發布:2024-10-05 23:06:28 瀏覽:166
存儲伺服器主控晶元 發布:2024-10-05 23:04:33 瀏覽:573
php學徒 發布:2024-10-05 23:04:30 瀏覽:443