记一次hadoop.tmp.dir配置因重启机器导致无法启动

缘由

      线上一直运行的hadopp集群,突然有一天服务器断电重启,集群正常启动,但是spark on  yarn上的任务无法提交,报错一提交任务AM就被kill掉。

解决方案

步骤一

      在$HADOOP_HOME/etc/hadoop中的core-site.xml有个 hadoop.tmp.dir 配置的是Hadoop临时目录,比如HDFS的NameNode数据默认都存放这个目录下,查看*-default.xml 等默认配置文件,就可以看到很多依赖${hadoop.tmp.dir} 的配置。

      默认的hadoop.tmp.dir 是/tmp/hadoop-${user.name} ,此时有个问题就是 NameNode 会将 HDFS 的元数据存储在这个/tmp目录下,如果操作系统重启了,系统会清空 /tmp 目录下的东西,导致NameNode元数据丢失,是个非常严重的问题,所有我们应该修改这个路径。

步骤二

      如果需要重新格式化 NameNode,需要先将原来 NameNode 和 DataNode 下的文件全部删除,不然会报错,NameNode 和 DataNode 所在目录是在 core-site.xml中 hadoop.tmp.dir、 dfs.namenode.name.dir、 dfs.datanode.data.dir属性配置的。

步骤三

     如果spark提交任务报错找不到类,可以查看$SPARK_HOME/conf目录下spark-defaults.conf是否添加了如下配置:

spark.yarn.jars=hdfs://xxx.xxx.xxx.xxx:9000/user/spark_jars/*

     如果配置了,需要把jars包上穿传到hdfs指定位置

猜你喜欢

转载自blog.csdn.net/qq_23160237/article/details/86703604