zoukankan      html  css  js  c++  java
  • hadoop 集群及hbase集群的pid文件存放位置

    一、当hbase集群和hadoop集群停了做一些配置调整,结果执行stop-all.sh的时候无法停止集群,
    提示no datanode,no namenode等等之类的信息,
    查看stop-all.sh stop-dfs.sh,stop-yarn.sh脚本,发现都是通过一个pid文件来停止集群的。
    这些进程的pid文件默认都是保存在系统的/tmp文件夹以下,系统每一个一段时间就会清楚/tmp以下的内容,于是ls /tmp看了一下,果然没有相关进程的pid文件了。才导致了stop-all.sh无法停止集群的原因。
    当时我怕强制kill -9杀进程的话会破坏集群,于是我想到一个方法,依照pid文件的命名规则又一次在/tmp文件夹以下创建这些pid文件,在翻看了一堆sbin文件夹下的脚本之后,找到了它们的命名规则。
    比方hadoop相关进程的pid文件命名规则为:pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
    yarn相关进程的pid文件规则:pid=$YARN_PID_DIR/yarn-$YARN_IDENT_STRING-$command.pid
    默认情况下$HADOOP_PID_DIR和$YARN_PID_DIR都为/tmp,$HADOOP_IDENT_STRING和$YARN_IDENT_STRING都为当前系统登录的username,$command为当前运行的命令
    比方运行了一个 hadoop-daemon.sh stop namenode,这时候就会去找/tmp/hadoop-hadoop-namenode.pid文件拿到namenode进程的pid号,来停止namenode进程。
    了解原理之后,于是我就開始手动创建这些文件,我首先jps把全部进程的pid都记录下来了,然后在/tmp文件夹依照命名规则创建好了这些进程的pid文件,然后再又一次运行stop-all.sh命令,ok能够成功关闭集群了。
    但这不是一个长久之计,由于下次pid文件还是保存在/tmp文件夹下,还是会出这个问题,所以要彻底解决问题,就是不使用默认的/tmp文件夹来存放pid文件。
    按下面步骤:
    1 在集群各个节点的/var文件夹以下创建一个文件夹: sudo mkdir -p /var/hadoop/pids,记得更改这个文件夹的权限,chown -R hadoop:hadoop /var/hadoop,将这个文件夹及子文件夹的拥有者改为你的当前用户,我这是hadoop,不然运行start-all.sh的时候当前用户会没有权限创建pid文件
    2 改动hadoop-env.sh 添加:export HADOOP_PID_DIR=/var/hadoop/pids
    3 改动yarn-env.sh 添加:export YARN_PID_DIR=/var/hadoop/pids
    4 改动hbase-env.sh ,添加:export HBASE_PID_DIR=/var/hadoop/pids
    又一次执行 start-all.sh,start-hbase.sh把hadoop集群和hbase集群启动起来
    然后我们ls /var/hadoop/pids查看一下pid文件是否生成在里面了,果然出如今了里面,例如以下:
    hadoop-hadoop-namenode.pid           hbase-hadoop-master.pid
    hadoop-hadoop-secondarynamenode.pid  yarn-hadoop-resourcemanager.pid
    这是master上的pid文件,我们还能够去slaves机器上去看看都有哪些:
    hadoop-hadoop-datanode.pid     yarn-hadoop-nodemanager.pid
    hbase-hadoop-regionserver.pid
    然后我们再执行stop-hbase.sh和stop-all.sh命令来測试一下看看能不能正常停止hbase集群和hadoop集群,结果是肯定的。
    特别注意:假设集群和habse启动了,可是不能查看数据或hbase shell以及訪问Hbase的web端(503错误) 那么hadoop 已近进入了安全模式,
    须要运行hadoop dfsadmin -safemode leave  退出安全模式才行
    最后注意一点就是,不不过改动master的全部env文件,集群中的全部节点的这些文件都要改动!
  • 相关阅读:
    HTTP content-type及POST提交数据方式
    Spring Kafka
    Spring动态数据源-AbstractRoutingDataSource(实现分库分表)
    HTTP通信安全和Web攻击技术
    HTTP协议
    zookeeper 图形化的客户端工具:ZooInspector
    centos 中v2r客户端配置实例
    查看视频详细信息
    centos7 创建用户
    logstash
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4297023.html
Copyright © 2011-2022 走看看