Loading

BigData——Q&A Notice2

Q&A Notice

Mysql安装遇见问题:

error: Failed dependencies:  MySQL conflicts with mysql-5.1.71-1.el6.x86_64   

解决办法

ps aux | grep mysql   
 kill -9 进程号

mysql的相关命令是

/etc/init.d/mysql status/start/stop/..

Hbase挂掉子节点:

子节点的HRegionServer进程挂掉了

查看LOG日志

zookeeper.RecoverableZooKeep er: ZooKeeper delete failed after 4 attempts 

首先关闭hbase、zookeeper。

查看hbase自带zookeeper是否占用2181端口。 启动zookeeper

zkCli.sh
ls /
rmr /hbase
quit
zkServer.sh restart

当然也有可能是时间不一致导致的,注意同步各节点的时间 再启动hbase即可。

解决关闭Hadoop时no namenode to stop异常

在实行了hadoop-stop-all.sh命令以后,相关hadoop进程没有关掉。

在$hadoop-2.6.0/sbin/hadoop-daemon.sh中可以发现:

if [ -f $pid ]; then
     ....#省略n多行
    else
      echo no $command to stop
 fi

这样就很明显了,如果pid文件不存在就会打印:no xxx to stop

那么pid是什么文件,为什么会不存在,找到pid变量的声明语句,在脚本文件的第107行:

pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid #第107行

接着再找HADOOP_PID_DIR变量的声明部分:

首先在脚本注释部分找了很关键的一句话:

#   HADOOP_PID_DIR   The pid files are stored. /tmp by default.

我们知道了,HADOOP_PID_DIR 变量保存的是pid文件的存储路径。默认存储在/tmp目录中,代码如下:

if [ "$HADOOP_PID_DIR" = "" ]; then   //97~99行
  HADOOP_PID_DIR=/tmp
fi

那么这个pid文件是啥呢。Hadoop启动后,会把进程的PID号存储在一个文件中,这样执行stop-dfs脚本时就可以按照进程PID去关闭进程了。

现在问题原因很明确了,就是/tmp目录下的hadoop-*.pid的文件找不到了。可以翻看对应的文件夹,除了我们需要的,其他啥都有!

我们知道/tmp是临时目录,系统会定时清理该目录中的文件。显然把pid文件放在这里是不靠谱的,pid文件长时间不被访问,早被清理了!

既然Hadoop不知道需要关闭哪些进程了,那我们只能手动关闭了!

先用ps -ef查看namenode\datanode等进程的PID,然后用kill -9干掉即可!

为了避免以上情况重复发生,我们需要修改pid文件的位置,以免pid文件被清理,从而影响到我们脚本的运行。

修改pid文件存放目录,只需要在hadoop-daemon.sh脚本中添加一行声明即可:

HADOOP_PID_DIR=/root/hadoop/pid  #第25行

记住要先关闭Hadoop再修改,不然你修改完又无法关闭了!同样的道理,你还需要修改yarn-daemon.sh

YARN_PID_DIR=/root/hadoop/pid
posted @ 2022-09-22 17:22  Christopher·阳  阅读(15)  评论(0编辑  收藏  举报