专栏首页伦少的博客HDFS DataNode启动异常:/opt/jdk1.8.0_151/bin/java:权限不够

HDFS DataNode启动异常:/opt/jdk1.8.0_151/bin/java:权限不够

前言

这个异常是在在ambari里启动DataNode产生的,其实这个问题很久就发现了,只是没时间去处理,所以之前把发生问题的slave1节点给移除了,现在有时间处理,就又把slave1加上了,所以就有了ambari 异常总结及解决办法里面的问题,这个java权限不够的问题,在添加slave1之后,并安装datanode和nodemanager之后启动服务依然报错。

异常信息:

/usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.distro:行317: /opt/jdk1.8.0_151/bin/java: 权限不够
/usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.distro: 第 317 行:exec: /opt/jdk1.8.0_151/bin/java: 无法执行: 权限不够

这个问题在网上找也找不到对应的解决办法,所以有必要单独记录一下,没有放在ambari 异常总结及解决办法,且我认为即使不用ambari,该问题依然可能会发生。

1、详细异常信息

部分截图:

2、解决思路

首先确定java是否有问题,经过简单的测试,没发现问题,然后在/usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.distro查看第317行的内容,发现hdfs命令实际调用的java命令,但是一开始并不知道怎么解决这个问题,通过查看ambari的日志也并没有解决问题,最后回到jdk目录的权限问题。 首先有问题的时候

su - hdfs 
hdfs -ls

执行上面的命令也是会报同样的问题,所以就不用在ambari里启动datanode服务就可以测试有没有问题了

3、解决办法

3.1 改变/opt的所有者给hdfs(只将jdk目录的给hdfs没有解决问题,没有深究其原因,可能因为还有其他目录和jdk有关联)

chown -R hdfs:hdfs /opt/

然后用hdfs -ls测试,发现没有上面的异常,这样就可以在在ambari里启动datanode了,启动成功!

3.2 启动nodemanager报错

/usr/hdp/2.6.4.0-91//hadoop-yarn/bin/yarn.distro:行376: /opt/jdk1.8.0_151/bin/java: 权限不够
/usr/hdp/2.6.4.0-91//hadoop-yarn/bin/yarn.distro: 第 376 行:exec: /opt/jdk1.8.0_151/bin/java: 无法执行: 权限不够

异常信息一样,只是文件名不一样,同样的方法解决

chown -R yarn:yarn /opt/

启动nodemanager成功! 然后重启ambari所有服务,看一下是否还有问题,结果slave1启动datanode时报了同样的错误,问了一下同事,发现我对chown -R上面的命令有所误解,我开始认为是让hdfs拥有opt的权限,只想上面两步后,hdfs和yarn都有了opt的权限,但是其实该命令是更改opt的所有者,执行上面的两步之后,只有yarn拥有opt的权限了,也就是将hdfs覆盖了。

3.3 让hadoop组都拥有opt的权限

chown -R yarn:hadoop /opt/
chmod -R 770 /opt

大概解释一下上面的命令,首先更改opt的所有者为hadoop组下面的yarn用户(yarn和hdfs都属于hadoop组) 然后770的意思是用户和用户组对opt目录具有rwx的权限,其他用户没有任何权限,这样hdfs用户也有opt的权限了,这样重启ambari的所有服务就会成功了!

3.4 最后的方法

上面命令是同事帮忙操作的,然后发现自己对Linux权限不太了解,就大概查了一下权限相关的资料,因为之前已经把opt的权限弄乱了,所以最后先这样解决(测试环境,且opt目录一般就我们几个人用) 首先将opt的所有者改回为root

chown -R root:root /opt/

然后更改opt的权限为755

chmod -R 755 /opt

755的意思为用户的权限为rwx,用户组和其他人的权限均为r-x,即没有写权限,一般文件权限也是755(应该也是默认的,可以自己新建一个文件夹进行测试),然后这样重启ambari的所有服务也是没有问题的 因为-R是递归的,这样其实不好,因为有些txt,readme的权限也改了,所以我将opt下面的jdk目录删除并重新解压了一份。 opt各目录权限截图:

权限问题参考:http://justcode.ikeepstudying.com/2016/08/linux-chmod-和-chown用法小结/

4、总结

其实该问题只修改jdk相关的目录的权限即可,但是之前已经递归修改opt的目录,所以暂时只能按照3.4的办法解决。该异常出现的原因应该是才平时的操作中,误修改了jdk的权限,为了防止出现这种问题,平时在操作中关于chmod -R等相关的操作一定要慎用。

本文由 董可伦 发表于 伦少的博客 ,采用署名-非商业性使用-禁止演绎 3.0进行许可。

非商业转载请注明作者及出处。商业转载请联系作者本人。

本文标题:HDFS DataNode启动异常:/opt/jdk1.8.0_151/bin/java:权限不够

本文链接:https://dongkelun.com/2018/07/10/HadoopException/

--------------------

作者联系方式:

QQ:1412359494

微信:dongkelun

--------------------

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Echarts中国地图三级钻取

    最近其实一直在用Echarts写前端,之前也想过总结一下Echarts的用法,但是官网的例子已经很全了。写这篇博客是因为Echarts官网把很多地图的例子都去掉...

    董可伦
  • 利用Spark实现Oracle到Hive的历史数据同步

    和上一篇文章Spark通过修改DataFrame的schema给表字段添加注释一样,通过Spark将关系型数据库(以Oracle为例)的表同步的Hive,这里讲...

    董可伦
  • spark 统计每天新增用户数

    转载请务必注明原创地址为:http://dongkelun.com/2018/04/11/sparkNewUV/

    董可伦
  • 利用 NVIDIA TensorRT 进行Tiny YOLO v2 推理应用

    该应用程序从Open Neural Network eXchange (ONNX) model Zoo下载 Tiny YOLO v2模型,并将其转换为NVIDI...

    GPUS Lady
  • CocoaPods使用详解

    CocoaPods简介 什么是CocoaPods?每种语言发展到一个阶段,就会出现相应的依赖管理工具。好比Java 语言的 Maven,nodejs 的 npm...

    xiangzhihong
  • iOS RunLoop的介绍

    导语 一道题引出的对RunLoop的认知。 最近做到一道有关 runloop 的选择题,题目大概是这样的: 关于 Runloop 的说法中,哪些是...

    MelonTeam
  • 腾讯喻帅:腾讯云智慧零售产品发布

    腾讯云智慧零售产品总监喻帅,在云+未来峰会的智慧零售专场进行了腾讯云智慧零售产品的发布,以下内容整理自演讲。

    Techeek
  • 代码管理 | 创建并管理自己的公有Cocopods库

    一是直接将这部分代码copy到绘本阅读这个项目中; 二是将语音评测这部分逻辑给抽取出来,然后在分别在两处使用。

    進无尽
  • 为什么说Spark SQL远远超越了MPP SQLSpark SQL 成为了一种跨越领域的交互形态

    这里说的并不是性能,因为我没尝试对比过(下文会有简单的说明),而是尝试从某种更高一层次的的角度去看,为什么Spark SQL 是远远超越MPP SQL的。

    用户2936994
  • 详解连续子数组的最大累乘之动态规划解法

    此题出自LeetCode:152. Maximum Product Subarray,大意求子数组的最大值,举例子1:

    double

扫码关注云+社区

领取腾讯云代金券