为Hadoop集群增加新节点 博客分类: hadoop
2012-09-20
前言
为一个已存在的Hadoop集群添加新节点,非常简单。可以算即插即用。
首先是要遵循一个规则,集群中的所有机器的Hadoop涉及到的配置位置要一致:安装路径,JDK(使用的版本与安装路径),所属用户与群组。
然后开始做下面的事情:
步骤
1. 拷贝一份集群上都用的hadoop包到新节点机器上的指定路径上。我建议一直有一份这样的干净的文件存在某个地方,以便不时之需。记得修改文件的拥有者。
2. 拷贝集群使用的JDK到指定目录下。顺便说一句,集群使用的JAVA_HOME参数是由%HADOOP_HOME%/conf/hadoop-env.sh里指定的。
3. 修改该机器上hadoop对应用户的authorized_keys,使得namenode可以不需要密码进行访问该机器。
4. 在各节点的/etc/hosts上添加对应的ip与主机名。
5. 修改namenode的slaves文件。增加新节点的ip或者主机名
6. 在新节点上启动hadoop。
%HADOOP_HOME/bin/hadoop-daemon.sh start datanode
%HADOOP_HOME/bin/hadoop-daemon.sh start tasktracker
7.使用hadoop dfsadmin命令集来刷新集群信息
hadoop dfsadmin -refreshNodes
8. 完成。
如果有问题的话,可以到新节点的日志里进行查看,并分析。
问题集锦
1. JAVA_HOME is not set.
解决:
看看%HADOOP_HOME%/conf/hadoop-env.sh的配置,想很久才明白,原来不是使用系统默认的JAVA_HOME而是这个文件里的配置。
2. 在namenode上用stop-all.sh关闭集群时,新节点要求输入密码。
解决:
修改新节点的hadoop对应用户的authorized_keys,使得namenode可以不需要密码进行访问该机器。
3. 启动jobtracker失败
现象:
org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=mapred, access=WRITE, inode="/":hdfs:supergroup: ...
解决:
在hdfs上创建mapred.system.dir(该值一般指定在mapred-site.xml中)对应的目录,并赋予对应权限。
推荐阅读
-
为Hadoop集群增加新节点 博客分类: hadoop
-
为Hadoop集群撤销节点 博客分类: hadoop
-
ZooKeeper的配置 博客分类: ZooKeeper云计算 ZooKeeper云计算集群伪分布式Hadoop
-
ZooKeeper的运行 博客分类: ZooKeeperHadoop云计算 ZooKeeper云计算Hadoop集群伪分布式
-
Hadoop集群环境搭建 博客分类: HadoopLinux hadooplinux
-
关于hadoop完全分布式集群搭建 博客分类: hadoop hadoop完全分布式
-
关于hadoop完全分布式集群搭建 博客分类: hadoop hadoop完全分布式
-
Hadoop 集群 傻瓜式搭建手记 博客分类: hadoop
-
Spark集群搭建 & spark-shell & Master HA 博客分类: hadoop
-
Hadoop集群中引入新DataNode节点