服务器异常关机,启动yarn nodemanager 报错 CURRENT file does not end with newline 处理方法

本文记录了一次服务器宕机后,NodeManager启动失败的问题排查与解决过程。通过日志发现CURRENT文件异常,定位到yarn-nm-state目录,删除问题文件后成功重启服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

偶遇服务器宕机,服务器中很多文件损坏,启动nodemanager时,一直报错,日志如下,感觉是某个文件损坏造成的

2019-05-16 15:50:41,379 INFO  service.AbstractService (AbstractService.java:noteFailure(272)) - Service NodeManager failed in state INITE
D; cause: org.apache.hadoop.service.ServiceStateException: org.fusesource.leveldbjni.internal.NativeDB$DBException: Corruption: CURRENT file does not end with newlineorg.apache.hadoop.service.ServiceStateException: org.fusesource.leveldbjni.internal.NativeDB$DBException: Corruption: CURRENT file does n
ot end with newline    at org.apache.hadoop.service.ServiceStateException.convert(ServiceStateException.java:59)
    at org.apache.hadoop.service.AbstractService.init(AbstractService.java:172)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartRecoveryStore(NodeManager.java:178)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:220)
    at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:546)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:594)
Caused by: org.fusesource.leveldbjni.internal.NativeDB$DBException: Corruption: CURRENT file does not end with newline
    at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:200)
    at org.fusesource.leveldbjni.internal.NativeDB.open(NativeDB.java:218)
    at org.fusesource.leveldbjni.JniDBFactory.open(JniDBFactory.java:168)
    at org.apache.hadoop.yarn.server.nodemanager.recovery.NMLeveldbStateStoreService.openDatabase(NMLeveldbStateStoreService.java:966
)    at org.apache.hadoop.yarn.server.nodemanager.recovery.NMLeveldbStateStoreService.initStorage(NMLeveldbStateStoreService.java:953)
    at org.apache.hadoop.yarn.server.nodemanager.recovery.NMStateStoreService.serviceInit(NMStateStoreService.java:200)
    at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)
    ... 5 more

从日志中可知,CURRENT文件内容异常,但不知道具体路径,查资料获知,文件上层目录应该是yarn-nm-state,使用下面命令找到具体路径,删除文件,重启nodemanager,问题解决

find / -type d -name yarn-nm-state

 

<think>好的,我现在需要解决YARN NodeManager启动失败的问题。首先,我需要了解用户提供的引用内容,看看里面有没有提到常见的原因和解决方法。让我先仔细看一下用户提供的五个引用内容。 引用[1]提到的问题是“cannot write to cgroup at /sys/fs/cgroup/cpu,cpuacct”,并且每次启动失败后hadoop-yarn目录会被删除。这说明可能是权限问题或者cgroup配置不正确。用户执行了一些操作但无效,可能需要检查目录权限或者cgroup的挂载情况。 引用[3]提到了环境变量配置的问题,用户需要将YARN_RESOURCEMANAGER_USER和YARN_NODEMANAGER_USER设置为root。这可能是因为Hadoop启动时需要特定的用户权限,如果环境变量没有正确设置,可能导致启动失败。解决方法是在/etc/profile中添加这些变量并source生效。 引用[5]给出了资源管理的配置,比如yarn.nodemanager.resource.memory-mb和cpu-vcores的设置。如果这些资源配置过低或者不正确,可能导致NodeManager无法启动。需要检查yarn-site.xml中的相关参数是否合理,是否有足够的系统资源。 引用[2]和[4]虽然涉及内存管理和日志聚合的问题,但可能不是直接导致启动失败的原因,不过内存配置错误也可能导致启动失败,比如启用了pmem-check但内存设置不足,导致进程被杀掉。此外,引用[4]中的日志聚合参数可能影响任务运行后的日志处理,但不影响启动本身,除非日志目录权限有问题。 接下来,我需要综合这些信息,整理出可能的原因和对应的解决方案。可能的原因包括: 1. 权限问题:cgroup目录的权限不足,或者Hadoop相关目录的权限问题。 2. 环境变量未正确设置:YARN的用户环境变量未配置,导致启动时权限不足。 3. 资源配置错误:内存或CPU资源配置不当,导致NodeManager无法分配资源。 4. 配置文件错误:yarn-site.xml中的某些参数配置错误,例如日志聚合线程数或其他相关参数。 可能的解决步骤: 首先检查环境变量是否正确设置,尤其是YARN_NODEMANAGER_USER是否为root,并确保通过source生效。然后检查cgroup目录的权限,确保NodeManager有写入权限。接着查看资源配置参数,如内存和CPU是否合理,是否超出物理资源限制。最后,检查其他相关配置,如日志目录是否存在且有正确权限,以及配置文件是否有语法错误。 同时,用户提到的hadoop-yarn目录被删除,可能是因为启动失败后自动清理,但需要确认该目录的权限是否正确,是否允许NodeManager进程创建和写入。另外,引用[1]中的cgroup问题可能需要检查系统是否启用了cgroup,以及相关子系统是否挂载正确。在Linux系统中,cgroup的配置可能需要特定的启动参数或服务启用。 此外,还要查看NodeManager的日志文件,通常位于logs目录下,具体的错误信息会帮助定位问题。例如,如果日志显示无法写入cgroup,那么需要调整cgroup的权限或配置;如果显示内存不足,可能需要调整yarn.nodemanager.resource.memory-mb的值。 总结下来,解决步骤应该是按照权限、环境变量、资源配置、配置文件检查这样的顺序进行排查,同时结合日志分析具体原因。</think>### YARN NodeManager启动失败原因及解决方案 #### 一、常见原因分析 1. **权限问题** - **cgroup目录权限不足**:NodeManager需要访问$`/sys/fs/cgroup/cpu,cpuacct`$目录,若目录权限或挂载异常会导致启动失败[^1]。 - **Hadoop系统目录权限错误**:例如`hadoop-yarn`目录被自动删除,可能因进程无权限重新创建目录。 2. **环境变量未配置** - 未设置YARN用户环境变量(如$`YARN_NODEMANAGER_USER=root`$),导致服务启动时权限不足[^3]。 3. **资源配置不合理** - 内存或CPU参数($`yarn.nodemanager.resource.memory-mb`$、$`yarn.nodemanager.resource.cpu-vcores`$)超出物理资源上限,或未正确配置[^5]。 4. **内存检查机制冲突** - 若启用$`yarn.nodemanager.pmem-check-enabled`$但未合理配置内存限制,可能导致进程被系统终止[^2]。 --- #### 二、解决方案步骤 ##### 1. 检查权限配置 - **修复cgroup目录权限** ```bash # 检查cgroup挂载状态 mount | grep cgroup # 修改目录权限(需root权限) chmod 755 /sys/fs/cgroup/cpu,cpuacct ``` 若目录未挂载,需在`/etc/fstab`中添加配置并重启。 - **确保Hadoop目录可写入** 检查`/tmp/hadoop-yarn`等目录权限,确保YARN用户有读写权限: ```bash chown -R yarn:yarn /tmp/hadoop-yarn ``` ##### 2. 配置环境变量 在`/etc/profile`中添加以下变量并生效: ```bash export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root source /etc/profile # 立即生效 ``` 重启YARN服务验证是否生效。 ##### 3. 调整资源配置参数 修改`yarn-site.xml`中的资源配置(需与实际物理资源匹配): ```xml <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> <!-- 不超过物理内存的80% --> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>4</value> <!-- 不超过物理CPU核心数 --> </property> ``` 重启NodeManager服务。 ##### 4. 关闭或调优内存检查 若无需严格内存限制,可暂时关闭内存检查: ```xml <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> ``` ##### 5. 检查日志定位问题 查看NodeManager启动日志(默认路径:`$HADOOP_HOME/logs/yarn-yarn-nodemanager-*.log`),根据错误提示进一步排查: - 若提示`Cannot create directory`,检查磁盘空间和目录权限。 - 若涉及cgroup错误,需验证Linux系统是否支持cgroup v1/v2。 --- #### 三、验证方法 1. 手动启动NodeManager: ```bash yarn --daemon start nodemanager ``` 2. 检查服务状态: ```bash jps | grep NodeManager ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值