datanode 的hadoop zkfcc 启动不起来

Hadoop集群增加datanode
阅读:246次&&&时间: 12:09:45&&
目前环境说明:
主机名&&&&&& IP地址&&&&&&&&&&& 用途
Hadoop1&&&&& 192.168.3.65&&&&& namenode、jobtracker
Hadoop2&&&&& 192.168.3.66&&&&& datanode、tasktracker
Hadoop3&&&&& 192.168.3.67&&&&& datanode、tasktracker、secondarynamenode
Hadoop4&&&&& 192.168.3.64&&&&& datanode、tasktracker
要求准备新增一台datanode节点到集群中,机器信息如下:
主机名&&&&&&&&&&&&&&&&&&&&& IP地址&&&&&&&&&& 用途
stat.localdomain&&&&&&&&& 172.16.7.164&&&&&& datanode
部署前提条件:
新增的datanode节点务必能和集群中的每个节点互相ping通!这个属于网络的问题就不多讨论了!
1、新增的datanode节点的hosts文件增加如下内容:
192.168.5.54&&& master
2、从Hadoop1节点拷贝id_rsa.pub并重命名为authorized_keys
[root@stat .ssh]# scp 192.168.3.65:/root/.ssh/id_rsa.pub authorized_keys
3、从Hadoop1节点拷贝id_rsa到新增datanode上
[root@stat .ssh]# scp 192.168.3.65:/root/.ssh/id_rsa .
4、验证Hadoop1登录到新增datanode,并且新增datanode登录到hadoop1是否需要密码登录?
[root@Hadoop1 .ssh]# ssh stat.localdomain
The authenticity of host 'stat.localdomain (172.16.7.164)' can't be established.
RSA key fingerprint is b5:50:2e:4a:1e:81:37:a2:4d:e3:6c:a0:cd:a8:1a:1b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'stat.localdomain,172.16.7.164' (RSA) to the list of known hosts.
Last login: Mon Jul& 2 07:04:38 2012 from
[root@stat .ssh]# ssh Hadoop1
Last login: Mon Jul& 2 10:49:34 2012 from
5、从Hadoop1节点拷贝jdk到新增datanode上。并且设置相应的环境变量
[root@stat ~]# mkdir -p /usr/java
[root@stat ~]# cd /usr/java
[root@stat java]# scp -r Hadoop1:/usr/java/jdk* .
添加环境变量,在/root/.bash_profile文件里增加如下内容:
export JAVA_HOME=/usr/java/jdk1.6.0_14
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
执行如下命令让变量生效
[root@stat ~]# source .bash_profile
显示如下则说明jdk没有问题。
[root@stat ~]# java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
6、拷贝Hadoop应用到新增的datanode节点上
[root@stat ~]# scp -r Hadoop1:/root/hadoop .
7、启动新增的datanode节点的datanode和tasktracker进行
[root@stat ~]# Hadoop/bin/hadoop-daemon.sh start datanode
[root@stat ~]# Hadoop/bin/hadoop-daemon.sh start tasktracker
8、最后测试,我们可以在浏览器里面查看,或者Hadoop dfsadmin -report查看都行!我这里就不测试了!应该没有任何问题的!但是这里有个建议,这里新增了一台datanode节点,下次start-all.sh的时候,这个是启动不起来的,除非把datanode节点加入到配置文件中并且rsync到每个节点哈!切记!!!
9、还有一点,有很多文章说要对新加的节点进行块均衡。不然以后的数据都会放到新增的datanode上,也就是执行如下命令:
[root@stat ~]# Hadoop/bin/start-balancer.sh
但是我自己做过实验,不进行块均衡,后续块文件也是分开放的,并不是只放到新增的datanode上。这点也许我做的不太充分的测试,等生产环境上了就可以知道了!
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
Copyright &
All Rights Reserved2843人阅读
在工作过程中,经常需要调整一些hadoop的参数配置,所以经常会遇到各种各样的问题。比如改了个配置怎么突然namenode起不来啦,加了个jar包怎么让hadoop的jvm加载啊,如何设定log目录啦等等,每次都需要仔细的查一遍启动脚本才能找到原因,费时又费力,因此专门总结了一下以便不时之需。
cloudera的hadoop的启动脚本写的异常复杂和零散,各种shell脚本分散在系统的各个角落,让人很无语。下面以namenode启动的过程为例说明hadoop的启动脚本的调用关系和各个脚本的作用。
hadoop启动的入口脚本是/etc/init.d/hadoop-hdfs-name,下面我们顺着启动namenode的顺序看看hadoop的启动调用过程。
/etc/init.d/hadoop-hdfs-namenode:
#1.加载/etc/default/hadoop /etc/default/hadoop-hdfs-namenode
#2.执行/usr/lib/hadoop/sbin/hadoop-daemon.sh启动namenode
cloudera启动namenode的用户为hdfs,默认的配置目录是/etc/hadoop/conf
[ -x $EXEC_PATH ] || exit $ERROR_PROGRAM_NOT_INSTALLED
[ -d $CONF_DIR ] || exit $ERROR_PROGRAM_NOT_CONFIGURED
log_success_msg &Starting ${DESC}: &
su -s /bin/bash $SVC_USER -c &$EXEC_PATH --config '$CONF_DIR' start $DAEMON_FLAGS&
# Some processes are slow to start
sleep $SLEEP_TIME
checkstatusofproc
[ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE
return $RETVAL
/etc/default/hadoop& /etc/default/hadoop-hdfs-namenode:
#1.配置logdir,piddir,user
/usr/lib/hadoop/sbin/hadoop-daemon.sh
#1.加载/usr/lib/hadoop/libexec/hadoop-config.sh
DEFAULT_LIBEXEC_DIR=&$bin&/../libexec
HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR}
. $HADOOP_LIBEXEC_DIR/hadoop-config.sh
#2.加载hadoop-env.sh
if [ -f &${HADOOP_CONF_DIR}/hadoop-env.sh& ]; then
. &${HADOOP_CONF_DIR}/hadoop-env.sh&
#3.指定log目录
# get log directory
if [ &$HADOOP_LOG_DIR& = && ]; then
export HADOOP_LOG_DIR=&$HADOOP_PREFIX/logs&
#4.补全log目录和log4j的logger等参数
export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.log
export HADOOP_ROOT_LOGGER=${HADOOP_ROOT_LOGGER:-&INFO,RFA&}
export HADOOP_SECURITY_LOGGER=${HADOOP_SECURITY_LOGGER:-&INFO,RFAS&}
export HDFS_AUDIT_LOGGER=${HDFS_AUDIT_LOGGER:-&INFO,NullAppender&}
log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.out
pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
HADOOP_STOP_TIMEOUT=${HADOOP_STOP_TIMEOUT:-5}
#5.调用/usr/lib/hadoop-hdfs/bin/hdfs
hadoop_rotate_log $log
echo starting $command, logging to $log
cd &$HADOOP_PREFIX&
case $command in
namenode|secondarynamenode|datanode|journalnode|dfs|dfsadmin|fsck|balancer|zkfc)
if [ -z &$HADOOP_HDFS_HOME& ]; then
hdfsScript=&$HADOOP_PREFIX&/bin/hdfs
hdfsScript=&$HADOOP_HDFS_HOME&/bin/hdfs
nohup nice -n $HADOOP_NICENESS $hdfsScript --config $HADOOP_CONF_DIR $command &$@& & &$log& 2&&1 & /dev/null &
nohup nice -n $HADOOP_NICENESS $hadoopScript --config $HADOOP_CONF_DIR $command &$@& & &$log& 2&&1 & /dev/null &
echo $! & $pid
sleep 1; head &$log&
if ! ps -p $! & /dev/ then
可以看到namenode的sysout输出到$log中,即log=$HADOOP_LOG_DIR/hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.out
/usr/lib/hadoop/libexec/hadoop-config.sh
#1.加载/usr/lib/hadoop/libexec/hadoop-layout.sh
hadoop-layout.sh主要描述了hadoop的lib的文件夹结构,主要内容如下
HADOOP_COMMON_DIR=&./&
HADOOP_COMMON_LIB_JARS_DIR=&lib&
HADOOP_COMMON_LIB_NATIVE_DIR=&lib/native&
HDFS_DIR=&./&
HDFS_LIB_JARS_DIR=&lib&
YARN_DIR=&./&
YARN_LIB_JARS_DIR=&lib&
MAPRED_DIR=&./&
MAPRED_LIB_JARS_DIR=&lib&
HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-&/usr/lib/hadoop/libexec&}
HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-&/etc/hadoop/conf&}
HADOOP_COMMON_HOME=${HADOOP_COMMON_HOME:-&/usr/lib/hadoop&}
HADOOP_HDFS_HOME=${HADOOP_HDFS_HOME:-&/usr/lib/hadoop-hdfs&}
HADOOP_MAPRED_HOME=${HADOOP_MAPRED_HOME:-&/usr/lib/hadoop-0.20-mapreduce&}
YARN_HOME=${YARN_HOME:-&/usr/lib/hadoop-yarn&}
#2.指定HDFS和YARN的lib
HADOOP_COMMON_DIR=${HADOOP_COMMON_DIR:-&share/hadoop/common&}
HADOOP_COMMON_LIB_JARS_DIR=${HADOOP_COMMON_LIB_JARS_DIR:-&share/hadoop/common/lib&}
HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_COMMON_LIB_NATIVE_DIR:-&lib/native&}
HDFS_DIR=${HDFS_DIR:-&share/hadoop/hdfs&}
HDFS_LIB_JARS_DIR=${HDFS_LIB_JARS_DIR:-&share/hadoop/hdfs/lib&}
YARN_DIR=${YARN_DIR:-&share/hadoop/yarn&}
YARN_LIB_JARS_DIR=${YARN_LIB_JARS_DIR:-&share/hadoop/yarn/lib&}
MAPRED_DIR=${MAPRED_DIR:-&share/hadoop/mapreduce&}
MAPRED_LIB_JARS_DIR=${MAPRED_LIB_JARS_DIR:-&share/hadoop/mapreduce/lib&}
# the root of the Hadoop installation
# See HADOOP-6255 for directory structure layout
HADOOP_DEFAULT_PREFIX=$(cd -P -- &$common_bin&/.. && pwd -P)
HADOOP_PREFIX=${HADOOP_PREFIX:-$HADOOP_DEFAULT_PREFIX}
export HADOOP_PREFIX
#3.对slave文件判断。但cdh的hadoop不是依靠slave来启动集群的,而是要用户自己写集群启动脚本(也许是为了逼用户用他的CloudManager。。。)
#4.再次指定env文件
if [ -f &${HADOOP_CONF_DIR}/hadoop-env.sh& ]; then
. &${HADOOP_CONF_DIR}/hadoop-env.sh&
#5.指定java home
# Attempt to set JAVA_HOME if it is not set
if [[ -z $JAVA_HOME ]]; then
# On OSX use java_home (or /Library for older versions)
if [ &Darwin& == &$(uname -s)& ]; then
if [ -x /usr/libexec/java_home ]; then
export JAVA_HOME=($(/usr/libexec/java_home))
export JAVA_HOME=(/Library/Java/Home)
# Bail if we did not detect it
if [[ -z $JAVA_HOME ]]; then
echo &Error: JAVA_HOME is not set and could not be found.& 1&&2
#6.指定Java程序启动的heapsize,如果用户在hadoop-env.sh中指定了HADOOP_HEAPSIZE字段则会覆盖默认&#m
# some Java parameters
JAVA_HEAP_MAX=-Xmx1000m
# check envvars which might override default args
if [ &$HADOOP_HEAPSIZE& != && ]; then
#echo &run with heapsize $HADOOP_HEAPSIZE&
JAVA_HEAP_MAX=&-Xmx&&$HADOOP_HEAPSIZE&&m&
#echo $JAVA_HEAP_MAX
#7.指定程序的classpath,一大串代码,总结下就是
HADOOP_CONF_DIR+HADOOP_CLASSPATH+HADOOP_COMMON_DIR+HADOOP_COMMON_LIB_JARS_DIR+
HADOOP_COMMON_LIB_JARS_DIR+HADOOP_COMMON_LIB_NATIVE_DIR+HDFS_DIR+HDFS_LIB_JARS_DIR
+YARN_DIR+YARN_LIB_JARS_DIR+MAPRED_DIR+MAPRED_LIB_JARS_DIR
有一个要注意的,hadoop比较贴心的提供了HADOOP_USER_CLASSPATH_FIRST属性,如何设置了,
则HADOOP_CLASSPATH(用户自定义classpath)会在hadoop自身的jar包前加载,用来解决用户
想最先加载自定义的jar包情况。
#8.指定HADOOP_OPTS,-Dhadoop.log.dir这些类似参数会在conf下的log4j配置中用到
HADOOP_OPTS=&$HADOOP_OPTS -Dhadoop.log.dir=$HADOOP_LOG_DIR&
HADOOP_OPTS=&$HADOOP_OPTS -Dhadoop.log.file=$HADOOP_LOGFILE&
HADOOP_OPTS=&$HADOOP_OPTS -Dhadoop.home.dir=$HADOOP_PREFIX&
HADOOP_OPTS=&$HADOOP_OPTS -Dhadoop.id.str=$HADOOP_IDENT_STRING&
HADOOP_OPTS=&$HADOOP_OPTS -Dhadoop.root.logger=${HADOOP_ROOT_LOGGER:-INFO,console}&
if [ &x$JAVA_LIBRARY_PATH& != &x& ]; then
HADOOP_OPTS=&$HADOOP_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH&
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LIBRARY_PATH
HADOOP_OPTS=&$HADOOP_OPTS -Dhadoop.policy.file=$HADOOP_POLICYFILE&
# Disable ipv6 as it can cause issues
HADOOP_OPTS=&$HADOOP_OPTS -Djava.net.preferIPv4Stack=true&
/usr/lib/hadoop-hdfs/bin/hdfs
#1.加载/usr/lib/hadoop/libexec/hdfs-config.sh,但好像没啥作用
#2.根据启动参数指定java的启动mainclass:
if [ &$COMMAND& = &namenode& ] ; then
CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'
HADOOP_OPTS=&$HADOOP_OPTS $HADOOP_NAMENODE_OPTS&
& #3.启动Java程序
exec &$JAVA& -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS &$@&&&最后介绍几个配置的小例子。1.如何指定hadoop的log目录:从启动脚本中看几个配置的优先级排序是hadoop-env.sh&hadoop-config.sh&/etc/default/hadoop,因此我们如果想指定hadoop的log目录只需在hadoop-env.sh中添加一行:export HADOOP_LOG_DIR=xxxxx2.如何添加自己的jar包到hadoop中被namenode,datanode使用&export HADOOP_CLASSPATH=xxxxx3.如何单独设定namenode的java heapsize。比如想设置namenode10G,datanode1G,这个就有点意思了。如果直接指定HADOOP_HEAPSIZE那么此参数会作用于namenode,datanode,而单独在namenode的参数中指定也会有点小问题哦,不过基本是可以使用的。&总之,由于hadoop的启动脚本极其多而且琐碎,再加上hbase hive的启动脚本都是类似的结构,导致在添加修改一些配置时会产生很多莫名的问题,大家也可以在使用的过程中细细体会啦&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:37836次
排名:千里之外
原创:28篇
评论:25条
(1)(1)(1)(2)(1)(3)(5)(4)(7)(3)&./hadoop-daemons.sh start datanode
./hbase-daemons.sh start regionserver
&./hadoop-daemon.sh start datanode **
./hbase-daemon.sh start regionserver **
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:120133次
积分:2033
积分:2033
排名:第7613名
原创:76篇
转载:14篇
评论:41条
(1)(13)(13)(1)(1)(1)(3)(15)(1)(2)(1)(1)(1)(1)(1)(1)(1)(4)(1)(2)(4)(11)(4)(8)(1)(1)完全分布式搭建的error(datanode启动不了)
[问题点数:100分,结帖人maomingjie001]
完全分布式搭建的error(datanode启动不了)
[问题点数:100分,结帖人maomingjie001]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 datanode无法启动 的文章

 

随机推荐