日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
大數(shù)據(jù)時代,hadoop數(shù)據(jù)庫模型助力數(shù)據(jù)分析與挖掘(hadoop數(shù)據(jù)庫模型)

隨著信息化的不斷發(fā)展,互聯(lián)網(wǎng)應用已經(jīng)覆蓋到各個領域,無論是企業(yè)還是,在面對這些數(shù)據(jù)洪流時,都必須采用科技手段來進行有效的數(shù)據(jù)處理。而在這樣的時代背景下,大數(shù)據(jù)已經(jīng)成為了一種非常重要的信息工具,很多企業(yè)和機構(gòu)都在積極嘗試采用大數(shù)據(jù)技術來進行數(shù)據(jù)的收集、分析和處理。hadoop數(shù)據(jù)庫模型,作為一種重要的大數(shù)據(jù)解決方案,不僅可以協(xié)助用戶在數(shù)據(jù)領域進行快速而準確的分析,同時也可以幫助用戶進行數(shù)據(jù)挖掘和預測。本文將從以下幾點分析Hadoop數(shù)據(jù)庫模型在大數(shù)據(jù)分析與挖掘方面的應用。

創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、靈璧網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、HTML5、成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為靈璧等各大城市提供網(wǎng)站開發(fā)制作服務。

1. Hadoop數(shù)據(jù)庫模型的基本概念

在大數(shù)據(jù)領域,Hadoop是一個非常著名的框架,它結(jié)合了多種技術來幫助用戶處理海量的數(shù)據(jù)。其中Hadoop數(shù)據(jù)庫模型就是Hadoop框架中的一個重要組件,它本質(zhì)上是一種分布式的數(shù)據(jù)存儲和處理系統(tǒng),可以底層支撐大型分布式數(shù)據(jù)分析和處理應用。Hadoop數(shù)據(jù)庫模型主要由兩部分組成:HDFS(Hadoop分布式文件系統(tǒng))和MapReduce。其中,HDFS是一種高可靠、高擴展、高可用的分布式文件系統(tǒng),可以支持PB級別的數(shù)據(jù)存儲。而MapReduce則是一種數(shù)據(jù)處理模式,可以通過將大數(shù)據(jù)分為很多小數(shù)據(jù)塊,再采用分布式的任務處理方式,從而在短時間內(nèi)完成數(shù)據(jù)處理任務。

2. Hadoop數(shù)據(jù)庫模型的優(yōu)點

在大數(shù)據(jù)領域,Hadoop數(shù)據(jù)庫模型有著非常明顯的優(yōu)點。它可以方便地存儲和處理PB級別的數(shù)據(jù),在不斷增長的數(shù)據(jù)存儲需求下,Hadoop的橫向擴展方式可以輕松滿足數(shù)據(jù)存儲需求。同時,Hadoop數(shù)據(jù)庫模型的數(shù)據(jù)處理速度非???,通過分布式的計算和任務分解,可以在較短時間內(nèi)完成數(shù)據(jù)分析和處理任務。此外,Hadoop數(shù)據(jù)庫模型還支持多種數(shù)據(jù)格式,包括文本格式、序列化格式、數(shù)據(jù)庫格式等,因此可以在各種不同的數(shù)據(jù)源上進行處理。

3. Hadoop數(shù)據(jù)庫模型的應用場景

在實際應用中,Hadoop數(shù)據(jù)庫模型可以應用于多種大數(shù)據(jù)場景。比如,在企業(yè)內(nèi)部可以通過Hadoop數(shù)據(jù)庫模型進行大量數(shù)據(jù)的存儲和處理,這些數(shù)據(jù)可以來自于企業(yè)內(nèi)部的各種業(yè)務系統(tǒng),如營銷、客戶、供應鏈等,同時可以與外部的數(shù)據(jù)源結(jié)合,如社交媒體數(shù)據(jù)、互聯(lián)網(wǎng)數(shù)據(jù)等。通過對這些數(shù)據(jù)進行分析和挖掘,可以幫助企業(yè)更好地了解市場和客戶需求,同時還可以建立更加準確和有效的營銷策略。在領域,Hadoop數(shù)據(jù)庫模型也應用廣泛,在大型項目中,通過Hadoop數(shù)據(jù)庫模型可以輕松處理和存儲來自各種不同的數(shù)據(jù)源的數(shù)據(jù),如公共衛(wèi)生數(shù)據(jù)、金融數(shù)據(jù)、民生數(shù)據(jù)等,從而幫助提高效率、優(yōu)化政策和服務。

4. Hadoop數(shù)據(jù)庫模型的未來發(fā)展

隨著大數(shù)據(jù)技術的不斷改進,Hadoop數(shù)據(jù)庫模型在未來還將發(fā)揮更加重要的作用。隨著Hadoop技術的不斷改進和升級,Hadoop數(shù)據(jù)庫模型的性能和可靠性將繼續(xù)得到提高,從而更好地適應未來大數(shù)據(jù)應用的需求。隨著云計算和技術的普及,Hadoop數(shù)據(jù)庫模型也將被更多的企業(yè)和機構(gòu)所使用,通過大數(shù)據(jù)技術的支持,企業(yè)和機構(gòu)可以更好地進行數(shù)據(jù)分析和挖掘,從而更好地適應市場的需求。

Hadoop數(shù)據(jù)庫模型是一種非常重要的大數(shù)據(jù)解決方案。它通過分布式計算和任務分解的方式,可以輕松地進行數(shù)據(jù)處理和分析。在未來,隨著大數(shù)據(jù)技術的不斷發(fā)展,Hadoop數(shù)據(jù)庫模型還將扮演更加重要的角色。

成都網(wǎng)站建設公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設,提供企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,響應式網(wǎng)站制作,設計師量身打造品牌風格,熱線:028-86922220

MapReduce和hadoop什么關系和區(qū)別??

hadoop是google的云計算系統(tǒng)的開源實現(xiàn),谷歌集群系統(tǒng)主要包括三個部分:分布式文件系統(tǒng)GFS,分布式并行鬧洞計算模型map/慎虛reduce,以及分布式數(shù)據(jù)庫Bigtable,hadoop也實現(xiàn)了這三個,GFS對應HDFS,hadoop的map/reduce對應谷歌的map/reduce模型,寬彎燃Hbase對應Bigtable。

也就是map/reduce是谷歌提出的一種云計算模型,hadoop用java開源實現(xiàn)了

可以只用一行代碼來運行MapReduce作業(yè):JobClient.runJon(conf),Job作業(yè)運行時參與的四個實體:

     1.JobClient 寫代碼,配置作業(yè),提交作業(yè)。

     2.JobTracker:初始化作業(yè),分配作業(yè),協(xié)調(diào)作業(yè)運行。這是一個java程序,主類是JobTracker。

     3.TaskTracker:運行作業(yè)劃分后的任務,即分配數(shù)據(jù)分配上執(zhí)行Map或Reduce任務。

     4.HDFS:保存作業(yè)數(shù)據(jù)、配置信息等,保存作業(yè)結(jié)果。

Map/Reduce 作業(yè)總體執(zhí)行流程:

     代碼編寫 —-> 作業(yè)配置  —->  作業(yè)提交 —-> Map任務分配和執(zhí)行 —-> 處理中間結(jié)果 —->  Reduce任務分配與執(zhí)行 —->  輸出結(jié)果

而對于每個作業(yè)的執(zhí)行,又包含:

     輸入準備 —-> 任務執(zhí)行 —-> 輸出結(jié)果

作業(yè)提交JobClient:

     JobClient的runJob方法產(chǎn)生一個Jobclient實例并調(diào)用其submitJob方法,然后runJob開始循環(huán)嗎,并在循環(huán)中調(diào)用getTaskCompetionEvents方法,獲得TaskCompletionEvent實例,每秒輪詢作業(yè)進度(后面有介紹進度和狀態(tài)更新),把進度寫到控制臺,作業(yè)完成后顯示作業(yè)計數(shù)器,若失敗,則把錯誤記錄到控制臺。

     submitJob方法作業(yè)提交的過程:

     1.向JobTracker請求一個新的JobId。

     2.檢查作業(yè)相關路徑,如果路徑不正確就會返回錯誤。

     3.計算作業(yè)輸入分片及其劃分信息。

     4.將作業(yè)運行需要的資源(jar文件、配置文件等)復制到Shared HDFS,并

復制多個副本(參數(shù)控制,默認值為10)供tasktracker訪問,也會將計算的分片復制到HDFS。

     5.調(diào)用JobTracker對象的submitJob()方法來真正提交作業(yè),告訴JobTracker作業(yè)準備執(zhí)行。

作業(yè)的初始化JobTracker:

     JobTracker收到submitJob方法調(diào)用后,會把調(diào)用放入到一個內(nèi)部隊列,由作業(yè)調(diào)度器(Job scheduler)進行調(diào)度并對其初始化。Job初始化即創(chuàng)建一個作業(yè)對象。

     當作業(yè)被調(diào)度后,JobTracker會創(chuàng)建一個代表這個作業(yè)的JobInProgress對象,并將任務和記錄信息封裝悔昌碼在這個對象中,以便跟蹤任務狀態(tài)和進程。

     初始化過程就是JobInProgress對象的initTasks方法進行初始化的。

     初始化步驟:

     碧哪     1.從HDFS中讀取作業(yè)對應的job.split信息,為后面的初始化做好準備。

.創(chuàng)建并初始化map和reduce任務。根據(jù)數(shù)據(jù)分片信息中的個數(shù)確定map task的個數(shù),然后為每個map task生成一個TaskInProgress對象來處理數(shù)據(jù)分片,先將其放入nonRunningMapCache,以便JobTracker分配任務的時候使用。接下來根據(jù)JobConf中的mapred.reduce.tasks屬性利用setNumReduceTasks()方法設置reduce task的數(shù)量,然后同map task創(chuàng)建方式。

.最后就是創(chuàng)建兩個初始化task,進行map和reduce的初始化。

任務的分配JobTracker:

    消息傳遞HeartBeat: tasktracker運行一個簡單循環(huán)定期發(fā)送心跳(heartbeat)給JobTracker。由心跳告知JobTracker自己是否存活,同時作為消息通道傳遞其它信息(請求新task)。作為心跳的一部分,tasktracker會指明自己是否已準備好運行新的任務,如果是,jobtracker會分配它一個任務。

    分配任務所屬于的作業(yè):在Jobtracker分配任務前需先確定任務所在的作業(yè)。后面會介紹到各種作業(yè)調(diào)度算法,默認是一個FIFO的作業(yè)調(diào)度。

    分配Map和Reduce任務:tasktracker有固定數(shù)量的任務槽,一個tasktracker可以同時運行多個Map和Reduce任務,但其準確的數(shù)量由tasktracker的核的數(shù)量和內(nèi)存大小決定。默認調(diào)度器會先填滿Map任務槽,再填Reduce任務槽。jobtracker會選擇距離離分片文件最近的tasktracker,最理想情況下,任務是數(shù)據(jù)本地化迅槐(data-local)的,當然也可以是機架本地化(rack-local),如果不是本地化的,那么他們就需要從其他機架上檢索數(shù)據(jù)。Reduce任務分配很簡單,jobtracker會簡單的從待運行的reduce任務列表中選取下一個來執(zhí)行,不用考慮數(shù)據(jù)本地化。

任務的執(zhí)行TaskTracker:

     TaskTracker收到新任務后,就要在本地運行任務了,運行任務的之一步就是通過localizedJob將任務本地化所需要的注入配置、數(shù)據(jù)、程序等信息進行本地化。

     1.本地化數(shù)據(jù):從共享文件系統(tǒng)將job.split 、job.jar (在分布式緩存中)復制本地,將job配置信息寫入job.xml。

     2.新建本地工作目錄:tasktracker會加壓job.jar文件到本工作目錄。

     3.調(diào)用launchTaskForJob方法發(fā)布任務(其中會新建TaskRunner實例運行任務),如果是Map任務就啟用MapTaskRunner,對于Reduce就是ReduceTaskRunner。

 

  在這之后,TaskRunner會啟用一個新的JVM來運行每個Map/Reduce任務,防止程序原因而導致tasktracker崩潰,但不同任務間重用JVM還是可以的,后續(xù)會講到任務JVM重用。

     對于單個Map,任務執(zhí)行的簡單流程是:

     1.分配任務執(zhí)行參數(shù)

     2.在Child臨時文件中添加map任務信息(Child是運行Map和Reduce任務的主進程)

     3.配置log文件夾,配置map任務的通信和輸出參數(shù)

     4.讀取input split,生成RecordReader讀取數(shù)據(jù)

     5.為Map生成MapRunnable,依次從RecordReader中接收數(shù)據(jù),并調(diào)用Map函數(shù)進行處理。

     6.最后將map函數(shù)的輸出調(diào)用collect收集到MapOutputBuffer(參數(shù)控制其大小)中。

Streaming和Pipes:

     Streaming和Pipes都運行特殊的Map和Reduce任務,目的是運行用戶提供的可執(zhí)行程序并與之通信。

     Streaming:使用標準輸入輸出Streaming與進程進行通信。

     Pipes:用來監(jiān)聽套接字,會發(fā)送一個端口號給C++程序,兩者便可建立鏈接。

   

進度和狀態(tài)更新:

     一個作業(yè)和它的任務都有狀態(tài)(status),其中包括:運行成功失敗狀態(tài)、Map/Reduce進度、作業(yè)計數(shù)器值、狀態(tài)消息。

     狀態(tài)消息與客戶端的通信:

     1.對于Map任務Progress的追蹤:progress是已經(jīng)處理完的輸入所占的比例。

     2.對于Reduce:稍復雜,reduce任務分三個階段(每個階段占1/3),復制、排序和Reduce處理,若reduce已執(zhí)行一半的輸入的話,那么任務進度便是1/3+1/3+1/6=5/6。

     3.任務計數(shù)器:任務有一組計數(shù)器,負責對任務運行各個事件進行計數(shù)。

     4.任務進度報告:如果任務報告了進度,便會設置一個標記以表明狀態(tài)將被發(fā)送到tasktracker。有一個獨立線程每隔三秒檢查一次此標記,如果已設置,則告知tasktracker當前狀態(tài)。

     5.tasktracker進度報告:tasktracker會每隔5秒(這個心跳是由集群大小決定,集群越大時間會越長)發(fā)送heartbeat到jobtracker,并且tasktracker運行的所有狀態(tài)都會在調(diào)用中被發(fā)送到jobtracker。

     6.jobtracker合并各任務報告:產(chǎn)生一個表明所有運行作業(yè)機器所含任務狀態(tài)的全局視圖。

     前面提到的JobClient就是通過每秒查詢JobTracker來接收最新狀態(tài),而且客戶端JobClient的getJob方法可以得到一個RunningJob的實例,其包含了作業(yè)的所以狀態(tài)信息。

   

作業(yè)的完成:

     當jobtracker收到作業(yè)最后一個任務已完成的通知后,便把作業(yè)狀態(tài)設置成成功。JobClient查詢狀態(tài)時,便知道任務已成功完成,于是JobClient打印一條消息告知用戶,然后從runJob方法返回。

     如果jobtracker有相應設置,也會發(fā)送一個Http作業(yè)通知給客戶端,希望收到回調(diào)指令的客戶端可以通過job.end.notification.url屬性來進行設置。

     jobtracker情況作業(yè)的工作狀態(tài),指示tasktracker也清空作業(yè)的工作狀態(tài),如刪除中間輸出。

   

失敗

     實際情況下,用戶的代碼存在軟件錯誤進程會崩潰,機器也會產(chǎn)生故障,但Hadoop能很好的應對這些故障并完成作業(yè)。

     1.任務失敗  

     子任務異常:如Map/Reduce任務中的用戶代碼拋出異常,子任務JVM進程會在退出前向父進程tasktracker發(fā)送錯誤報告,錯誤被記錄用戶日志。tasktracker會將此次task attempt標記為tailed,并釋放這個任務槽運行另外一個任務。

     子進程JVM突然退出:可能由于JVM bug導致用戶代碼造成的某些特殊原因?qū)е翵VM退出,這種情況下,tasktracker會注意到進程已經(jīng)退出,并將此次嘗試標記為failed。

     任務掛起:一旦tasktracker注意一段時間沒有收到進度更新,便會將任務標記為failed,JVM子進程將被自動殺死。任務失敗間隔時間通常為10分鐘,可以以作業(yè)或者集群為基礎設置過期時間,參數(shù)為mapred.task.timeout。注意:如果參數(shù)值設置為0,則掛起的任務永遠不會釋放掉它的任務槽,隨著時間的推移會降低整個集群的效率。

     任務失敗嘗試次數(shù):jobtracker得知一個tasktracker失敗后,它會重新調(diào)度該任務執(zhí)行,當然,jobtracker會嘗試避免重新調(diào)度失敗過的tasktracker任務。如果一個任務嘗試次數(shù)超過4次,它將不再被重試。這個值是可以設置的,對于Map任務,參數(shù)是mapred.map.max.attempts,對于reduce任務,則由mapred.reduce.max.attempts屬性控制。如果次數(shù)超過限制,整個作業(yè)都會失敗。當然,有時我們不希望少數(shù)幾個任務失敗就終止運行的整個作業(yè),因為即使有些任務失敗,作業(yè)的一些結(jié)果可能還是有用的,這種情況下,可以為作業(yè)設置在不觸發(fā)作業(yè)失敗情況下的允許任務失敗的更大百分比,Map任務和Reduce任務可以獨立控制,參數(shù)為mapred.max.map.failures.percent 和mapred.max.reduce.failures.percent。

     任務嘗試中止(kill):任務終止和任務失敗不同,task attempt可以中止是因為他是一個推測副本或因為它所處的tasktracker失敗,導致jobtracker將它上面的所有task attempt標記為killed。被終止的task attempt不會被計入任務運行嘗試次數(shù),因為嘗試中止并不是任務的錯。

     2.tasktracker失敗

     tasktracker由于崩潰或者運行過慢而失敗,他將停止向jobtracker發(fā)送心跳(或很少發(fā)送心跳)。jobtracker注意已停止發(fā)送心跳的tasktracker(過期時間由參數(shù)mapred.tasktracker.expiry.interval設置,單位毫秒),并將它從等待調(diào)度的tasktracker池中移除。如果是未完成的作業(yè),jobtracker會安排次tasktracker上已經(jīng)運行成功的Map任務重新運行,因為此時reduce任務已無法訪問(中間輸出存放在失敗的tasktracker的本地文件系統(tǒng)上)。

     即使tasktracker沒有失敗,也有可能被jobtracker列入黑名單。如果tasktracker上面的失敗任務數(shù)量遠遠高于集群的平均失敗任務次數(shù),他就會被列入黑名單,被列入黑名單的tasktracker可以通過重啟從jobtracker黑名單中移除。

     3.jobtracker失敗

     老版本的JobTracker失敗屬于單點故障,這種情況下作業(yè)注定失敗。

作業(yè)調(diào)度:

     早期作業(yè)調(diào)度FIFO:按作業(yè)提交順序先進先出??梢栽O置優(yōu)先級,通過設置mapred.job.priority屬性或者JobClient的setJobPriority()方法制定優(yōu)先級(優(yōu)先級別:VERY_HIGH,HIGH,NORMAL,LOW,VERY_LOW)。注意FIFO調(diào)度算法不支持搶占(preemption),所以高優(yōu)先級作業(yè)仍然會被那些已經(jīng)開始的長時間運行的低優(yōu)先級作業(yè)所阻塞。

     Fair Scheduler:目標是讓每個用戶公平地共享集群能力。當集群存在很多作業(yè)時,空閑的任務槽會以”讓每個用戶共享集群“的方式進行分配。默認每個用戶都有自己的作業(yè)池。FairScheduler支持搶占,所以,如果一個池在特定的一段時間未得到公平地資源共享,它會終止池中得到過多的資源任務,以便把任務槽讓給資源不足的池。FairScheduler是一個后續(xù)模塊,使用它需要將其jar文件放在Hadoop的類路徑下。可以通過參數(shù)map.red.jobtracker.taskScheduler屬性配置(值為org.apache.hadoop.mapred.FairScheduler)

     Capacity Scheduler:

     集群由很多隊列組成,每個隊列都有一個分配能力,這一點與FairScheduler類似,只不過在每個隊列內(nèi)部,作業(yè)根據(jù)FIFO方式進行調(diào)度。本質(zhì)上說,Capacity Scheduler允許用戶或組織為每個用戶模擬一個獨立使用FIFO的集群。

shuffle和排序:

     MapReduce確保每個Reducer的輸入都是按鍵排序的。系統(tǒng)執(zhí)行排序的過程-將map輸出作為輸入傳給reducer的過程稱為shuffle。shuffle屬于不斷被優(yōu)化和改進的代碼庫的一部分,從許多方面來看,shuffle是MapReduce的心臟。

     整個shuffle的流程應該是這樣:

     map結(jié)果劃分partition  排序sort 分割spill   合并同一劃分   合并同一劃分  合并結(jié)果排序 reduce處理 輸出

     Map端:

     寫入緩沖區(qū):Map函數(shù)的輸出,是由collector處理的,它并不是簡單的將結(jié)果寫到磁盤。它利用緩沖的方式寫到內(nèi)存,并處于效率的考慮進行預排序。每個map都有一個環(huán)形的內(nèi)存緩沖區(qū),用于任務輸出,默認緩沖區(qū)大小為100MB(由參數(shù)io.sort.mb調(diào)整),一旦緩沖區(qū)內(nèi)容達到閾值(默認0.8),后臺進程邊開始把內(nèi)容寫到磁盤(spill),在寫磁盤過程中,map輸出繼續(xù)被寫到緩沖區(qū),但如果緩沖區(qū)被填滿,map會阻塞知道寫磁盤過程完成。寫磁盤將按照輪詢方式寫到mapred.local.dir屬性制定的作業(yè)特定子目錄中。

     寫出緩沖區(qū):collect將緩沖區(qū)的內(nèi)容寫出時,會調(diào)用sortAndSpill函數(shù),這個函數(shù)作用主要是創(chuàng)建spill文件,按照key值對數(shù)據(jù)進行排序,按照劃分將數(shù)據(jù)寫入文件,如果配置了combiner類,會先調(diào)用combineAndSpill函數(shù)再寫文件。sortAndSpill每被調(diào)用一次,就會寫一個spill文件。

     合并所有Map的spill文件:TaskTracker會在每個map任務結(jié)束后對所有map產(chǎn)生的spill文件進行merge,merge規(guī)則是根據(jù)分區(qū)將各個spill文件中數(shù)據(jù)同一分區(qū)中的數(shù)據(jù)合并在一起,并寫入到一個已分區(qū)且排序的map輸出文件中。待唯一的已分區(qū)且已排序的map輸出文件寫入最后一條記錄后,map端的shuffle階段就結(jié)束了。

     在寫磁盤前,線程首先根據(jù)數(shù)據(jù)最終要傳遞到的reducer把數(shù)據(jù)劃分成響應的分區(qū)(partition),在每個分區(qū)中,后臺線程按鍵進行內(nèi)排序,如果有一個combiner,它會在排序后的輸出上運行。

     內(nèi)存達到溢出寫的閾值時,就會新建一個溢出寫文件,因為map任務完成其最后一個輸出記錄之后,會有幾個溢出寫文件。在任務完成前,溢出寫文件會被合并成一個已分區(qū)且已排序的輸出文件。配置屬性io.sort.facor控制一次最多能合并多少流,默認值是10。

     如果已經(jīng)指定combiner,并且寫次數(shù)至少為3(通過min.mum.spills.for.combine設置)時,則combiner就會在輸出文件寫到磁盤之前運行。運行combiner的意義在于使map輸出更緊湊,舍得寫到本地磁盤和傳給reducer的數(shù)據(jù)更少。

     寫磁盤時壓縮:寫磁盤時壓縮會讓寫的速度更快,節(jié)約磁盤空間,并且減少傳給reducer的數(shù)據(jù)量。默認情況下,輸出是不壓縮的,但可以通過設置mapred.compress.map.output值為true,就可以啟用壓縮。使用的壓縮庫是由mapred.map.output.compression.codec制定。

     reducer獲得文件分區(qū)的工作線程:reducer通過http方式得到輸出文件的分區(qū),用于文件分區(qū)的工作線程數(shù)量由tracker.http.threads屬性指定,此設置針對的是每個tasktracker,而不是每個map任務槽。默認值為40,在大型集群上此值可以根據(jù)需要而增加。

     Reduce端:

     復制階段:reduce會定期向JobTracker獲取map的輸出位置,一旦拿到輸出位置,reduce就會從對應的TaskTracker上復制map輸出到本地(如果map輸出很小,則會被復制到TaskTracker節(jié)點的內(nèi)存中,否則會被讓如磁盤),而不會等到所有map任務結(jié)束(當然這個也有參數(shù)控制)。

     合并階段:從各個TaskTracker上復制的map輸出文件(無論在磁盤還是內(nèi)存)進行整合,并維持數(shù)據(jù)原來的順序。

     Reduce階段:從合并的文件中順序拿出一條數(shù)據(jù)進行reduce函數(shù)處理,然后將結(jié)果輸出到本地HDFS。

     Map的輸出文件位于運行map任務的tasktracker的本地磁盤,現(xiàn)在,tasktracker要為分區(qū)文件運行reduce任務。每個任務完成時間可能不同,但是只要有一個任務完成,reduce任務就開始復制其輸出,這就是reduce任務的復制階段(copy phase)。reduce任務有少量復制線程,因此能夠并行取得map輸出。默認值是5個線程,可以通過mapred.reduce.parallel.copies屬性設置。

     Reducer如何得知從哪個tasktracker獲得map輸出:map任務完成后會通知其父tasktracker狀態(tài)已更新,tasktracker進而通知(通過heart beat)jobtracker。因此,JobTracker就知道m(xù)ap輸出和tasktracker之間的映射關系,reducer中的一個線程定期詢問jobtracker以便獲知map輸出位置。由于reducer有可能失敗,因此tasktracker并沒有在之一個reducer檢索到map輸出時就立即從磁盤上刪除它們,相反他會等待jobtracker告示它可以刪除map輸出時才刪除,這是作業(yè)完成后最后執(zhí)行的。

     如果map輸出很小,則會被直接復制到reduce tasktracker的內(nèi)存緩沖區(qū)(大小由mapred.job.shuffle.input.buffer.percent控制,占堆空間的百分比),否則,map輸出被復制到磁盤。一旦內(nèi)存緩沖區(qū)達到閾值大?。ㄓ蒻apred.iob.shuffle.merge.percent)

或達到map輸出閾值大?。╩apred.inmem.threadhold),則合并后溢出寫到磁盤中。

     隨著磁盤上副本增多,后臺線程會將他們合并為更大的、排好序的文件。注意:為了合并,壓縮的map輸出必須在內(nèi)存中被解壓縮。

     排序階段:復制階段完成后,reduce任務會進入排序階段,更確切的說是合并階段,這個階段將合并map輸出,維持其順序排列。合并是循環(huán)進行的,由合并因子決定每次合并的輸出文件數(shù)量。但讓有可能會產(chǎn)生中間文件。

     reduce階段:在最后reduce階段,會直接把排序好的文件輸入reduce函數(shù),不會對中間文件進行再合并,最后的合并即可來自內(nèi)存,也可來自磁盤。此階段的輸出會直接寫到文件系統(tǒng),一般為hdfs。

     細節(jié):這里合并是并非平均合并,比如有40個文件,合并因子為10,我們并不是每趟合并10個,合并四趟。而是之一趟合并4個,后三趟合并10,在最后一趟中4個已合并的文件和余下6個未合并會直接并入reduce。

如何編寫一個分布式數(shù)據(jù)庫 hadoop123

基于hadoop的分布式數(shù)據(jù)庫有hbase。安裝hbase除了要安裝hadoop外,還要安裝Zookeeper。

分布式hbase安裝和分布式或羨hadoop安裝方法差不多,hbase要有master和regionserver,regionserver相當于slave,你可以在maser上面安裝核純好hbase,然后把它拷衫氏拍貝到其它slave服務器,再修改一些配置.

關于hadoop數(shù)據(jù)庫模型的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設,成都品牌建站設計,成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務,全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價值。


本文名稱:大數(shù)據(jù)時代,hadoop數(shù)據(jù)庫模型助力數(shù)據(jù)分析與挖掘(hadoop數(shù)據(jù)庫模型)
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/cdeohjp.html