原創(chuàng)|行業(yè)資訊|編輯:陳俊吉|2017-05-03 09:40:35.000|閱讀 181 次
概述:其實參看Hadoop官方文檔已經(jīng)能夠很容易配置分布式框架運行環(huán)境了,不過這里既然寫了就再多寫一點,同時有一些細節(jié)需要注意的也說明一下,其實也就是這些細節(jié)會讓人摸索半天。Hadoop可以單機跑,也可以配置集群跑,單機跑就不需要多說了,只需要按照Demo的運行說明直接執(zhí)行命令即可。這里主要重點說一下集群配置運行的過程。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
其實參看官方文檔已經(jīng)能夠很容易配置分布式框架運行環(huán)境了,不過這里既然寫了就再多寫一點,同時有一些細節(jié)需要注意的也說明一下,其實也就是這些細節(jié)會讓人摸索半天。Hadoop可以單機跑,也可以配置集群跑,單機跑就不需要多說了,只需要按照Demo的運行說明直接執(zhí)行命令即可。這里主要重點說一下集群配置運行的過程。
7臺普通的機器,操作系統(tǒng)都是Linux。內(nèi)存和CPU就不說了,反正Hadoop一大特點就是機器在多不在精。JDK必須是1.5以上的,這個切記。7臺機器的機器名務(wù)必不同,后續(xù)會談到機器名對于有很大的影響。
正如上面我描述的,對于Hadoop的集群來說,可以分成兩大類角色:Master和Slave,前者主要配置NameNode和JobTracker的角色,負責(zé)總管分布式數(shù)據(jù)和分解任務(wù)的執(zhí)行,后者配置DataNode和TaskTracker的角色,負責(zé)分布式數(shù)據(jù)存儲以及任務(wù)的執(zhí)行。本來我打算看看一臺機器是否可以配置成Master,同時也作為Slave使用,不過發(fā)現(xiàn)在NameNode初始化的過程中以及TaskTracker執(zhí)行過程中機器名配置好像有沖突(NameNode和TaskTracker對于Hosts的配置有些沖突,究竟是把機器名對應(yīng)IP放在配置前面還是把Localhost對應(yīng)IP放在前面有點問題,不過可能也是我自己的問題吧,這個大家可以根據(jù)實施情況給我反饋)。最后反正決定一臺Master,六臺Slave,后續(xù)復(fù)雜的應(yīng)用開發(fā)和測試結(jié)果的比對會增加機器配置。
以下是一個簡單的hadoop-site.xml的配置:
fs.default.name//你的namenode的配置,機器名加端口 hdfs://10.2.224.46:54310/ mapred.job.tracker//你的JobTracker的配置,機器名加端口 hdfs://10.2.224.46:54311/ dfs.replication//數(shù)據(jù)需要備份的數(shù)量,默認是三 1 hadoop.tmp.dir//Hadoop的默認臨時路徑,這個最好配置,如果在新增節(jié)點或者其他情況下莫名其妙的DataNode啟動不了,就刪除此文件中的tmp目錄即可。不過如果刪除了NameNode機器的此目錄,那么就需要重新執(zhí)行NameNode格式化的命令。 /home/wenchu/hadoop/tmp/ mapred.child.java.opts//java虛擬機的一些參數(shù)可以參照配置 -Xmx512m dfs.block.size//block的大小,單位字節(jié),后面會提到用處,必須是512的倍數(shù),因為采用crc作文件完整性校驗,默認配置512是checksum的最小單元。 5120000 The default block size for new files.
hadoop-env.sh文件只需要修改一個參數(shù):
# The java implementation to use. Required. export JAVA_HOME=/usr/ali/jdk1.5.0_10
配置你的Java路徑,記住一定要1.5版本以上,免得莫名其妙出現(xiàn)問題。
Masters中配置Masters的IP或者機器名,如果是機器名那么需要在/etc/hosts中有所設(shè)置。Slaves中配置的是Slaves的IP或者機器名,同樣如果是機器名需要在/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到每一臺Slave的SSH受信證書。由于Master將會通過SSH啟動所有Slave的Hadoop,所以需要建立單向或者雙向證書保證命令執(zhí)行時不需要再輸入密碼。在Master和所有的Slave機器上執(zhí)行:ssh-keygen -t rsa。執(zhí)行此命令的時候,看到提示只需要回車。然后就會在/root/.ssh/下面產(chǎn)生id_rsa.pub的證書文件,通過scp將Master機器上的這個文件拷貝到Slave上(記得修改名稱),例如: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文件即可,可以打開這個文件看看,也就是rsa的公鑰作為key,user@IP作為value。此時可以試驗一下,從master ssh到slave已經(jīng)不需要密碼了。由slave反向建立也是同樣。為什么要反向呢?其實如果一直都是Master啟動和關(guān)閉的話那么沒有必要建立反向,只是如果想在Slave也可以關(guān)閉Hadoop就需要建立反向。
將Master上的Hadoop通過scp拷貝到每一個Slave相同的目錄下,根據(jù)每一個Slave的Java_HOME的不同修改其hadoop-env.sh。
修改Master上/etc/profile:
新增以下內(nèi)容:(具體的內(nèi)容根據(jù)你的安裝路徑修改,這步只是為了方便使用)
export HADOOP_HOME=/home/wenchu/hadoop-0.17.1
修改完畢后,執(zhí)行source /etc/profile來使其生效。
export PATH=$PATH:$HADOOP_HOME/bin
在Master上執(zhí)行Hadoop namenode –format,這是第一需要做的初始化,可以看作格式化吧,以后除了在上面我提到過刪除了Master上的hadoop.tmp.dir目錄,否則是不需要再次執(zhí)行的。
然后執(zhí)行Master上的start-all.sh,這個命令可以直接執(zhí)行,因為在6中已經(jīng)添加到了path路徑,這個命令是啟動hdfs和mapreduce兩部分,當然你也可以分開單獨啟動hdfs和mapreduce,分別是bin目錄下的start-dfs.sh和start-mapred.sh。
檢查Master的logs目錄,看看Namenode日志以及JobTracker日志是否正常啟動。
檢查Slave的logs目錄看看Datanode日志以及TaskTracker日志是否正常。
如果需要關(guān)閉,那么就直接執(zhí)行stop-all.sh即可。
以上步驟就可以啟動Hadoop的分布式環(huán)境,然后在Master的機器進入Master的安裝目錄,執(zhí)行hadoop jar hadoop-0.17.1-examples.jar wordcount輸入路徑和輸出路徑,就可以看到字數(shù)統(tǒng)計的效果了。此處的輸入路徑和輸出路徑都指的是HDFS中的路徑,因此你可以首先通過拷貝本地文件系統(tǒng)中的目錄到HDFS中的方式來建立HDFS中的輸入路徑:
hadoop dfs -copyFromLocal /home/wenchu/test-in test-in。其中/home/wenchu/test-in是本地路徑,test-in是將會建立在HDFS中的路徑,執(zhí)行完畢以后可以通過hadoop dfs –ls看到test-in目錄已經(jīng)存在,同時可以通過hadoop dfs –ls test-in查看里面的內(nèi)容。輸出路徑要求是在HDFS中不存在的,當執(zhí)行完那個demo以后,就可以通過hadoop dfs –ls 輸出路徑看到其中的內(nèi)容,具體文件的內(nèi)容可以通過hadoop dfs –cat文件名稱來查看。
經(jīng)驗總結(jié)和注意事項(這部分是我在使用過程中花了一些時間走的彎路):
總的來說出了問題或者啟動的時候最好去看看日志,這樣心里有底。
這部分內(nèi)容其實可以通過命令的Help以及介紹了解,我主要側(cè)重于介紹一下我用的比較多的幾個命令。Hadoop dfs 這個命令后面加參數(shù)就是對于HDFS的操作,和Linux操作系統(tǒng)的命令很類似,例如:
Hadoop dfs –ls就是查看/usr/root目錄下的內(nèi)容,默認如果不填路徑這就是當前用戶路徑;
Hadoop dfs –rmr xxx就是刪除目錄,還有很多命令看看就很容易上手;
Hadoop dfsadmin –report這個命令可以全局的查看DataNode的情況;
Hadoop job后面增加參數(shù)是對于當前運行的Job的操作,例如list,kill等;
Hadoop balancer就是前面提到的均衡磁盤負載的命令。
其他就不詳細介紹了。
編輯推薦:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn