Hadoop1.X集羣徹底分佈式模式環境部署

Hadoop1.X集羣徹底分佈式模式環境部署

1 Hadoop簡介

Hadoop是Apache軟件基金會旗下的一個開源分佈式計算平臺。以Hadoop分佈式文件系統(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的開源實現)爲核心的Hadoop爲用戶提供了系統底層細節透明的分佈式基礎架構。java

對於Hadoop的集羣來說,能夠分紅兩大類角色:Master和Salve。一個HDFS集羣是由一個NameNode和若干個DataNode組成的。其中NameNode做爲主服務器,管理文件系統的命名空間和客戶端對文件系統的訪問操做;集羣中的DataNode管理存儲的數據。MapReduce框架是由一個單獨運行在主節點上的JobTracker和運行在每一個集羣從節點的TaskTracker共同組成的。主節點負責調度構成一個做業的全部任務,這些任務分佈在不一樣的從節點上。主節點監控它們的執行狀況,而且從新執行以前的失敗任務;從節點僅負責由主節點指派的任務。當一個Job被提交時,JobTracker接收到提交做業和配置信息以後,就會將配置信息等分發給從節點,同時調度任務並監控TaskTracker的執行。
從上面的介紹能夠看出,HDFS和MapReduce共同組成了Hadoop分佈式系統體系結構的核心。HDFS在集羣上實現分佈式文件系統,MapReduce在集羣上實現了分佈式計算和任務處理。HDFS在MapReduce任務處理過程當中提供了文件操做和存儲等支持,MapReduce在HDFS的基礎上實現了任務的分發、跟蹤、執行等工做,並收集結果,兩者相互做用,完成了Hadoop分佈式集羣的主要任務。node

2 實驗環境

  • 操做平臺:parallers Desktop
  • 操做系統:CentOS 6.5
  • 軟件版本:hadoop-1.2.1.tar.gz,jdk-8u121-linux-x64.tar.gz
  • 集羣架構:包括4個節點:1個Master,3個Salve,節點之間局域網鏈接,能夠相互ping通。
    linux

  • 節點IP地址分佈以下:apache

主機名 IP 系統版本 Hadoop node hadoop進程名
Master 192.168.33.200 CentOS 6.5 master namenode,jobtracker
Slave1 192.168.33.201 CentOS 6.5 slave datanode,tasktracker
Slave2 192.168.33.202 CentOS 6.5 slave datanode,tasktracker
Slave3 192.168.33.203 CentOS 6.5 slave datanode,tasktracker

四個節點上均是CentOS 6.5系統,而且有一個相同的用戶hadoop。Master機器主要配置NameNode和JobTracker的角色,負責總管分佈式數據和分解任務的執行;3個Salve機器配置DataNode和TaskTracker的角色,負責分佈式數據存儲以及任務的執行。vim

2.1 配置網絡

四臺虛擬機按照上面的網絡環境來進行配置主機名靜態iphosts映射瀏覽器

1.修改主機名服務器

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Master

2.修改ip地址網絡

vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO="static" #dhcp改成static 
ONBOOT="yes" #開機啓用本配置
IPADDR=192.168.33.200 #靜態IP
GATEWAY=192.168.33.1 #默認網關
NETMASK=255.255.255.0 #子網掩碼

service network restart架構

3.修改ip地址和主機名的映射關係app

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.33.200 Master
192.168.33.201 Slave1
192.168.33.202 Slave2
192.168.33.203 Slave3

4.關閉iptables並設置其開機啓動/不啓動
service iptables stop
chkconfig iptables on
chkconfig iptables off

2.2 安裝JDK

在4臺機器上分別配置好jdk

1.上傳jdk-8u121-linux-x64.tar.gz到Linux上
2.解壓jdk到/usr/local目錄
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/
3.設置環境變量,在/etc/profile文件最後追加相關內容

vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

4.刷新環境變量
source /etc/profile
5.測試java命令是否可用
java -version

2.3 建立用戶

  1. 建立新用戶
[root@localhost ~]# adduser cmj

爲這個用戶初始化密碼,linux會判斷密碼複雜度,不過能夠強行忽略:

[root@localhost ~]# passwd cmj
更改用戶 cmj 的密碼 
新的 密碼:
無效的密碼: 密碼未經過字典檢查 - 過於簡單化/系統化
從新輸入新的 密碼:
passwd:全部的身份驗證令牌已經成功更新。

2.受權

[root@localhost ~]# ls -l /etc/sudoers
-r--r----- 1 root root 4251 9月  25 15:08 /etc/sudoers

sudoers只有只讀的權限,若是想要修改的話,須要先添加w權限:

[root@localhost ~]# chmod -v u+w /etc/sudoers
mode of "/etc/sudoers" changed from 0440 (r--r-----) to 0640 (rw-r-----)

而後就能夠添加內容了,在下面的一行下追加新增的用戶:

[root@localhost ~]# vim /etc/sudoers
## Allow root to run any commands anywher  
root    ALL=(ALL)       ALL  
cmj  ALL=(ALL)       ALL  #這個是新增的用戶

wq保存退出,這時候要記得將寫權限收回:

[root@localhost ~]# chmod -v u-w /etc/sudoers
mode of "/etc/sudoers" changed from 0640 (rw-r-----) to 0440 (r--r-----)

這時候使用新用戶登陸,使用sudo:
第一次使用會提示你,你已經化身超人,身負責任。並且須要輸入密碼才能夠下一步。若是不想須要輸入密碼怎麼辦,將最後一個ALL修改爲NOPASSWD: ALL

3 先決條件

  • 1) 確保在你集羣中的每一個節點上都安裝了全部必需軟件:sun-JDK ssh Hadoop。
  • 2) JavaTM1.5.x,必須安裝,建議選擇Sun公司發行的Java版本。
  • 3) ssh 必須安裝而且保證 sshd一直運行,以便用Hadoop 腳本管理遠端Hadoop守護進程。
  • 4) 關閉防火牆和SELinux

4 SSH免密登錄

在Hadoop啓動之後,Namenode是經過SSH(Secure Shell)來啓動和中止各個datanode上的各類守護進程的,這就需要在節點之間執行指令的時候是不需要輸入密碼的形式,故咱們需要配置SSH運用無密碼公鑰認證的形式。以本文中的四臺機器爲例,如今Master是主節點,他需要鏈接Slave一、Slave2和Slave3。需要肯定每臺機器上都安裝了ssh,而且datanode機器上sshd服務已經啓動。
切換到hadoop用戶( 保證用戶hadoop能夠無需密碼登陸,由於咱們後面安裝的hadoop屬主是hadoop用戶。)須要使得Master到Slave1,Slave2,Slave3免密登錄,以及Slave1,Slave2,Slave3到Master的免密登錄,以及Master,Slave1,Slave2,Slave3到自身迴環口的免密登錄

1) 在每臺主機生成密鑰對

注意是在cmj用戶之下,而不是root,由於咱們最終是要使用cmj用戶來使用hadoop,而你在cmj用戶下配置免密登錄後,切換至root用戶或者其餘用戶的使用ssh登錄時,仍然須要密碼。

#su cmj
#ssh-keygen -t rsa
#cat ~/.ssh/id_rsa.pub

這個命令生成一個密鑰對:id_rsa(私鑰文件)和id_rsa.pub(公鑰文件)。默認被保存在~/.ssh/目錄下。

2) 將Master公鑰添加到遠程主機Slave1的 authorized_keys 文件中

在/home/cmj/.ssh/下建立authorized_keys
上傳Master公鑰到Slave1中:

#scp /home/cmj/.ssh/id_rsa.pub cmj@slave1:/home/cmj/

到slave1中將剛纔複製的公鑰追加到authorized_keys中

#cd ~
#cat id_rsa.pub >> .ssh/authorized_keys
#rm -f id_rsa.pub  #刪除Master複製到slave1下的臨時key

權限設置爲600.(這點很重要,網沒有設置600權限會致使登錄失敗)

#chmod 600 .ssh/authorized_keys

測試登錄

$ ssh Slave1
The authenticity of host 'Master (192.168.33.200)' can't be established.
RSA key fingerprint is d5:18:cb:5f:92:66:74:c7:30:30:bb:36:bf:4c:ed:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'Master,192.168.33.200' (RSA) to the list of known hosts.
Last login: Fri Aug 30 21:31:36 2013 from slave1
[cmj@Slave1 ~]$

一樣的方法,將Master 的公鑰複製到其餘節點。另外自身節點要設置免密登錄。把自身的公鑰追加到自身的authorized_keys中。

3)配置好其餘的免密登錄

步驟相似上面。

三、安裝Hadoop

1) 切換爲cmj用戶,下載安裝包後,直接解壓安裝便可:

#su cmj
#wget http://apache.stu.edu.tw/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
#tar -zxvf hadoop-1.2.1.tar.gz

個人安裝目錄爲:
/home/cmj/hadoop-1.2.1
爲了方便,使用hadoop命令或者start-all.sh等命令,修改Master上/etc/profile 新增如下內容:

export HADOOP_HOME=/home/cmj/hadoop-1.2.1
export PATH=$PATH:$HADOOP_HOME/bin

修改完畢後,執行source /etc/profile 來使其生效。

2) 配置conf/hadoop-env.sh文件

配置conf/hadoop-env.sh文件,添加:
export JAVA_HOME=/usr/local/jdk1.8.0_121/
這裏修改成你的jdk的安裝位置。
測試hadoop安裝:

/home/cmj/hadoop-1.2.1/bin/hadoop jar hadoop-0.20.2-examples.jarwordcount conf/ /tmp/out

四、集羣配置(全部節點相同)

1) 配置文件:conf/core-site.xml

<configuration>
<property> 
<name>fs.default.name</name>
<value>Master:9000</value>
</property> 
 
<property> 
<name>hadoop.tmp.dir</name>
<value>/home/cmj/tmp</value>
</property> 
</configuration>

fs.default.name是NameNode的URI。hdfs://主機名:端口/
hadoop.tmp.dir :Hadoop的默認臨時路徑,這個最好配置,若是在新增節點或者其餘狀況下莫名其妙的DataNode啓動不了,就刪除此文件中的tmp目錄便可。不過若是刪除了NameNode機器的此目錄,那麼就須要從新執行NameNode格式化的命令。

2) 配置文件:conf/mapred-site.xml

<configuration>
<property> 
<name>mapred.job.tracker</name>
<value>hdfs://Master:9001</value>
</property>

mapred.job.tracker是JobTracker的主機(或者IP)和端口。主機:端口。

3) 配置文件:conf/hdfs-site.xml

<configuration>

<property> 
<name>dfs.replication</name>
<value>3</value>
</property> 
</configuration>

dfs.name.dir是NameNode持久存儲名字空間及事務日誌的本地文件系統路徑。 當這個值是一個逗號分割的目錄列表時,nametable數據將會被複制到全部目錄中作冗餘備份。
dfs.data.dir是DataNode存放塊數據的本地文件系統路徑,逗號分割的列表。 當這個值是逗號分割的目錄列表時,數據將被存儲在全部目錄下,一般分佈在不一樣設備上。
dfs.replication是數據須要備份的數量,默認是3,若是此數大於集羣的機器數會出錯。
注意:此處的name一、name二、data一、data2目錄不能預先建立,hadoop格式化時會自動建立,若是預先建立反而會有問題。

4) 配置masters和slaves主從結點

配置conf/masters和conf/slaves來設置主從結點,注意最好使用主機名,而且保證機器之間經過主機名能夠互相訪問,每一個主機名一行。
$vim masters:
輸入:
Master
$vim slaves:
輸入:

Slave1
Slave2
Slave3

配置結束,把配置好的hadoop文件夾拷貝到其餘集羣的機器中,而且保證上面的配置對於其餘機器而言正確,例如:若是其餘機器的Java安裝路徑不同,要修改conf/hadoop-env.sh

$scp -r /home/cmj/hadoop-1.2.1 Slave1:/home/cmj/
$scp -r /home/cmj/hadoop-1.2.1 Slave2:/home/cmj/
$scp -r /home/cmj/hadoop-1.2.1 Slave3:/home/cmj/

五、hadoop啓動

1) 格式化一個新的分佈式文件系統

$ cd /home/cmj/hadoop-1.2.1 
$ bin/hadoop namenode -format

成功狀況下系統輸出:

Warning: $HADOOP_HOME is deprecated.
 
13/09/10 16:39:31 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = Master/192.168.137.100
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.2.1
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG: java = 1.6.0_45
************************************************************/
13/09/10 16:39:32 INFO util.GSet: Computing capacity for map BlocksMap
13/09/10 16:39:32 INFO util.GSet: VM type = 64-bit
13/09/10 16:39:32 INFO util.GSet: 2.0% max memory = 1013645312
13/09/10 16:39:32 INFO util.GSet: capacity = 2^21 = 2097152 entries
13/09/10 16:39:32 INFO util.GSet: recommended=2097152, actual=2097152
13/09/10 16:39:32 INFO namenode.FSNamesystem: fsOwner=hadoop
13/09/10 16:39:32 INFO namenode.FSNamesystem: supergroup=supergroup
13/09/10 16:39:32 INFO namenode.FSNamesystem: isPermissionEnabled=true
13/09/10 16:39:32 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
13/09/10 16:39:32 INFO namenode.FSNamesystem: isAccessTokenEnabled=falseaccessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
13/09/10 16:39:32 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0
13/09/10 16:39:32 INFO namenode.NameNode: Caching file names occuring more than 10 times
13/09/10 16:39:33 INFO common.Storage: Image file /home/hadoop/name1/current/fsimage of size 112 bytes saved in 0 seconds.
13/09/10 16:39:33 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/home/hadoop/name1/current/edits
13/09/10 16:39:33 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/home/hadoop/name1/current/edits
13/09/10 16:39:33 INFO common.Storage: Storage directory /home/hadoop/name1 has been successfully formatted.
13/09/10 16:39:33 INFO common.Storage: Image file /home/hadoop/name2/current/fsimage of size 112 bytes saved in 0 seconds.
13/09/10 16:39:33 INFO namenode.FSEditLog: closing edit log: position=4, editlog= /home/hadoop/name2/current/edits
13/09/10 16:39:33 INFO namenode.FSEditLog: close success: truncate to 4, editlog= /home/hadoop/name2/current/edits
13/09/10 16:39:33 INFO common.Storage: Storage directory /home/hadoop/name2 has been successfully formatted.
13/09/10 16:39:33 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at Master/192.168.137.100
************************************************************/

查看輸出保證分佈式文件系統格式化成功執行完後能夠到master機器上看到/home/hadoop//name1和/home/hadoop/name2兩個目錄。在主節點master上面啓動hadoop,主節點會啓動全部從節點的hadoop。

2) 啓動全部節點

啓動方式1:

$ bin/start-all.sh
(同時啓動HDFS和Map/Reduce)系統輸出:

$ bin/start-all.sh
Warning: $HADOOP_HOME is deprecated.
 
starting namenode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-namenode-Master.out
Slave3: starting datanode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-Slave3.out
Slave2: starting datanode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-Slave2.out
Slave1: starting datanode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-datanode-Slave1.out
The authenticity of host 'master (192.168.137.100)' can't be established.
RSA key fingerprint is d5:18:cb:5f:92:66:74:c7:30:30:bb:36:bf:4c:ed:e9.
Are you sure you want to continue connecting (yes/no)? yes
Master: Warning: Permanently added 'master,192.168.137.100' (RSA) to the list of known hosts.
hadoop@master's password:
Master: starting secondarynamenode, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-secondarynamenode-Master.out
starting jobtracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-jobtracker-Master.out
Slave2: starting tasktracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-tasktracker-Slave2.out
Slave3: starting tasktracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-tasktracker-Slave3.out
Slave1: starting tasktracker, logging to /home/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-hadoop-tasktracker-Slave1.out

執行完後能夠到master(Master)和slave(Slave1,Slave2,Slave3)機器上看到/home/hadoop/hadoopfs/data1和/home/hadoop/data2兩個目錄。

啓動方式2:

啓動Hadoop集羣須要啓動HDFS集羣和Map/Reduce集羣。
在分配的NameNode上,運行下面的命令啓動HDFS:
$ bin/start-dfs.sh
(單獨啓動HDFS集羣)
bin/start-dfs.sh腳本會參照NameNode上${HADOOP_CONF_DIR}/slaves文件的內容,在全部列出的slave上啓動DataNode守護進程。
在分配的JobTracker上,運行下面的命令啓動Map/Reduce:$bin/start-mapred.sh
(單獨啓動Map/Reduce)
bin/start-mapred.sh腳本會參照JobTracker上${HADOOP_CONF_DIR}/slaves文件的內容,在全部列出的slave上啓動TaskTracker守護進程。

3) 關閉全部節點

從主節點master關閉hadoop,主節點會關閉全部從節點的hadoop。
$ bin/stop-all.sh
Hadoop守護進程的日誌寫入到 ${HADOOP_LOG_DIR}目錄 (默認是 ${HADOOP_HOME}/logs).
${HADOOP_HOME}就是安裝路徑.

六、測試

1) 用jps檢驗各後臺進程是否成功啓動

--在master節點查看後臺進程

$ /usr/local/jdk1.6.0_45/bin/jps
3180 Jps
2419 SecondaryNameNode
2236 NameNode
2499 JobTracker

--在slave節點查看後臺進程

$ /usr/local/jdk1.6.0_45/bin/jps
2631 Jps
2277 DataNode
2365 TaskTracker

2) 經過用瀏覽器和http訪問NameNode和JobTracker的網絡接口:

NameNode – http://Master:50070/dfshealth.jsp

http://master:50030

3) 測試worldcount程序

對剛剛安裝好的hadoop集羣作個測試

準備兩個數據文件test1.txt,test2.txt,將其put到hadoop的file system的in裏面

說明:bin/hadoop fs -put ../input ./in:將當前目錄下的input文件夾拷貝到hadoop文件系統的in文件夾裏面

測試

[cmj@Master hadoop-1.2.1]$ bin/hadoop jar hadoop-examples-1.2.1.jar  wordcount in out
17/04/16 19:50:37 INFO input.FileInputFormat: Total input paths to process : 2
17/04/16 19:50:37 INFO util.NativeCodeLoader: Loaded the native-hadoop library
17/04/16 19:50:37 WARN snappy.LoadSnappy: Snappy native library not loaded
17/04/16 19:50:37 INFO mapred.JobClient: Running job: job_201704161933_0001
17/04/16 19:50:38 INFO mapred.JobClient:  map 0% reduce 0%
17/04/16 19:50:45 INFO mapred.JobClient:  map 100% reduce 0%
17/04/16 19:50:54 INFO mapred.JobClient:  map 100% reduce 33%
17/04/16 19:50:55 INFO mapred.JobClient:  map 100% reduce 100%
17/04/16 19:50:57 INFO mapred.JobClient: Job complete: job_201704161933_0001
17/04/16 19:50:57 INFO mapred.JobClient: Counters: 29
17/04/16 19:50:57 INFO mapred.JobClient:   Map-Reduce Framework
17/04/16 19:50:57 INFO mapred.JobClient:     Spilled Records=8
17/04/16 19:50:57 INFO mapred.JobClient:     Map output materialized bytes=61
17/04/16 19:50:57 INFO mapred.JobClient:     Reduce input records=4
17/04/16 19:50:57 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=5800771584
17/04/16 19:50:57 INFO mapred.JobClient:     Map input records=2
17/04/16 19:50:57 INFO mapred.JobClient:     SPLIT_RAW_BYTES=210
17/04/16 19:50:57 INFO mapred.JobClient:     Map output bytes=41
17/04/16 19:50:57 INFO mapred.JobClient:     Reduce shuffle bytes=61
17/04/16 19:50:57 INFO mapred.JobClient:     Physical memory (bytes) snapshot=395091968
17/04/16 19:50:57 INFO mapred.JobClient:     Reduce input groups=3
17/04/16 19:50:57 INFO mapred.JobClient:     Combine output records=4
17/04/16 19:50:57 INFO mapred.JobClient:     Reduce output records=3
17/04/16 19:50:57 INFO mapred.JobClient:     Map output records=4
17/04/16 19:50:57 INFO mapred.JobClient:     Combine input records=4
17/04/16 19:50:57 INFO mapred.JobClient:     CPU time spent (ms)=1470
17/04/16 19:50:57 INFO mapred.JobClient:     Total committed heap usage (bytes)=324055040
17/04/16 19:50:57 INFO mapred.JobClient:   File Input Format Counters 
17/04/16 19:50:57 INFO mapred.JobClient:     Bytes Read=25
17/04/16 19:50:57 INFO mapred.JobClient:   FileSystemCounters
17/04/16 19:50:57 INFO mapred.JobClient:     HDFS_BYTES_READ=235
17/04/16 19:50:57 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=160505
17/04/16 19:50:57 INFO mapred.JobClient:     FILE_BYTES_READ=55
17/04/16 19:50:57 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=25
17/04/16 19:50:57 INFO mapred.JobClient:   Job Counters 
17/04/16 19:50:57 INFO mapred.JobClient:     Launched map tasks=2
17/04/16 19:50:57 INFO mapred.JobClient:     Launched reduce tasks=1
17/04/16 19:50:57 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=10333
17/04/16 19:50:57 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
17/04/16 19:50:57 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=10492
17/04/16 19:50:57 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
17/04/16 19:50:57 INFO mapred.JobClient:     Data-local map tasks=2
17/04/16 19:50:57 INFO mapred.JobClient:   File Output Format Counters 
17/04/16 19:50:57 INFO mapred.JobClient:     Bytes Written=25

4) 使用s查看端口9000和9001是否正在使用。

HDFS操做
運行bin/目錄的hadoop命令,能夠查看Haoop全部支持的操做及其用法,這裏以幾個簡單的操做爲例。
創建目錄

$bin/hadoop dfs -mkdir testdir
Warning: $HADOOP_HOME is deprecated.
 
13/09/10 17:29:05 WARN fs.FileSystem: "Master:9000" is a deprecated filesystem name. Use"hdfs://Master:9000/" instead.

在HDFS中創建一個名爲testdir的目錄
複製文件

$ bin/hadoop dfs -put /home/hadoop/hadoop-1.2.1.tar.gz testfile.zip
Warning: $HADOOP_HOME is deprecated.
 
13/09/10 17:30:32 WARN fs.FileSystem: "Master:9000" is a deprecated filesystem name. Use"hdfs://Master:9000/" instead.
13/09/10 17:30:33 WARN fs.FileSystem: "Master:9000" is a deprecated filesystem name. Use"hdfs://Master:9000/" instead

把本地文件/home/hadoop/hadoop-1.2.1.tar.gz拷貝到HDFS的根目錄/user/hadoop/下,文件名爲testfile.zip
查看現有文件

$ bin/hadoop dfs -ls
Warning: $HADOOP_HOME is deprecated.
 
13/09/10 17:32:00 WARN fs.FileSystem: "Master:9000" is a deprecated filesystem name. Use"hdfs://Master:9000/" instead.
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2013-09-10 17:29 /user/hadoop/testdir
-rw-r--r-- 3 hadoop supergroup 63851630 2013-09-10 17:30 /user/hadoop/testfile.zip

7 常見問題

Hadoop1x。 出現Warning: $HADOOP_HOME is deprecated.的解決方案

經過啓動或中止hadoop咱們會發現會出現 「Warning: $HADOOP_HOME is deprecated」 這樣一個警告,下面給出解決方案:

第一種:去除/etc/profileexport HADOOP_HOME=/home/cmj/hadoop-1.2.1,而後source /etc/profile


不過咱們通常推薦第二種,由於咱們仍是須要$HADOOP_HOME的,方便引用。

因此咱們通常在/etc/profile文件最後加上 export HADOOP_HOME_WARN_SUPPRESS=1 ,而後輸入命令source /etc/profile使其生效便可。

相關文章
相關標籤/搜索