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”
有时候需要增加可执行权限,一般情况下不需要下面的操作。
[root@localhost java]#chmod a+xjdk-6u38-linux-x64.bin
[root@localhost 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
[root@cdata1 ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policyACCEPT:filter [ OK ]
iptables: Unloading modules: [ OK ]
最好设置开机就不启动防火墙:(我是这样设置,防止以后出错)
[root@cdata1 ~]# vi /etc/sysconfig/selinux
SELINUX=disable
(1) 配置NameNode和DataNode
配置成功的关键在于确保各机器上的主机名和IP地址之间能正确解析。修改每台机器的/etc/hosts文件,如果该台机器作namenode用,则需要在文件中添加集群中所有机器的IP地址及其对应 主机名;如果该台机器仅作为datanode用,则只需要在文件中添加本机和namenode的IP地址及其对应的主机名。
对每台机器,用root用户登录,修改/etc/hosts
$vi /etc/hosts
[root@cnamenode /]# 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环回地址也可以不要,有时候建议不要!
修改后,重新登录系统,才会出现[root@cnamenode /]的形式。
把另外2台机器cdata1和cdata2作为DataNode节点,用它们的root用户登录,分别配置它们的/etc/hosts。如下
[root@cdata1 /]# cat /etc/hosts
127.0.0.1 localhost
10.22.73.24 cdata1
10.22.73.23 cnamenode
[root@cdata2 /]# 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
测试过程:
[grid@cdata2 .ssh]$ ssh 10.22.73.25 //本机ip
Are you sure you want to continue connecting (yes/no)? yes //第一次要输入yes
[grid@cdata2 ~]$ exit
[grid@cdata2 .ssh]$ ssh 10.22.73.25
[grid@cdata2 ~]$ exit
[grid@cdata2 .ssh]$
这时候,master的.ssh中有三项,把master的id_rsa.pub分别复制到每个slavers上,并重新命名为master_rsa.pub
如下:登录cdata1
进入目录.ssh
$cd .ssh
$scp cnamenode:~/.ssh/id_rsa.pub ./master_rsa.pub
[grid@cdata1 .ssh]$ ls
authorized_keys id_rsa id_rsa.pub known_hosts master_rsa.pub
[grid@cdata1 .ssh]$ cat master_rsa.pub > authorized_keys
这时候,master就可以无密码访问cdata1了,测试如下:
登录到cnamenode主机:
[grid@cnamenode .ssh]$ ssh 10.22.73.24
Last login: Wed Oct 9 20:03:56 2013from cnamenode
[grid@cdata1 ~]$ exit
logout
Connection to 10.22.73.24 closed.
[grid@cnamenode .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 如下:
[grid@cnamenode 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>
[grid@cnamenode 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>
[grid@cnamenode 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。
[grid@cnamenode conf]$ cat masters
cnamenode
(c)编辑conf/slaves,加入所有的slaves的主机名,即cdata1和cdata2
[grid@cnamenode 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下修改。
[root@localhost ~]#/etc/init.d/iptables stop
iptables: Flushingfirewall rules: [ OK ]
iptables: Setting chainsto policy ACCEPT:filter [ OK ]
iptables: Unloadingmodules: [ OK ]
最好设置开机就不启动防火墙:
[root@localhost ~]# vi/etc/sysconfig/selinux
SELINUX=disable
用普通用户grid登录。格式化文件系统,启动守护进程的命令如下:
$cd hadoop-1.2.0
$bin/hadoop namenode –format
执行结果如下:
[grid@cnamenodehadoop-1.2.0]$ 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”,说明格式化成功!接着
[grid@cnamenodehadoop-1.2.0]$ 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
[grid@cnamenodehadoop-1.2.0]$ jps
15127 Jps
14750 NameNode
14923 SecondaryNameNode
15010 JobTracker
Jps查看进程有4项(Jps,NameNode, SecondaryNameNode,JobTracker)出现上述情况表示安装成功!
在slaves下查看,如下(包括jps有3个进程,必须要有DataNodehe和TaskTracker):
[grid@cdata1 hadoop-1.2.0]$ jps
7130 TaskTracker
7202 Jps
7040 DataNode
[grid@cdata2 ~]$ 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)在浏览器下输入地址查看:
输入http://cnamenode:50070可以查看NameNode以及整个分布式文件系统的状况。
输入http://cnamenode:50030可以查看JobTracker的运行状态。
(7)运行wordcount实例。
假如文件夹/home/grid/下有个input.txt文件。
[grid@cnamenode hadoop-1.2.0]$ bin/hadoop dfs -put/home/grid/input.txt in
[grid@cnamenode hadoop-1.2.0]$ bin/hadoop dfs –ls
[grid@cnamenode hadoop-1.2.0]$ bin/hadoop jar hadoop-examples-1.2.0.jarwordcount in out
// 可以统计数结果
[grid@cnamenode hadoop-1.2.0]$ bin/hadoop dfs -cat out/*
也可以把文件复制到本地查看
[grid@cnamenode hadoop-1.2.0]$ bin/hadoop dfs -get out output
[grid@cnamenode hadoop-1.2.0]$cat output/*
停止hadoop守护进程。
[grid@cnamenode 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 若出现:
[grid@cnamenodehadoop-1.2.0]$ 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安装目录下)
[root@cnamenode logs]# chmod 777hadoop-grid-namenode-cnamenode.out
[root@cnamenode logs]#chmod 777 hadoop-hadoop-jobtracker-grid.out.5
[root@cnamenode logs]# chmod 777hadoop-hadoop-jobtracker-grid.log