centos下hadoop叢集搭建詳細過程
Hadoop叢集搭建全過程
參考操作:課本劉鵬《雲端計算》,劉鵬《實戰hadoop》,上網google
需要軟體:VMware-workstation-9.0.exe;CentOS-6.4-i386-bin-DVD1.iso(3.51G,裡面的外掛比較全,VMtools都不用裝了,可以和windows直接設定共享資料夾,滑鼠也可以直接進出,還可以跨系統直接複製);
一、 安裝centos系統
按照常規安裝,配置如下:普通使用者wzw,密碼123456;超級使用者root,密碼123456;我安裝叢集使用的使用者是grid,密碼grid
1.1、安裝完成後,介面下調節解析度:perfercene——>display可以設定解析度;
有3種方法設定網路連線方式:
1螢幕右下角有個網路連線,雙擊即可設定bridged或者NAT方式,connect 等選項打勾;
2 在vmware下,VM——>setting——>network adapter設定
3 直接在安裝linux的時候有選擇網路連線方式的選項。
說明:bridged橋接方式,和真實機下的ip地址以及子網掩碼,DNS的配置都是一致的。
1.2、配置ip:開啟終端,進行以下操作:
(這是在root使用者下登陸的)
$cat/etc/sysconfig/network-scripts/ifcfg-eth0
$vi/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=static
ONBOOT="yes"
TYPE="Ethernet"
HWADDR=00:0C:29:AC:DE:B0
IPADDR=10.22.73.23
GATEWAY=10.22.73.1
DNS1=210.33.16.2
$service networkrestart
$ifconfig
$ifconfig -a
解釋:
上面就是ip配置,在我的實驗室的環境下的ip設定保持一致。
第一行是網絡卡名字
第二行是設定BOOTPROTO=static (預設是dhcp),手動配置的ip可以重啟後生效
HWADDR 是本機的實體地址,可以用命令ifconfig–a檢視,要求和本機一致
注意是ifconfig,而不是ipconfig
最後三行詩IP,子網掩碼和DNS
重啟後配置生效!
然後和windows機器ping一下,看是否能夠ping通
$ping 10.22.73.21
10.22.73.21是我的win7物理機的IP地址
1.3、虛擬機器下的linux和真實機win7共享資料夾
在win7的E盤下,我建立了資料夾wshare1
VMware下VM——>setting——>options——>sharefloders下設定找到E:\wshare1,對一些選項打上勾,applying即可。
進入linux終端後,可以在/mnt/hdfs/whare1/下看到我的win7下的檔案,並且可以拷貝到linux下,例如拷貝到/usr/java(這個java資料夾是你自己建立的$mkdir java)
$cp /mnt/hdfs/whare1/test /usr/java
二、 安裝SSH和java軟體(三臺機器下都分別安裝最好,
安裝的時候,為了是介面清晰,可以使用putty小軟體連線這3臺機器)
2.1、SSH無密碼驗證配置
用root或者普通使用者wzw登入都行,需要使用哪個使用者無密碼驗證,就使用哪個使用者登入。在這個使用者的root目錄下執行如下命令:
$ssh-keygen -t rsa
通過以上命令將在/root/.ssh/ 目錄下生成id_rsa私鑰和id_rsa.pub公鑰。
$cd /root/.ssh
$ls
若是.ssh目錄下有authorized_keys,則執行
$cat id_rsa.pub > authorized_keys
若是.ssh目錄下沒有authorized_keys,則執行
$cp id_rsa.pub authorized_keys
一般是拷貝
配置完畢,可通過:ssh 本機IP 測試是否需要密碼登入。
$ ssh 10.22.73.23 可以實現用SSH連線並且不需要出入密碼。
注意:10.22.73.23是本linux系統的ip地址,也可以使其他機器的IP,執行這個命令相當於登到了其他機器上,執行exit後才能回到原先的使用者下!注意啊
另外注意拷貝或者追加的是id_rsa.pub而不是id_rsa,名字一定是authorized_keys
測試過程如下:
$ ssh 10.22.73.23
Are you sure you want to continue connecting (yes/no)?yes
$ exit //要是不退出,就是登入到這個IP對應的機器了
$ ssh 10.22.73.23 //第二次再登陸,就不需要輸入yes了,便是成功了
看!可以無密碼登入了。要是不成功,就把.ssh 刪除(rm –rf .ssh),重新配置。
2.2、 JDK安裝及Java環境變數的配置 (注意對應自己的安裝目錄和版本)
JDK安裝 ,首先在JDK官網下載 JDK 安裝包 的linux版本
root 使用者登陸,新建資料夾 /usr/java ,把jdk安裝包(jdk-6u13-linux-i586.bin)放到/usr/java
a)
$cd /usr
$mkdir java
b) 下載的jdk-6u13-linux-i586.bin,通過資料夾共享,複製到目錄/usr/java 下,在命令列進入該目錄,執行命令“./ jdk-6u43-linux-i586.bin”
有時候需要增加可執行許可權,一般情況下不需要下面的操作。
[[email protected] java]#chmod a+xjdk-6u38-linux-x64.bin
[[email protected] java]# ls-lrt
total 70376
-rwxr-xr-x. 1 root root72058033 Jan 2907:21 jdk-6u38-linux-x64.bin
c)
$cp /mnt/hdfs/wshare1/ jdk-6u43-linux-i586.bin /usr/java
$cd /usr/java
$./ jdk-6u43-linux-i586.bin
命令執行完畢,將在目錄下生成資料夾jdk1.6.0_43,安裝完畢。
d) java環境變數配置
root 使用者登陸,命令列中執行命令“vi /etc/profile”,並新增以下內容,配置環境變數(注意/etc/profile 這個檔案很重要,後面 Hadoop 的配置還會用到)。 (註釋:注意對應自己的安裝目錄和版本)
$vi /etc/profile
# set java environment //在profile最後面新增這一段
export JAVA_HOME=/usr/java/jdk1.6.0_43
exportJRE_HOME=/usr/java/jdk1.6.0_43/jre
exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
在vi編輯器增加以上內容後儲存退出,並執行以下命令使配置生效
$chmod +x /etc/profile //增加執行許可權
$source /etc/profile //生效
配置完畢後,在命令列中輸入java -version,如出現下列資訊說明java環境安裝成功。
$ java–version
java version "1.6.0_43"
Java(TM) SE RuntimeEnvironment (build 1.6.0_43-b02)
Java HotSpot(TM) Server VM(build 16.3-b01, mixed mode)
或者使用javac驗證
$javac
三、 Linux(CentOS)下完全分散式安裝hadoop
參考課本《雲端計算》劉鵬P204頁
總共三臺機器設定:
master主機名:cnamenode(專業人士直接使用當前機器的ip作為主機名,ip是10.22.73.23)
Slaves主機名:cdata1和cdata2(2臺slave;ip分別是10.22.73.24和10.22.73.25)
每臺機器上都新增一個相同的普通使用者grid,密碼也為grid
為了簡單,三臺機器普通使用者下的安裝資料夾也一樣,如
都在/home/grid/wzwhadoop下安裝
注意:保證ip配置能用,各機器之間能夠ping通
對於hadoop ,不同的系統會有不同的節點劃分方式。在HDFS看來,節點分為Namenode和Datanode,其中Namenode只有一個,datanode可以有多個;在MapReduce看來,節點又分為jobtracker和tasktracker,其中jobtracker只有一個,而tasktacker可以有多個。namenode和jobtracker可以部署在不同的機器上,也可以部署在同一機器上。部署namenode和/或jobtracker的機器是master,其餘的都是slaves。使用者甚至可以將namenode、datanode、jobtacker、tasktracker都部署在一臺機器上。詳細的配置方法如下。
配置之前,確保所有主機的防火牆處於關閉狀態!!!一定要先關閉防火牆(所有的結點都要),否則後面的datanode啟動會失敗。
永久關閉防火牆: chkconfig iptables off
[[email protected] ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policyACCEPT:filter [ OK ]
iptables: Unloading modules: [ OK ]
最好設定開機就不啟動防火牆:(我是這樣設定,防止以後出錯)
[[email protected] ~]# vi /etc/sysconfig/selinux
SELINUX=disable
(1) 配置NameNode和DataNode
配置成功的關鍵在於確保各機器上的主機名和IP地址之間能正確解析。修改每臺機器的/etc/hosts檔案,如果該臺機器作namenode用,則需要在檔案中新增叢集中所有機器的IP地址及其對應 主機名;如果該臺機器僅作為datanode用,則只需要在檔案中新增本機和namenode的IP地址及其對應的主機名。
對每臺機器,用root使用者登入,修改/etc/hosts
$vi /etc/hosts
[[email protected] /]# cat /etc/hosts
127.0.0.1 localhost
10.22.73.23 cnamenode
10.22.73.24 cdata1
10.22.73.25 cdata2
第一行127.0.0.1環回地址也可以不要,有時候建議不要!
修改後,重新登入系統,才會出現[[email protected] /]的形式。
把另外2臺機器cdata1和cdata2作為DataNode節點,用它們的root使用者登入,分別配置它們的/etc/hosts。如下
[[email protected] /]# cat /etc/hosts
127.0.0.1 localhost
10.22.73.24 cdata1
10.22.73.23 cnamenode
[[email protected] /]# cat /etc/hosts
127.0.0.1 localhost
10.22.73.25 cdata2
10.22.73.23 cnamenode
(2)在所有使用者上建立相同的使用者grid,密碼grid
$useradd –m grid
$passwd grid
(3)SSH 配置:主要是實現master訪問各個slaves不需要輸入密碼。
用主機的grid使用者登入。具體步驟見本文第二部分安裝SSH。三臺機器獨自安裝,
再次敘述如下:
每個機器,就是每臺主機下都執行
$ssh-keygen -t rsa
生成.ssh目錄,這個目錄都有2項id_rsa和id_rsa.pub
這時候進入.ssh,執行
$cd .ssh
$cp id_rsa.pub authorized_keys
測試過程:
[[email protected] .ssh]$ ssh 10.22.73.25 //本機ip
Are you sure you want to continue connecting (yes/no)? yes //第一次要輸入yes
[[email protected] ~]$ exit
[[email protected] .ssh]$ ssh 10.22.73.25
[[email protected] ~]$ exit
[[email protected] .ssh]$
這時候,master的.ssh中有三項,把master的id_rsa.pub分別複製到每個slavers上,並重新命名為master_rsa.pub
如下:登入cdata1
進入目錄.ssh
$cd .ssh
$scp cnamenode:~/.ssh/id_rsa.pub ./master_rsa.pub
[[email protected] .ssh]$ ls
authorized_keys id_rsa id_rsa.pub known_hosts master_rsa.pub
[[email protected] .ssh]$ cat master_rsa.pub > authorized_keys
這時候,master就可以無密碼訪問cdata1了,測試如下:
登入到cnamenode主機:
[[email protected] .ssh]$ ssh 10.22.73.24
Last login: Wed Oct 9 20:03:56 2013from cnamenode
[[email protected] ~]$ exit
logout
Connection to 10.22.73.24 closed.
[[email protected] .ssh]$
對cdata2也進行同樣的操作。這裡不再寫了。
表面上看,這兩個結點的ssh免密碼登入已經配置成功,但是我們還需要對主結點master也要進行上面的同樣工作,這一步有點讓人困惑,但是這是有原因的,具體原因現在也說不太好,據說是真實物理結點時需要做這項工作,因為jobtracker有可能會分佈在其它結點上,jobtracker有不存在master結點上的可能性。
(4)在所有機器上配置Hadoop(使用普通使用者grid登入)
下面首先在cnamenode上配置,hadoop-1.2.0-bin.tar存在win7的E盤下E:\wshare1下,被linux自動掛載在/mnt/hdfs/wshare1下,先拷貝至linux的/home/grid/wzwhadoop下(wzwhadoop是我預先建立的目錄),再解壓,過程如下:
$cp /mnt/hdfs/wshare1/hadoop-1.2.0-bin.tar /home/grid/wzwhadoop
$cd /home/grid/wzwhadoop
$tar –zxvf hadoop-1.2.0-bin.tar
就生成了hadoop-1.2.0目錄,進入此目錄,可以看到conf,bin等一些配置目錄
$cd hadoop-1.2.0
(a) 編輯3個安裝檔案hadoop-1.2.0/conf目錄下的core-site.xml,hdfs-site.xml ,mapred-site.xml 如下:
[[email protected] conf]$ cat core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://cnamenode:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/grid/hadooptmp</value>
</property>
</configuration>
[[email protected] conf]$ cathdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
[[email protected] conf]$ cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>10.22.73.23:9001</value>
</property>
</configuration>
(b)編輯conf/masters,修改為master的主機名,每個主機名佔一行,此處即為cnamenode。
[[email protected] conf]$ cat masters
cnamenode
(c)編輯conf/slaves,加入所有的slaves的主機名,即cdata1和cdata2
[[email protected] conf]$ cat slaves
cdata1
cdata2
(d)把Hadoop安裝資料夾(hadoop-1.2.0)拷貝至cdata1和cdata2機器上
這時候,cdata1和cdata2機器都能ping通,並且實現了SSH無密碼驗證配置。
$scp –r hadoop-1.2.0 cdata1:/home/grid
$scp –r hadoop-1.2.0 cdata2:/home/grid
(e)分別編輯3臺機器上的conf/hadoop-env.sh檔案,將JAVA_HOME變數設定為各自JAVA安裝的根目錄,不同機器可以使用不同的java版本。(為了不產生混淆,最好都裝在相同目錄下,我就是這麼幹的,這裡的java一開始實在各自的超級使用者root下安裝配置的,詳見第二部分)
$vi hadoop-env.sh
配置hadoop-env.sh檔案 ,在檔案hadoop-env.sh的最後面新增以下環境變數
# set java environment
export JAVA_HOME=/usr/java/jdk1.6.0_43
(註釋:注意修改成對應自己的java安裝目錄和版本)
現在hadoop叢集已經部署完成。如果要加入或者刪除節點,只需要修改NameNode的master和slaves檔案。
(5)hadoop執行
注意,在啟動守護程序之前,一定要先關閉防火牆(所有的結點都要),否則datanode啟動失敗。在root下修改。
[[email protected] ~]#/etc/init.d/iptables stop
iptables: Flushingfirewall rules: [ OK ]
iptables: Setting chainsto policy ACCEPT:filter [ OK ]
iptables: Unloadingmodules: [ OK ]
最好設定開機就不啟動防火牆:
[[email protected] ~]# vi/etc/sysconfig/selinux
SELINUX=disable
用普通使用者grid登入。格式化檔案系統,啟動守護程序的命令如下:
$cd hadoop-1.2.0
$bin/hadoop namenode –format
執行結果如下:
[[email protected]]$ bin/hadoop namenode -format
13/10/10 05:03:50 INFOnamenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = cnamenode/10.22.73.23
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.2.0
STARTUP_MSG: build =https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473;compiled by 'hortonfo' on Mon May 6 06:59:37UTC 2013
STARTUP_MSG: java = 1.6.0_43
************************************************************/
Re-format filesystem in/home/grid/hadooptmp/dfs/name ? (Y or N) Y
13/10/10 05:03:54 INFOutil.GSet: Computing capacity for map BlocksMap
13/10/10 05:03:54 INFOutil.GSet: VM type = 32-bit
13/10/10 05:03:54 INFOutil.GSet: 2.0% max memory = 1013645312
13/10/10 05:03:54 INFOutil.GSet: capacity = 2^22 = 4194304entries
13/10/10 05:03:54 INFOutil.GSet: recommended=4194304, actual=4194304
13/10/10 05:03:54 INFOnamenode.FSNamesystem: fsOwner=grid
13/10/10 05:03:54 INFOnamenode.FSNamesystem: supergroup=supergroup
13/10/10 05:03:54 INFOnamenode.FSNamesystem: isPermissionEnabled=true
13/10/10 05:03:54 INFOnamenode.FSNamesystem: dfs.block.invalidate.limit=100
13/10/10 05:03:54 INFOnamenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0min(s), accessTokenLifetime=0 min(s)
13/10/10 05:03:54 INFOnamenode.FSEditLog: dfs.namenode.edits.toleration.length = 0
13/10/10 05:03:54 INFOnamenode.NameNode: Caching file names occuring more than 10 times
13/10/10 05:03:54 INFOcommon.Storage: Image file of size 110 saved in 0 seconds.
13/10/10 05:03:54 INFOnamenode.FSEditLog: closing edit log: position=4, editlog=/home/grid/hadooptmp/dfs/name/current/edits
13/10/10 05:03:54 INFOnamenode.FSEditLog: close success: truncate to 4,editlog=/home/grid/hadooptmp/dfs/name/current/edits
13/10/10 05:03:54 INFOcommon.Storage: Storage directory /home/grid/hadooptmp/dfs/name has beensuccessfully formatted.
13/10/10 05:03:54 INFOnamenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shuttingdown NameNode at cnamenode/10.22.73.23
************************************************************/
注意出現“successfully formatted”,說明格式化成功!接著
[[email protected]]$ bin/start-all.sh
starting namenode, loggingto/home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-namenode-cnamenode.out
cdata2: starting datanode,logging to /home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-datanode-cdata2.out
cdata1: starting datanode,logging to/home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-datanode-cdata1.out
cnamenode: startingsecondarynamenode, logging to /home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-secondarynamenode-cnamenode.out
starting jobtracker,logging to/home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-jobtracker-cnamenode.out
cdata1: startingtasktracker, logging to /home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-tasktracker-cdata1.out
cdata2: startingtasktracker, logging to/home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-tasktracker-cdata2.out
[[email protected]]$ jps
15127 Jps
14750 NameNode
14923 SecondaryNameNode
15010 JobTracker
Jps檢視程序有4項(Jps,NameNode, SecondaryNameNode,JobTracker)出現上述情況表示安裝成功!
在slaves下檢視,如下(包括jps有3個程序,必須要有DataNodehe和TaskTracker):
[[email protected] hadoop-1.2.0]$ jps
7130 TaskTracker
7202 Jps
7040 DataNode
[[email protected] ~]$ jps
7145 TaskTracker
7217 Jps
7041 DataNode
註釋:當這項啟動不成功的時候,檢查:臨時資料夾hadooptmp有木有刪除;各機器防火牆有木有關閉;hadoop-grid-namenode-cnamenode.out等這些檔案的許可權有沒有chmod 777。後2個操作都是在root使用者下進行的
關閉hadoop程序,在cnamenode主機grid使用者下,進入hadoop安裝目錄下,如下:
$bin/stop-all.sh
再次啟動hadoop的時候,要重新格式化namenode,注意:格式化之前必須刪除namenode及datanode上的tmp資料夾,tmp資料夾就是core-site.xml檔案裡hadoop.tmp.dir所指定的資料夾。防止格式化造成的namespaceID不一致,不過格式化後hdfs上的資料會丟失。操作如下:
$cd /home/grid/
$rm –rf hadooptmp
(6)在瀏覽器下輸入地址檢視:
(7)執行wordcount例項。
假如資料夾/home/grid/下有個input.txt檔案。
[[email protected] hadoop-1.2.0]$ bin/hadoop dfs -put/home/grid/input.txt in
[[email protected] hadoop-1.2.0]$ bin/hadoop dfs –ls
[[email protected] hadoop-1.2.0]$ bin/hadoop jar hadoop-examples-1.2.0.jarwordcount in out
// 可以統計數結果
[[email protected] hadoop-1.2.0]$ bin/hadoop dfs -cat out/*
也可以把檔案複製到本地檢視
[[email protected] hadoop-1.2.0]$ bin/hadoop dfs -get out output
[[email protected] hadoop-1.2.0]$cat output/*
停止hadoop守護程序。
[[email protected] hadoop-1.2.0]$ bin/stop-all.sh
stopping jobtracker
cdata2: stopping tasktracker
cdata1: stopping tasktracker
stopping namenode
cdata2: stopping datanode
cdata1: stopping datanode
cnamenode: stopping secondarynamenode
附加:
可用到的命令:
$find –name 檔名 //查詢某個檔案在哪
安裝中有可能出現問題的幾大塊是:防火牆,ssh配置,java安裝,hadoop配置,檔案許可權賦予。可能出現的問題:
1、java到底安裝在超級使用者還是普通使用者?
我是安裝在超級使用者root下的,這樣修改環境變數更容易一些,不需要許可權的限制了。
2、防火牆:一定要先關閉所有機器的防火牆,最好設定成開機不啟動,如文中所述。
3、SSH配置,一定要安裝文中的步驟,不成功就刪除重新配置!在這我走了不少彎路。
4、hadoop配置,一定要注意每個細節,知道每個檔案代表的什麼意思。
5、檔案許可權賦予,文中也有提到。chmod這個命令實在root使用者下使用的!
6、其他問題:
1 datanode無法啟動,在master主節點機器上,/home/grid/hadoop安裝資料夾下,輸入$bin/hadoopdfsadmin -report檢視叢集啟動情況,發現datanode根本沒有起起來,或者格式化所有節點的時候,根本不successful
解決 :首先檢查各個xml配置檔案是否正確寫入,jdk環境變數是否寫了,ssh是否通,也可能提示你core-site.xml檔案裡面有錯誤,xml檔案裡第一行不能是空行,如果是自己寫的很有可能是最上面兩行之間有空行,或者全形字元,這時就從master主機中把同樣的檔案用scp命令傳到slave主機,覆蓋掉原來的檔案即可
以上操作都是在bin/stop-all.sh之下操作的,必須先停掉所有節點
刪除所有tmp資料夾和logs資料夾,tmp檔案就是core-site.xml檔案裡hadoop.tmp.dir所指定的資料夾,logs在/home/hadoop/hadoop安裝資料夾 下,然後再重新格式化所有節點,start-all.sh
2 master上NameNade,JobTrackerand SecondNamenode守護程序成功啟動,但是在node1和node2上的DatanNode沒有啟動成功,可能原因: 由於master的/etc/hosts配置中把主機名和127.0.0.1繫結,要把這項刪掉,並配置實際IP與主機名的對映,這樣namenode才能在正確監聽。最有可能是namenode和datanode的namespaceID不一致.
3 若出現:
[[email protected]]$ bin/start-all.sh
starting namenode, loggingto /home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-namenode-cnamenode.out
log4j:ERRORsetFile(null,true) call failed.
java.io.FileNotFoundException:/home/grid/wzwhadoop/hadoop-1.2.0/libexec/../logs/hadoop-grid-namenode-cnamenode.log(Permission denied)
at java.io.FileOutputStream.openAppend(Native Method)
atjava.io.FileOutputStream.<init>(FileOutputStream.java:192)
atjava.io.FileOutputStream.<init>(FileOutputStream.java:116)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
atorg.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
解決方法:修改錯誤中提示的所有不能找到的logs裡檔案的許可權,之後重啟hadoop叢集(logs直接在hadoop安裝目錄下)
[[email protected] logs]# chmod 777hadoop-grid-namenode-cnamenode.out
[[email protected] logs]#chmod 777 hadoop-hadoop-jobtracker-grid.out.5
[[email protected] logs]# chmod 777hadoop-hadoop-jobtracker-grid.log