• <menu id="w2i4a"></menu>
  • 分布式計(jì)算開(kāi)源框架Hadoop入門(mén)實(shí)踐(二)

    原創(chuàng)|行業(yè)資訊|編輯:陳俊吉|2017-05-03 09:40:35.000|閱讀 128 次

    概述:其實(shí)參看Hadoop官方文檔已經(jīng)能夠很容易配置分布式框架運(yùn)行環(huán)境了,不過(guò)這里既然寫(xiě)了就再多寫(xiě)一點(diǎn),同時(shí)有一些細(xì)節(jié)需要注意的也說(shuō)明一下,其實(shí)也就是這些細(xì)節(jié)會(huì)讓人摸索半天。Hadoop可以單機(jī)跑,也可以配置集群跑,單機(jī)跑就不需要多說(shuō)了,只需要按照Demo的運(yùn)行說(shuō)明直接執(zhí)行命令即可。這里主要重點(diǎn)說(shuō)一下集群配置運(yùn)行的過(guò)程。

    其實(shí)參看Hadoop官方文檔已經(jīng)能夠很容易配置分布式框架運(yùn)行環(huán)境了,不過(guò)這里既然寫(xiě)了就再多寫(xiě)一點(diǎn),同時(shí)有一些細(xì)節(jié)需要注意的也說(shuō)明一下,其實(shí)也就是這些細(xì)節(jié)會(huì)讓人摸索半天。Hadoop可以單機(jī)跑,也可以配置集群跑,單機(jī)跑就不需要多說(shuō)了,只需要按照Demo的運(yùn)行說(shuō)明直接執(zhí)行命令即可。這里主要重點(diǎn)說(shuō)一下集群配置運(yùn)行的過(guò)程。

    環(huán)境

    7臺(tái)普通的機(jī)器,操作系統(tǒng)都是Linux。內(nèi)存和CPU就不說(shuō)了,反正Hadoop一大特點(diǎn)就是機(jī)器在多不在精。JDK必須是1.5以上的,這個(gè)切記。7臺(tái)機(jī)器的機(jī)器名務(wù)必不同,后續(xù)會(huì)談到機(jī)器名對(duì)于MapReduce有很大的影響。

    部署考慮

    正如上面我描述的,對(duì)于Hadoop的集群來(lái)說(shuō),可以分成兩大類(lèi)角色:Master和Slave,前者主要配置NameNode和JobTracker的角色,負(fù)責(zé)總管分布式數(shù)據(jù)和分解任務(wù)的執(zhí)行,后者配置DataNode和TaskTracker的角色,負(fù)責(zé)分布式數(shù)據(jù)存儲(chǔ)以及任務(wù)的執(zhí)行。本來(lái)我打算看看一臺(tái)機(jī)器是否可以配置成Master,同時(shí)也作為Slave使用,不過(guò)發(fā)現(xiàn)在NameNode初始化的過(guò)程中以及TaskTracker執(zhí)行過(guò)程中機(jī)器名配置好像有沖突(NameNode和TaskTracker對(duì)于Hosts的配置有些沖突,究竟是把機(jī)器名對(duì)應(yīng)IP放在配置前面還是把Localhost對(duì)應(yīng)IP放在前面有點(diǎn)問(wèn)題,不過(guò)可能也是我自己的問(wèn)題吧,這個(gè)大家可以根據(jù)實(shí)施情況給我反饋)。最后反正決定一臺(tái)Master,六臺(tái)Slave,后續(xù)復(fù)雜的應(yīng)用開(kāi)發(fā)和測(cè)試結(jié)果的比對(duì)會(huì)增加機(jī)器配置。

    實(shí)施步驟

    1. 在所有的機(jī)器上都建立相同的目錄,也可以就建立相同的用戶(hù),以該用戶(hù)的home路徑來(lái)做hadoop的安裝路徑。例如我在所有的機(jī)器上都建立了/home/wenchu。
    2. 下載Hadoop,先解壓到Master上。這里我是下載的0.17.1的版本。此時(shí)Hadoop的安裝路徑就是/home/wenchu/hadoop-0.17.1。
    3. 解壓后進(jìn)入conf目錄,主要需要修改以下文件:hadoop-env.sh,hadoop-site.xml、masters、slaves。Hadoop的基礎(chǔ)配置文件是hadoop-default.xml,看Hadoop的代碼可以知道,默認(rèn)建立一個(gè)Job的時(shí)候會(huì)建立Job的Config,Config首先讀入hadoop-default.xml的配置,然后再讀入hadoop-site.xml的配置(這個(gè)文件初始的時(shí)候配置為空),hadoop-site.xml中主要配置你需要覆蓋的hadoop-default.xml的系統(tǒng)級(jí)配置,以及你需要在你的MapReduce過(guò)程中使用的自定義配置(具體的一些使用例如final等參考文檔)。

    以下是一個(gè)簡(jiǎn)單的hadoop-site.xml的配置:

      fs.default.name//你的namenode的配置,機(jī)器名加端口
      hdfs://10.2.224.46:54310/
      mapred.job.tracker//你的JobTracker的配置,機(jī)器名加端口
      hdfs://10.2.224.46:54311/
      dfs.replication//數(shù)據(jù)需要備份的數(shù)量,默認(rèn)是三
      1
       hadoop.tmp.dir//Hadoop的默認(rèn)臨時(shí)路徑,這個(gè)最好配置,如果在新增節(jié)點(diǎn)或者其他情況下莫名其妙的DataNode啟動(dòng)不了,就刪除此文件中的tmp目錄即可。不過(guò)如果刪除了NameNode機(jī)器的此目錄,那么就需要重新執(zhí)行NameNode格式化的命令。
       /home/wenchu/hadoop/tmp/
      mapred.child.java.opts//java虛擬機(jī)的一些參數(shù)可以參照配置
      -Xmx512m
      dfs.block.size//block的大小,單位字節(jié),后面會(huì)提到用處,必須是512的倍數(shù),因?yàn)椴捎胏rc作文件完整性校驗(yàn),默認(rèn)配置512是checksum的最小單元。
      5120000
      The default block size for new files.

    hadoop-env.sh文件只需要修改一個(gè)參數(shù):

    # The java implementation to use. Required.
    export JAVA_HOME=/usr/ali/jdk1.5.0_10

    配置你的Java路徑,記住一定要1.5版本以上,免得莫名其妙出現(xiàn)問(wèn)題。

    Masters中配置Masters的IP或者機(jī)器名,如果是機(jī)器名那么需要在/etc/hosts中有所設(shè)置。Slaves中配置的是Slaves的IP或者機(jī)器名,同樣如果是機(jī)器名需要在/etc/hosts中有所設(shè)置。范例如下,我這里配置的都是IP:

    Masters:
    10.2.224.46
    Slaves:
    10.2.226.40
    10.2.226.39
    10.2.226.38
    10.2.226.37
    10.2.226.41
    10.2.224.36

    建立Master到每一臺(tái)Slave的SSH受信證書(shū)。由于Master將會(huì)通過(guò)SSH啟動(dòng)所有Slave的Hadoop,所以需要建立單向或者雙向證書(shū)保證命令執(zhí)行時(shí)不需要再輸入密碼。在Master和所有的Slave機(jī)器上執(zhí)行:ssh-keygen -t rsa。執(zhí)行此命令的時(shí)候,看到提示只需要回車(chē)。然后就會(huì)在/root/.ssh/下面產(chǎn)生id_rsa.pub的證書(shū)文件,通過(guò)scp將Master機(jī)器上的這個(gè)文件拷貝到Slave上(記得修改名稱(chēng)),例如:scp root@masterIP:/root/.ssh/id_rsa.pub /root/.ssh/46_rsa.pub,然后執(zhí)行cat /root/.ssh/46_rsa.pub >>/root/.ssh/authorized_keys,建立authorized_keys文件即可,可以打開(kāi)這個(gè)文件看看,也就是rsa的公鑰作為key,user@IP作為value。此時(shí)可以試驗(yàn)一下,從master ssh到slave已經(jīng)不需要密碼了。由slave反向建立也是同樣。為什么要反向呢?其實(shí)如果一直都是Master啟動(dòng)和關(guān)閉的話(huà)那么沒(méi)有必要建立反向,只是如果想在Slave也可以關(guān)閉Hadoop就需要建立反向。

    將Master上的Hadoop通過(guò)scp拷貝到每一個(gè)Slave相同的目錄下,根據(jù)每一個(gè)Slave的Java_HOME的不同修改其hadoop-env.sh。

    修改Master上/etc/profile:

    新增以下內(nèi)容:(具體的內(nèi)容根據(jù)你的安裝路徑修改,這步只是為了方便使用)

    export HADOOP_HOME=/home/wenchu/hadoop-0.17.1
    export PATH=$PATH:$HADOOP_HOME/bin
    修改完畢后,執(zhí)行source /etc/profile來(lái)使其生效。

    在Master上執(zhí)行Hadoop namenode –format,這是第一需要做的初始化,可以看作格式化吧,以后除了在上面我提到過(guò)刪除了Master上的hadoop.tmp.dir目錄,否則是不需要再次執(zhí)行的。

    然后執(zhí)行Master上的start-all.sh,這個(gè)命令可以直接執(zhí)行,因?yàn)樵?中已經(jīng)添加到了path路徑,這個(gè)命令是啟動(dòng)hdfs和mapreduce兩部分,當(dāng)然你也可以分開(kāi)單獨(dú)啟動(dòng)hdfs和mapreduce,分別是bin目錄下的start-dfs.sh和start-mapred.sh。

    檢查Master的logs目錄,看看Namenode日志以及JobTracker日志是否正常啟動(dòng)。

    檢查Slave的logs目錄看看Datanode日志以及TaskTracker日志是否正常。

    如果需要關(guān)閉,那么就直接執(zhí)行stop-all.sh即可。

    以上步驟就可以啟動(dòng)Hadoop的分布式環(huán)境,然后在Master的機(jī)器進(jìn)入Master的安裝目錄,執(zhí)行hadoop jar hadoop-0.17.1-examples.jar wordcount輸入路徑和輸出路徑,就可以看到字?jǐn)?shù)統(tǒng)計(jì)的效果了。此處的輸入路徑和輸出路徑都指的是HDFS中的路徑,因此你可以首先通過(guò)拷貝本地文件系統(tǒng)中的目錄到HDFS中的方式來(lái)建立HDFS中的輸入路徑:

    hadoop dfs -copyFromLocal /home/wenchu/test-in test-in。其中/home/wenchu/test-in是本地路徑,test-in是將會(huì)建立在HDFS中的路徑,執(zhí)行完畢以后可以通過(guò)hadoop dfs –ls看到test-in目錄已經(jīng)存在,同時(shí)可以通過(guò)hadoop dfs –ls test-in查看里面的內(nèi)容。輸出路徑要求是在HDFS中不存在的,當(dāng)執(zhí)行完那個(gè)demo以后,就可以通過(guò)hadoop dfs –ls 輸出路徑看到其中的內(nèi)容,具體文件的內(nèi)容可以通過(guò)hadoop dfs –cat文件名稱(chēng)來(lái)查看。

    經(jīng)驗(yàn)總結(jié)和注意事項(xiàng)(這部分是我在使用過(guò)程中花了一些時(shí)間走的彎路):

    1. Master和Slave上的幾個(gè)conf配置文件不需要全部同步,如果確定都是通過(guò)Master去啟動(dòng)和關(guān)閉,那么Slave機(jī)器上的配置不需要去維護(hù)。但如果希望在任意一臺(tái)機(jī)器都可以啟動(dòng)和關(guān)閉Hadoop,那么就需要全部保持一致了。
    2. Master和Slave機(jī)器上的/etc/hosts中必須把集群中機(jī)器都配置上去,就算在各個(gè)配置文件中使用的是IP。這個(gè)吃過(guò)不少苦頭,原來(lái)以為如果配成IP就不需要去配置Host,結(jié)果發(fā)現(xiàn)在執(zhí)行Reduce的時(shí)候總是卡住,在拷貝的時(shí)候就無(wú)法繼續(xù)下去,不斷重試。另外如果集群中如果有兩臺(tái)機(jī)器的機(jī)器名如果重復(fù)也會(huì)出現(xiàn)問(wèn)題。
    3. 如果在新增了節(jié)點(diǎn)或者刪除節(jié)點(diǎn)的時(shí)候出現(xiàn)了問(wèn)題,首先就去刪除Slave的hadoop.tmp.dir,然后重新啟動(dòng)試試看,如果還是不行那就干脆把Master的hadoop.tmp.dir刪除(意味著dfs上的數(shù)據(jù)也會(huì)丟失),如果刪除了Master的hadoop.tmp.dir,那么就需要重新namenode –format。
    4. Map任務(wù)個(gè)數(shù)以及Reduce任務(wù)個(gè)數(shù)配置。前面分布式文件系統(tǒng)設(shè)計(jì)提到一個(gè)文件被放入到分布式文件系統(tǒng)中,會(huì)被分割成多個(gè)block放置到每一個(gè)的DataNode上,默認(rèn)dfs.block.size應(yīng)該是64M,也就是說(shuō)如果你放置到HDFS上的數(shù)據(jù)小于64,那么將只有一個(gè)Block,此時(shí)會(huì)被放置到某一個(gè)DataNode中,這個(gè)可以通過(guò)使用命令:hadoop dfsadmin –report就可以看到各個(gè)節(jié)點(diǎn)存儲(chǔ)的情況。也可以直接去某一個(gè)DataNode查看目錄:hadoop.tmp.dir/dfs/data/current就可以看到那些block了。Block的數(shù)量將會(huì)直接影響到Map的個(gè)數(shù)。當(dāng)然可以通過(guò)配置來(lái)設(shè)定Map和Reduce的任務(wù)個(gè)數(shù)。Map的個(gè)數(shù)通常默認(rèn)和HDFS需要處理的blocks相同。也可以通過(guò)配置Map的數(shù)量或者配置minimum split size來(lái)設(shè)定,實(shí)際的個(gè)數(shù)為:max(min(block_size,data/#maps),min_split_size)。Reduce可以通過(guò)這個(gè)公式計(jì)算:0.95*num_nodes*mapred.tasktracker.tasks.maximum。

    總的來(lái)說(shuō)出了問(wèn)題或者啟動(dòng)的時(shí)候最好去看看日志,這樣心里有底。

    Hadoop中的命令(Command)總結(jié)

    這部分內(nèi)容其實(shí)可以通過(guò)命令的Help以及介紹了解,我主要側(cè)重于介紹一下我用的比較多的幾個(gè)命令。Hadoop dfs 這個(gè)命令后面加參數(shù)就是對(duì)于HDFS的操作,和Linux操作系統(tǒng)的命令很類(lèi)似,例如:

    Hadoop dfs –ls就是查看/usr/root目錄下的內(nèi)容,默認(rèn)如果不填路徑這就是當(dāng)前用戶(hù)路徑;

    Hadoop dfs –rmr xxx就是刪除目錄,還有很多命令看看就很容易上手;

    Hadoop dfsadmin –report這個(gè)命令可以全局的查看DataNode的情況;

    Hadoop job后面增加參數(shù)是對(duì)于當(dāng)前運(yùn)行的Job的操作,例如list,kill等;

    Hadoop balancer就是前面提到的均衡磁盤(pán)負(fù)載的命令。

    其他就不詳細(xì)介紹了。

    編輯推薦:


    標(biāo)簽:大數(shù)據(jù)Hadoop

    本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@evget.com


    為你推薦

    相關(guān)產(chǎn)品
    軟件
  • 產(chǎn)品功能:工業(yè)數(shù)據(jù)采集軟件
  • 源 碼:開(kāi)源
  • 產(chǎn)品編號(hào):13444
  • 當(dāng)前版本:v2.6.1 [銷(xiāo)售以商家最新版為準(zhǔn),如需其他版本,請(qǐng)來(lái)電咨詢(xún)]
  • 開(kāi) 發(fā) 商: Apache 正式授權(quán)
  • ">Hadoop

    Hadoop是一個(gè)允許跨集群的分布式處理大型數(shù)據(jù)集的開(kāi)源軟件

    軟件
  • 產(chǎn)品功能:大數(shù)據(jù)分析工具
  • 源 碼:非開(kāi)源
  • 產(chǎn)品編號(hào):13733
  • 當(dāng)前版本: [銷(xiāo)售以商家最新版為準(zhǔn),如需其他版本,請(qǐng)來(lái)電咨詢(xún)]
  • 開(kāi) 發(fā) 商: IBM 正式授權(quán)
  • ">IBM BigInsights for Apache Hadoop

    經(jīng)濟(jì)高效地存儲(chǔ)、管理和分析大數(shù)據(jù)

    title
    title
    掃碼咨詢(xún)


    添加微信 立即咨詢(xún)

    電話(huà)咨詢(xún)

    客服熱線(xiàn)
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();