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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀Hadoop集群搭建
Hadoop集群搭建
2017-05-21
收藏

Hadoop集群搭建

目的

本文描述了如何安裝、配置和管理有實(shí)際意義的Hadoop集群,其規(guī)模可從幾個(gè)節(jié)點(diǎn)的小集群到幾千個(gè)節(jié)點(diǎn)的超大集群。

如果你希望在單機(jī)上安裝Hadoop玩玩,從這里能找到相關(guān)細(xì)節(jié)。

先決條件

確保在你集群中的每個(gè)節(jié)點(diǎn)上都安裝了所有必需軟件。

獲取Hadoop軟件包。

安裝

安裝Hadoop集群通常要將安裝軟件解壓到集群內(nèi)的所有機(jī)器上。

通常,集群里的一臺(tái)機(jī)器被指定為NameNode,另一臺(tái)不同的機(jī)器被指定為JobTracker。這些機(jī)器是masters。余下的機(jī)器即作為DataNode也作為T(mén)askTracker。這些機(jī)器是slaves。

我們用HADOOP_HOME指代安裝的根路徑。通常,集群里的所有機(jī)器的HADOOP_HOME路徑相同。

配置

接下來(lái)的幾節(jié)描述了如何配置Hadoop集群。

配置文件

對(duì)Hadoop的配置通過(guò)conf/目錄下的兩個(gè)重要配置文件完成:

hadoop-default.xml - 只讀的默認(rèn)配置。

hadoop-site.xml- 集群特有的配置。

要了解更多關(guān)于這些配置文件如何影響Hadoop框架的細(xì)節(jié),請(qǐng)看這里。

此外,通過(guò)設(shè)置conf/hadoop-env.sh中的變量為集群特有的值,你可以對(duì)bin/目錄下的Hadoop腳本進(jìn)行控制。

集群配置

要配置Hadoop集群,你需要設(shè)置Hadoop守護(hù)進(jìn)程的運(yùn)行環(huán)境和Hadoop守護(hù)進(jìn)程的運(yùn)行參數(shù)。

Hadoop守護(hù)進(jìn)程指NameNode/DataNode       和JobTracker/TaskTracker。

配置Hadoop守護(hù)進(jìn)程的運(yùn)行環(huán)境

管理員可在conf/hadoop-env.sh腳本內(nèi)對(duì)Hadoop守護(hù)進(jìn)程的運(yùn)行環(huán)境做特別指定。

至少,你得設(shè)定JAVA_HOME使之在每一遠(yuǎn)端節(jié)點(diǎn)上都被正確設(shè)置。

管理員可以通過(guò)配置選項(xiàng)HADOOP_*_OPTS來(lái)分別配置各個(gè)守護(hù)進(jìn)程。          下表是可以配置的選項(xiàng)。


例如,配置Namenode時(shí),為了使其能夠并行回收垃圾(parallelGC),          要把下面的代碼加入到hadoop-env.sh:          
         export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS}"          

其它可定制的常用參數(shù)還包括:

HADOOP_LOG_DIR- 守護(hù)進(jìn)程日志文件的存放目錄。如果不存在會(huì)被自動(dòng)創(chuàng)建。

HADOOP_HEAPSIZE- 最大可用的堆大小,單位為MB。比如,1000MB。              這個(gè)參數(shù)用于設(shè)置hadoop守護(hù)進(jìn)程的堆大小。缺省大小是1000MB。

配置Hadoop守護(hù)進(jìn)程的運(yùn)行參數(shù)

這部分涉及Hadoop集群的重要參數(shù),這些參數(shù)在conf/hadoop-site.xml中指定。

通常,上述參數(shù)被標(biāo)記為                    final 以確保它們不被用戶應(yīng)用更改。

現(xiàn)實(shí)世界的集群配置

這節(jié)羅列在大規(guī)模集群上運(yùn)行sort基準(zhǔn)測(cè)試(benchmark)時(shí)使用到的一些非缺省配置。

運(yùn)行sort900的一些非缺省配置值,sort900即在900個(gè)節(jié)點(diǎn)的集群上對(duì)9TB的數(shù)據(jù)進(jìn)行排序:

運(yùn)行sort1400和sort2000時(shí)需要更新的配置,即在1400個(gè)節(jié)點(diǎn)上對(duì)14TB的數(shù)據(jù)進(jìn)行排序和在2000個(gè)節(jié)點(diǎn)上對(duì)20TB的數(shù)據(jù)進(jìn)行排序:

Slaves

通常,你選擇集群中的一臺(tái)機(jī)器作為NameNode,另外一臺(tái)不同的機(jī)器作為JobTracker。余下的機(jī)器即作為DataNode又作為T(mén)askTracker,這些被稱(chēng)之為slaves。

在conf/slaves文件中列出所有slave的主機(jī)名或者IP地址,一行一個(gè)。

日志

Hadoop使用Apache log4j來(lái)記錄日志,它由Apache Commons Logging框架來(lái)實(shí)現(xiàn)。編輯conf/log4j.properties文件可以改變Hadoop守護(hù)進(jìn)程的日志配置(日志格式等)。

歷史日志

作業(yè)的歷史文件集中存放在hadoop.job.history.location,這個(gè)也可以是在分布式文件系統(tǒng)下的路徑,其默認(rèn)值為${HADOOP_LOG_DIR}/history。jobtracker的web UI上有歷史日志的web UI鏈接。

歷史文件在用戶指定的目錄hadoop.job.history.user.location也會(huì)記錄一份,這個(gè)配置的缺省值為作業(yè)的輸出目錄。這些文件被存放在指定路徑下的“_logs/history/”目錄中。因此,默認(rèn)情況下日志文件會(huì)在“mapred.output.dir/_logs/history/”下。如果將hadoop.job.history.user.location指定為值none,系統(tǒng)將不再記錄此日志。

用戶可使用以下命令在指定路徑下查看歷史日志匯總
           $ bin/hadoop job -history output-dir
           這條命令會(huì)顯示作業(yè)的細(xì)節(jié)信息,失敗和終止的任務(wù)細(xì)節(jié)。
           關(guān)于作業(yè)的更多細(xì)節(jié),比如成功的任務(wù),以及對(duì)每個(gè)任務(wù)的所做的嘗試次數(shù)等可以用下面的命令查看
           $ bin/hadoop job -history all output-dir

一但全部必要的配置完成,將這些文件分發(fā)到所有機(jī)器的HADOOP_CONF_DIR路徑下,通常是${HADOOP_HOME}/conf。

Hadoop的機(jī)架感知

HDFS和Map/Reduce的組件是能夠感知機(jī)架的。

NameNode和JobTracker通過(guò)調(diào)用管理員配置模塊中的APIresolve來(lái)獲取集群里每個(gè)slave的機(jī)架id。該API將slave的DNS名稱(chēng)(或者IP地址)轉(zhuǎn)換成機(jī)架id。使用哪個(gè)模塊是通過(guò)配置項(xiàng)topology.node.switch.mapping.impl來(lái)指定的。模塊的默認(rèn)實(shí)現(xiàn)會(huì)調(diào)用topology.script.file.name配置項(xiàng)指定的一個(gè)的腳本/命令。 如果topology.script.file.name未被設(shè)置,對(duì)于所有傳入的IP地址,模塊會(huì)返回/default-rack作為機(jī)架id。在Map/Reduce部分還有一個(gè)額外的配置項(xiàng)mapred.cache.task.levels,該參數(shù)決定cache的級(jí)數(shù)(在網(wǎng)絡(luò)拓?fù)渲校?。例如,如果默認(rèn)值是2,會(huì)建立兩級(jí)的cache- 一級(jí)針對(duì)主機(jī)(主機(jī) -> 任務(wù)的映射)另一級(jí)針對(duì)機(jī)架(機(jī)架 -> 任務(wù)的映射)。

啟動(dòng)Hadoop

啟動(dòng)Hadoop集群需要啟動(dòng)HDFS集群和Map/Reduce集群。

格式化一個(gè)新的分布式文件系統(tǒng):
       $ bin/hadoop namenode -format     

在分配的NameNode上,運(yùn)行下面的命令啟動(dòng)HDFS
       $ bin/start-dfs.sh     

bin/start-dfs.sh腳本會(huì)參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上啟動(dòng)DataNode守護(hù)進(jìn)程。

在分配的JobTracker上,運(yùn)行下面的命令啟動(dòng)Map/Reduce:
       $ bin/start-mapred.sh     

bin/start-mapred.sh腳本會(huì)參照J(rèn)obTracker上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上啟動(dòng)TaskTracker守護(hù)進(jìn)程。

停止Hadoop

在分配的NameNode上,執(zhí)行下面的命令停止HDFS
       $ bin/stop-dfs.sh     

bin/stop-dfs.sh腳本會(huì)參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上停止DataNode守護(hù)進(jìn)程。

在分配的JobTracker上,運(yùn)行下面的命令停止Map/Reduce:
       $ bin/stop-mapred.sh

bin/stop-mapred.sh腳本會(huì)參照J(rèn)obTracker上${HADOOP_CONF_DIR}/slaves文件的內(nèi)容,在所有列出的slave上停止TaskTracker守護(hù)進(jìn)程。

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

若不方便掃碼,搜微信號(hào):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)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(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ù)說(shuō)明請(qǐng)參見(jiàn):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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }