map task與reduce task的關系 如何理解MapReduce?
如何理解MapReduce?我可不可以簡單將MapReduce解釋為:Map共同負責清點交接任務Reduce負責回收能完成的任務很莫大榮幸來一起討論這個問題。MapReduce可是在當下日漸沒落,目前
如何理解MapReduce?
我可不可以簡單將MapReduce解釋為:Map共同負責清點交接任務Reduce負責回收能完成的任務
很莫大榮幸來一起討論這個問題。
MapReduce可是在當下日漸沒落,目前主要注意靠hive來發(fā)揮余熱,不過其充當曾經(jīng)的分布式計算框架的鼻祖,其內(nèi)部的機制依舊值的我們?nèi)ピ趺磳W習和借鑒吸收。
題主的理解,map才是任務的分發(fā)、reduce回收任務,我從一定程度上是贊同的。可是任務的處理階段被忽視掉了。
我如果說map階段是側(cè)重點不同于任務的分發(fā)、reduce階段側(cè)重于于數(shù)據(jù)的處理,以及數(shù)據(jù)的回收。
不過絕不可以選擇性的遺忘的也有shuffle階段,在shuffle階段成功了多次的排序、分區(qū)、流出。
連接上了map和reduce階段的處理。
下面用通俗的語言簡單點描述下MapReduce的整個過程。
1.是需要明確的配置確認的分片大小,將待全面處理的數(shù)據(jù)文件接受分片,每一個分片都分開來分配一個mapTask(也就是map的一個線程)來一次性處理。
線程將待全面處理4行數(shù)據(jù),都推導成key-value的格式,在旁邊解析,在旁邊描寫到內(nèi)存中。
3.在內(nèi)存中進行十分有利的shuffle過程,
將map描寫到內(nèi)存中的數(shù)據(jù),明確的同一的key并且主分區(qū)排序(該過程會分布特點接受三次),其實可以不可以自定義規(guī)則,判斷哪些key可看成是是不同的
的數(shù)量由分區(qū)數(shù)量,也可以算是key的數(shù)量來做出決定,每個task如何處理一個分區(qū)的數(shù)據(jù)。
5.最后每個reducetask將本分區(qū)處理后的結(jié)果數(shù)據(jù)寫一段,到了此時果真MapReduce程序能夠完成。
關鍵點整個過程的關鍵點
1.該如何定義,定義文件的分片,改變maptask的數(shù)量,也就做出決定了map階段的效率,尤其是對小文件的處理
2.自定義設置分區(qū),也就是自定義設置key不同的規(guī)則,由業(yè)務的邏輯改變
3.對完全相同key的數(shù)據(jù)的處理,也就是reduce階段的處理邏輯,更是整個程序的核心處理。
上列應該是我對這MapReduce技術(shù)一點拙見,多謝了大家通過評論指教、了解、你點贊,給我以動力支持。
學習是人充實快樂,祝大家就任CTO、迎娶白富美?。?!O(∩_∩)O
傳統(tǒng)的數(shù)據(jù)存儲工具有哪些?
1.Hadoop分布式存儲與計算
Hadoop利用了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。Hadoop的框架最核心的設計是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)需要提供了存儲,MapReduce則為海量的數(shù)據(jù)提供給了換算,所以,是需要重點完全掌握,外,還必須掌握Hadoop集群、Hadoop集群管理、YARN在內(nèi)Hadoop高級管理等具體技術(shù)與操作!
Hive是基于條件Hadoop的一個數(shù)據(jù)倉庫工具,這個可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供給簡單點SQL查詢功能,可以將SQL語句轉(zhuǎn)換為MapReduce任務并且運行。比用Java代碼編寫MapReduce來說,Hive的優(yōu)勢明顯:飛快開發(fā),人員成本低,可擴展性(自由存儲集群規(guī)模),延展性(支持什么可以自定義函數(shù))。極其合適數(shù)據(jù)倉庫的統(tǒng)計分析。相對于Hive需掌握到其安裝、應用及低級操作等。
3.ZooKeeper
ZooKeeper是一個開源的分布式協(xié)調(diào)服務,是Hadoop和HBase的有用組件,是一個為分布式應用方法需要提供一致的軟件,提供的功能和:配置維護、域名服務、分布式同步、組件服務等,在大數(shù)據(jù)開發(fā)中要完全掌握ZooKeeper的常用命令及功能的實現(xiàn)程序方法。
4.HBase
HBase是一個分布式的、面向列的閉源數(shù)據(jù)庫,它相比于象的關系數(shù)據(jù)庫,更適合我于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫,是一個高可靠性、集高性能、走向列、可伸縮的分布式存儲系統(tǒng),大數(shù)據(jù)開發(fā)需掌握到HBase基礎知識、應用、整體架構(gòu)和初級用法等。
Redis是一個Key-Value存儲系統(tǒng),其會出現(xiàn)不大程度補償了Memcached這類Key/Value存儲的不足,在部分場合也可以對關系數(shù)據(jù)庫能起很好的補充作用,它提供了Java,C/C,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,在用很方便啊,大數(shù)據(jù)開發(fā)需完全掌握Redis的安裝、配置及查找使用方法。
6.Kafka
Kafka是一種高吞吐量的分布式先發(fā)布訂閱消息系統(tǒng),其在大數(shù)據(jù)開發(fā)應用上的目的是是從Hadoop的并行程序加載機制來統(tǒng)一線上和自動更新的消息處理,也是就是為了集群來能提供動態(tài)實時的消息。大數(shù)據(jù)開發(fā)需掌握到Kafka架構(gòu)原理及各組件的作用和使用方法及去相關功能的實現(xiàn)。
Neo4j是一個集高性能的,NoSQL圖形數(shù)據(jù)庫,具有去處理百萬和T級節(jié)點和邊的大尺度去處理網(wǎng)絡分析能力。它是一個嵌入式的、設計和實現(xiàn)磁盤的、必須具備已經(jīng)的事務特性的Java不持久化引擎,不過它將結(jié)構(gòu)化數(shù)據(jù)存儲在網(wǎng)絡(從數(shù)學角度叫做什么圖)上而也不是表中。Neo4j因其嵌入式、低性能、輕量級等優(yōu)勢,越來越大是被關注。
Cassandra是一個混合型的非關系的數(shù)據(jù)庫,類似Google的BigTable,其主要功能比Dynamo(分布式的Key-Value存儲系統(tǒng))更豐富。這種NoSQL數(shù)據(jù)庫最初的由Facebook開發(fā),辦準生證需要什么證件被1500多家企業(yè)組織建議使用,和蘋果、歐洲原子核研究組織(CERN)、康卡斯特、電子港灣、GitHub、GoDaddy、Hulu、Instagram、Intuit、Netflix、Reddit等。是一種流行的分布式結(jié)構(gòu)化數(shù)據(jù)存儲方案。
SSM框架是由Spring、Spring MVC、MyBatis三個開源框架整合而成,常作為數(shù)據(jù)源較很簡單Web項目的框架。大數(shù)據(jù)開發(fā)需四個掌握Spring、Spring MVC、MyBatis三種框架的同時,再使用SSM接受整合操作。