99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時(shí)代大數(shù)據(jù)分析師教程-2.1 Hadoop入門-Hadoop 1.0 的局限與 Hadoop 2.0(YARN)的革新
大數(shù)據(jù)分析師教程-2.1 Hadoop入門-Hadoop 1.0 的局限與 Hadoop 2.0(YARN)的革新
2024-10-23
收藏

大數(shù)據(jù)分析師培訓(xùn)教程-2.1 Hadoop入門-Hadoop 1.0 的局限與 Hadoop 2.0(YARN)的革新

Hadoop簡介

Apache Hadoop存儲和處理大數(shù)據(jù)的開源軟件框架 Hadoop項(xiàng)目

Hadoop能夠在上千臺機(jī)器組成的集群上運(yùn)行大規(guī)模集群可靠性,不能僅僅靠硬件來保證,因?yàn)楣?jié)點(diǎn)的失敗、網(wǎng)絡(luò)的失敗等狀況不可避免,為了能夠在大規(guī)模集群上順利運(yùn)行,Hadoop的所有模塊,其設(shè)計(jì)原則基于這樣的基本假設(shè),即**硬件的失敗在所難免,每個(gè)節(jié)點(diǎn)都沒有那么可靠,可能發(fā)生節(jié)點(diǎn)失敗狀況,軟件框架應(yīng)該能夠自動檢測和處理這些失敗情況。 Hadoop通過軟件,在大規(guī)模集群上提供高度的可用性(High Availability)

Hadoop 的生態(tài)系統(tǒng)

  1. HiveHadoop平臺上的數(shù)據(jù)倉庫,用于對數(shù)據(jù)進(jìn)行離線分析。它提供了一種類 似于SQL的查詢語言HQL (Hive Query Language)。HiveSQL轉(zhuǎn)化為 MapReduce作業(yè)(Job)在Hadoop上執(zhí)行。

  2. HBase是Google Big Table在Hadoop平臺上的開源實(shí)現(xiàn)。它是一個(gè)針對結(jié)構(gòu)化數(shù) 據(jù)處理的、面向列分組(Column Family)的、可伸縮的、高度可靠的、高性能的分 布式數(shù)據(jù)庫。一般用于數(shù)據(jù)服務(wù)(Data Serving)應(yīng)用場合。

  3. Pig實(shí)現(xiàn)了數(shù)據(jù)查詢腳本語言Pig Latin。用Pig Latin腳本語言編寫的應(yīng)用程序,翻 譯為MapReduce作業(yè),在Hadoop上運(yùn)行

  4. Flume是一個(gè)可擴(kuò)展的、高度可靠的、高可用的分布式海量日志收集系統(tǒng),一般 用于把眾多服務(wù)器上的大量日志,聚合到某一個(gè)數(shù)據(jù)中心。Flume提供對日志數(shù) 據(jù)進(jìn)行簡單處理的能力,比如過濾、格式轉(zhuǎn)換等。同時(shí),F(xiàn)lume可以將日志寫往 各種目標(biāo)(本地文件、分布式文件系統(tǒng))。

  5. Sqoop是SQL to Hadoop的縮寫,主要用于在關(guān)系數(shù)據(jù)庫或者其它結(jié)構(gòu)化數(shù)據(jù)源 和Hadoop之間交換數(shù)據(jù)

  6. Mahout是Hadoop平臺上的機(jī)器學(xué)習(xí)軟件包,它的主要目標(biāo)是實(shí)現(xiàn)高度可擴(kuò)展的 機(jī)器學(xué)習(xí)算法,以便幫助開發(fā)人員利用大數(shù)據(jù)進(jìn)行機(jī)器學(xué)習(xí)模型訓(xùn)練。Mahout現(xiàn) 在已經(jīng)包含聚類、分類、推薦引擎(協(xié)同過濾)、頻繁集挖掘等經(jīng)典數(shù)據(jù)挖掘和機(jī) 器學(xué)習(xí)算法。

  7. Oozie是一個(gè)工作流調(diào)度器(Scheduler)。Oozie協(xié)調(diào)運(yùn)行的作業(yè),屬于一次性非 循環(huán)的作業(yè),比如MapReduce作業(yè)、Pig腳本、Hive查詢、Sqoop數(shù)據(jù)導(dǎo)入/導(dǎo)出 作業(yè)等。Oozie基于時(shí)間、和數(shù)據(jù)可用性進(jìn)行作業(yè)調(diào)度,根據(jù)作業(yè)間的依賴關(guān) 系,協(xié)調(diào)作業(yè)的運(yùn)行

  8. Zookeeper是模仿Google公司的Chubby系統(tǒng)的開源實(shí)現(xiàn),Chubby是一個(gè)分布式 的鎖(Lock)服務(wù)

HDFS 的原理及其讀寫過程

原理:

  1. HDFS,是一個(gè)分布式的、高度可擴(kuò)展的文件系統(tǒng)。
  2. 一個(gè)HDFS集群,一般由一個(gè)NameNode和若干DataNode組成,分別負(fù)責(zé)元信息 的管理和數(shù)據(jù)塊的管理 . HDFS支持TB級甚至PB級大小文件的存儲;
  3. 它把文件劃分成數(shù)據(jù)塊(Block),分布到多臺機(jī)器上進(jìn)行存儲;
  4. 為了保證系統(tǒng)的可靠性,HDFS把數(shù)據(jù)塊在多個(gè)節(jié)點(diǎn)上進(jìn)行復(fù)制(Replicate)
  5. 采用心跳機(jī)制確認(rèn)節(jié)點(diǎn)可用:
  6. DataNode默認(rèn)每秒像NameNode匯報(bào)一次,向NameNode匯報(bào)狀態(tài)信息,并且返 回NameNode對DataNode的操作命令
  7. 如果某一時(shí)刻DataNode不匯報(bào),可能宕機(jī) . NameNode超過十分鐘沒有收到DataNode的心跳,則認(rèn)為該節(jié)點(diǎn)不可用 寫文件
  8. 客戶端通過Distributed FileSystem模塊向NameNode請求上傳文件,NameNode檢 查目標(biāo)文件是否已存在,父目錄是否存在。
  9. NameNode返回是否可以上傳。 . 客戶端請求第一個(gè) Block上傳到哪幾個(gè)DataNode服務(wù)器上。
  10. NameNode返回個(gè)DataNode節(jié)點(diǎn),分別為DataNode1、DataNode2、DataNode。 5. 客戶端通過FSDataOutputStream模塊請求DataNode1上傳數(shù)據(jù),DataNode1收到 請求會繼續(xù)調(diào)用DataNode2,然后DataNode2調(diào)用DataNode,將這個(gè)通信管道建立 完成。
  11. DataNode1、DataNode2、DataNode逐級應(yīng)答客戶端。
  12. 客戶端開始往DataNode1上傳第一個(gè)Block(先從磁盤讀取數(shù)據(jù)放到一個(gè)本地內(nèi)存 緩存),以Packet為單位,DataNode1收到一個(gè)Packet就會傳給DataNode2, DataNode2傳給DataNode;DataNode1每傳一個(gè)packet會放入一個(gè)應(yīng)答隊(duì)列等待應(yīng) 答。
  13. 當(dāng)一個(gè)Block傳輸完成之后,客戶端再次請求NameNode上傳第二個(gè)Block的服務(wù) 器。(重復(fù)執(zhí)行-7步)。

讀文件

  1. 客戶端通過DistributedFileSystem向NameNode請求下載文件,NameNode通過 查詢元數(shù)據(jù),找到文件塊所在的DataNode地址。
  2. 挑選一臺DataNode(就近原則,然后隨機(jī))服務(wù)器,請求讀取數(shù)據(jù)。 . DataNode開始傳輸數(shù)據(jù)給客戶端(從磁盤里面讀取數(shù)據(jù)輸入流,以Packet為單 位來做校驗(yàn))。
  3. 客戶端以Packet為單位接收,先在本地緩存,然后寫入目標(biāo)文件。

Hadoop 1.0 的局限與 Hadoop 2.0(YARN)的原理是什么?

在大數(shù)據(jù)處理的領(lǐng)域中,Hadoop 可謂是一位 “重量級選手”。然而,就像任何技術(shù)一樣,Hadoop 1.0 也有它的不足之處。

Hadoop 1.0 存在著明顯的單點(diǎn)故障問題。這就好比一個(gè)團(tuán)隊(duì)中,如果關(guān)鍵人物出了問題,整個(gè)團(tuán)隊(duì)的運(yùn)作可能就會陷入混亂。在 Hadoop 1.0 中,一旦 NameNode 這個(gè)關(guān)鍵節(jié)點(diǎn)出現(xiàn)故障,整個(gè)系統(tǒng)就可能面臨崩潰的風(fēng)險(xiǎn)。

而且,它的資源管理方式也不夠靈活。就好像分配房間,如果只有一種固定的分配方式,很難滿足各種不同的需求。

不過,技術(shù)總是在不斷進(jìn)步的。Hadoop 2.0(YARN)的出現(xiàn),給我們帶來了新的希望。

YARN 的原理就像是一個(gè)更聰明的 “管家”。它把資源管理和任務(wù)調(diào)度分開了。ResourceManager 就像是大管家,負(fù)責(zé)整體資源的分配和監(jiān)控。而 ApplicationMaster 則像是每個(gè)任務(wù)的小管家,專門負(fù)責(zé)自己任務(wù)的資源申請和調(diào)度。

這種分離的方式,讓系統(tǒng)的擴(kuò)展性大大增強(qiáng)。就好比原來的房子不夠住了,現(xiàn)在可以很方便地加蓋新的房間,而不會影響原來的居住者。

同時(shí),容錯(cuò)性也得到了提高。即使某個(gè) “小管家” 出了問題,也不會讓整個(gè) “家” 亂了套。

資源利用率也因?yàn)檫@種更精細(xì)的管理而得到了提升,不再有資源浪費(fèi)或者分配不均的情況。

Hadoop 1.0 的局限

  1. 它僅僅支持一種計(jì)算模型,即MapReduce。MapReduce計(jì)算模型的表達(dá)能力有 限,尤其是復(fù)雜的數(shù)據(jù)處理任務(wù)
  2. MapReduce作業(yè)通過磁盤進(jìn)行數(shù)據(jù)交換,效率低下,影響了查詢的執(zhí)行效率。
  3. Hadoop 1.0的任務(wù)調(diào)度方法,遠(yuǎn)未達(dá)到優(yōu)化資源利用率的效果。

Hadoop 2.0(YARN)的原理

YARN(Yet Another Resource Negotiator)

  1. 在新的架構(gòu)里,包含ResourceManager和NodeManager兩個(gè)重要的組件。 ResourceManager運(yùn)行在Master節(jié)點(diǎn)上,NodeManager運(yùn)行在Slave節(jié)點(diǎn)上,一起負(fù) 責(zé)分布式應(yīng)用程序的調(diào)度和運(yùn)行
  2. ResourceManager是為應(yīng)用程序分配資源的最高權(quán)威。ResourceManager包含兩個(gè)組件,包括Scheduler和ApplicationManager

總的來說,Hadoop 2.0(YARN)的出現(xiàn),解決了 Hadoop 1.0 的很多痛點(diǎn),讓大數(shù)據(jù)處理變得更加高效、可靠和靈活。相信在未來,它還會不斷進(jìn)化,為我們處理大數(shù)據(jù)帶來更多的便利和驚喜!

Hadoop 2.0 的主要優(yōu)勢有哪些?

    1. 擴(kuò)展性:

ResourceManager的主要功能,是資源的調(diào)度工作。所以它能夠輕松地 管理更大規(guī)模的集群系統(tǒng),適應(yīng)了數(shù)據(jù)量增長對數(shù)據(jù)中心的擴(kuò)展性提出的挑戰(zhàn)。

    1. 更高的集群使用效率:

ResourceManager是一個(gè)單純的資源管理器,它根據(jù)資源 預(yù)留要求、公平性、服務(wù)水平協(xié)議(Service Level Agreement, SLA)等標(biāo)準(zhǔn),優(yōu)化 整個(gè)集群的資源,使之得到很好的利用。

Hadoop1.0平臺上開發(fā)的 MapReduce應(yīng)用程序,無需修 改,直接在YARN上運(yùn)行。

    1. 支持更多的負(fù)載類型:

當(dāng)數(shù)據(jù)存儲HDFS以后,用戶希望能夠?qū)?shù)據(jù)以不同的 方式進(jìn)行處理。除了MapReduce應(yīng)用程序(主要對數(shù)據(jù)進(jìn)行批處理),YARN支持 更多的編程模型,包括圖數(shù)據(jù)的處理、迭代式計(jì)算模型、實(shí)時(shí)流數(shù)據(jù)處理、交互 式查詢等。一般來講,機(jī)器學(xué)習(xí)算法需要在數(shù)據(jù)集上,經(jīng)過多次迭代,才能獲得 最終的計(jì)算結(jié)果。

    1. 靈活性: MapReduce等計(jì)算模型可以獨(dú)立于資源管理層,單獨(dú)演化和改進(jìn)。使 得系統(tǒng)各個(gè)部件的演進(jìn)和配合,更加具有靈活性

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }