着急看解决方法的请直接奔文末。
今天刚开始弄Hadoop,启动完namenode和hadoop之后,开始启动yarn,结果直接报错了:
Cannot set priority of resourcemanager process 93826
翻译过来就是说:无法设置resourcemanager进程的优先级(大概)。
然后就开始百度,stackOverflow上有说是没有设置ssh免密登录的,有说是防火墙问题的,都是过了,ssh免密登录设置没有问题,防火墙压根没开。还有很多人是yarn-site.xml
配置文件有问题,我盯着看了半天,并没有什么问题。
于是查了一下日志,日志提示是:
Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @2c1a7075
也看不出来什么,但是隐隐约约能看出来是Java报的错(废话),然后开始百度,这个问题很多是切换Java版本的时候出现的错误,Java8应该是没有这个问题的,所以果断弃了。
又百度了很久,看到有个人说,由于mac的特殊性,需要配置一下$HADOOP_HOME/libexec/hadoop-config.sh
,加上Java家目录。我打开一看,人家文件里有家目录啊,但是跟之前配的JAVA_HOME
一对比,才发现不一样。然后就把JAVA_HOME
改了一下。
再次启动yarn,还是报错,突然想起来刚才打开start-yarn.sh
看了一下,里面好像有跟hadoop-config.sh
相同的内容,里面的JAVA_HOME
似乎也不对,于是打开看了一下,果然也是错的,于是开始修改start-yarn.sh
中的JAVA_HOME
的值。
改完之后一保存,发现是只读文件,又改了文件权限,修改JAVA_HOME,保存,然后重新启动yarn,终于搞定了!
修改权限命令:chmod 777 文件名
命令详解可自行百度
所以最终的解决办法其实就是打开启动的sh文件,把JAVA_HOME
改正,然后再运行sh即可。