今天在学习hadoop启动命令的时候,先jps看了下,发现namenode、datanode都开着,所以想要先停止这些服务,结果输入命令后报错:“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable”。

进入lib/native里一看,是空的。。。空的。。。。

下载的时候,cloudera里的下载链接已经是直接跳转到hadoop的官方网址上,所以直接在链接地址后面加上需要下载的版本号下载下来。去网上搜了下,也有人在cloudera中下载的hadoop也是native是空的情况(不清楚是不是一直都是如此),不管了,问题总得解决吧:直接下载个native然后将原先的覆盖试试。

  在官网找了半天,只发现2.6.5;好吧,还是按照之前的方法,在2.6.5的下载URL中直接修改成2.6.0,顺利的下载了hadoop-2.6.0.tar.gz;通过filezilla将压缩包上传到虚拟机master中,并解压缩(tar -zxvf xxxxx.gz),将解压缩后的native文件夹覆盖到原先的native文件夹中(cp )。再次使用 sbin/stop-dfs.sh命令,已经不报错了,但是,但是,但是服务依旧没有停止,提示“

Stopping namenodes on [master]
master: no namenode to stop
slave2: no datanode to stop
slave1: no datanode to stop
master: no datanode to stop
Stopping secondary namenodes [slave2]
slave2: no secondarynamenode to stop

”。

  不管怎么样,已经解决了一个问题,这是个好事啊,接着继续解决下一个;度娘是不是万能的,我不清楚;广告很多,这是个事实,很多时候出来的前面几个都是广告;不过感觉技术类的搜索稍微好些。很幸运,找到了这个文章 《解决关闭Hadoop时no namenode to stop异常》(地址在此:https://blog.csdn.net/gyqjn/article/details/50805472)。

  按照文章中方法,

    首先,打开shell命令的脚本文件,在最后几行找到了如下的代码,显示如果缺少pid就会显示no XXX to stop

  1.   if [ -f $pid ]; then
        ...#省略几行
        else
  2. echo no $command to stop
  3. fi
  4. rm -f $pid
  5. else
  6. echo no $command to stop
  7. fi
  8. ;;

    然后,找到了pid默认存储在 ./tmp中,但貌似tmp是一个临时文件,系统会定时清理这里面的文件,所以pid放在这里面是不安全的,时间一长,文件就会被干掉。

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

    最后,用 ps命令(ps -ef)获取namenode等的pid,再用kill命(kill -9 pid)杀死目前运行的namenode等进程。

==========================================================================================================================================

  问题解决了,但是pid放在 ./tmp中总归风险比较大,所以,

    方法一,将pid换到不会被定时清理的文件夹中存放,具体方法如下:

      在关闭hadoop的情况下,打开hadoop-daemon.sh和yarn-daemon.sh,找到

  1. if [ "$HADOOP_PID_DIR" = "" ]; then
  2. HADOOP_PID_DIR=/tmp
  3. fi

      将/tmp修改为新的文件夹,比如我修改到了/modules/hadoop-2.6.0-cdh5.11.1/pid中;

    方法二,可以让系统清理 ./tmp时,不去清除 *.pid的文件,具体方法如下:

      由于linux系统会通过定时任务每天执行/etc/cron.daily/tmpwatch脚本,所以在这个脚本里添加一个排除条件,即可解决。

  1. -X '/tmp/*.pid'

==========================================================================================================================================

  以上的方法二只不过是照搬别人写的,并没有实际操作,因为所装的linux系统并无tmpwatch这个脚本,所以pid的位置并没有做修改。

另外再次感谢以下的几篇文章,给我指明方向啊:

https://www.cnblogs.com/lexiaofei/p/6358359.html?utm_source=itdadao&utm_medium=referral (下载下来了2.6.0的native,虽然最后并没有使用)

https://blog.csdn.net/whbo111/article/details/45693753 (编译本地库的命令,也没有用到,不过多学习了一个命令)

https://blog.csdn.net/yanhe156/article/details/79832877(检查本地库的命令,这个用到了,不错)

https://blog.csdn.net/gyqjn/article/details/50805472(解决关闭Hadoop时no namenode to stop异常)

http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html(ps命令)

https://www.cnblogs.com/peida/archive/2012/12/20/2825837.html(kill命令)

1. hadoop使用启动命令时报错之分析解决的更多相关文章

  1. (转)svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”

    今天碰到了个郁闷的问题,svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrup ...

  2. 启动outlook时报错:mapi无法加载信息服务msncon.dll

    今天这个Office2010 outlook搞的让人蛋疼,老是说启动outlook时报错:mapi无法加载信息服务msncon.dll. 百度了一下,如下解决方案: 安装路径为D:\NEW Windo ...

  3. svn执行clean up命令时报错

    svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”.无论你到那个父 ...

  4. MyEclipse 启动tomcat时报错:Cannot change deployment state from ERROR to REDEPLOYING.ds

    myeclipse 启动tomcat时报错:Cannot change deployment state from ERROR to REDEPLOYING.ds - 刘琦的专栏 - 博客频道 - C ...

  5. 执行yiic webapp命令时报错:php.exe不是内部或外部命令,也不是可运行的程序

    在执行 yiic webapp ../abc 命令时报错: “php.exe”不是内部或外部命令,也不是可运行的程序 或批处理文件. 这是因为yiic批处理程序找不到php.exe的执行路径引起的. ...

  6. 用Eclipse的tomcat插件启动tomcat时报错:

    用Eclipse的tomcat插件启动tomcat时报错: FATAL ERROR in native method: JDWP No transports initialized, jvmtiErr ...

  7. 【原创】大叔经验分享(57)hue启动coordinator时报错

    hue启动coordinator时报错,页面返回undefinied错误框: 后台日志报错: runcpserver.log [13/May/2019 04:34:55 -0700] middlewa ...

  8. vmware启动winodws时报错弹出【无法连接MKS:套接字连接尝试次数太多;正在放弃;】

    启动虚拟机时报错 解决办法:(其实就是有关于虚拟机的服务没有起) win+R输入services.msc,将所有有关vmware的服务都起起来即可

  9. Centos7启动防火墙时报错Failed to start IPv4 firewall with iptables

    今天在虚拟机的Linux系统(centos7)里安装Redis,准备学习一下布隆过滤器呢,安装完后使用Windows本机访问不了虚拟机里的Redis,telnet不通能够ping通.于是就去看防火墙, ...

随机推荐

  1. sql查询数据结果发送到邮箱

    #!/bin/bash user=root password=xx dbname=xx DATE=`date +%F` #注意:此处mysql要用全路劲,否则计划任务会执行失败 /mydata/mys ...

  2. C语言根据结构体成员变量的地址,得到结构体的地址

    看nginx代码时发现双链表使用的是这种方法,记录一下 给出一个实例来说明 struct father_t {    int a;    char *b;    double c;}f;char *p ...

  3. dstat命令详解

    dstat 如果系统没有些工具 yum -y install dstat安装下即妥,此软件小巧玲珑,软件包大小只有144k,安装大小660k. 此工具默认情况下会动态显示CPU,disk,net,pa ...

  4. Educational Codeforces Round 73 (Rated for Div. 2) D. Make The Fence Great Again(DP)

    链接: https://codeforces.com/contest/1221/problem/D 题意: You have a fence consisting of n vertical boar ...

  5. WINCE7 SYMBOL MC32N0 SDK,VS2008调试程序,连接设备时,出现bootstrap 未能加载时

    开发工具:visual studio 2008 手持设备: SYMBOL  MC32NO工具->连接到设备->WINCE 7.00连接设备出现bootstrap 未能加载时,试下安装Mot ...

  6. CI环境搭建下-Jenkis与git结合

     设置权限:  也可以通过公私钥的方式,添加权限,公私钥填写在gitblit用户中心:  Jenkins中填写私钥: 添加: 添加后如果仍然报错,是因为windows下要使用http的地址. 在此,可 ...

  7. 【转载】Dijkstra算法和Floyd算法的正确性证明

      说明: 本文仅提供关于两个算法的正确性的证明,不涉及对算法的过程描述和实现细节 本人算法菜鸟一枚,提供的证明仅是自己的思路,不保证正确,仅供参考,若有错误,欢迎拍砖指正   ----------- ...

  8. 【luoguP2158】 [SDOI2008]仪仗队

    题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图 ...

  9. JS学习-01

    01

  10. ETL测试场景和测试用例设计

    前段时间做了些数据测试相关的工作,找了些相关方面的资料,也跟一些一线厂的同学聊了下数据测试方面的东西,然后在团队内部形成了一个初级的数据测试的规范流程以及测试需要进行的场景设计和测试用例设计的方案. ...