2021-5-1

问题:Job任务一边运行一边报错

  • 帮其他同学排错的时候,遇到一个有趣的问题,执行Job任务的时候,任务一边运行,一边报错。
  1. hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 10

image-20201208175432329.png

  • 报错内容:找不到xxx用户

image-20201208175502809.png

  • 原因:此任务是使用 LDAP+Kerberos 认证的用户执行。在 MapReduce 中,一个Job进入执行阶段,需要Yarn调度资源,而Yarn的资源调度是随机的,如果被调度的节点无该用户,或无法获取到一致的用户信息(例如该节点是使用本地用户,而主节点和其他节点使用的 LDAP 用户;或者因为一些之前 SSSD 或者 LDAP 配置原因,导致 LDAP 无法同步),则会报错找不到此用户;但其他节点正常运行,故一边报错一边正常运行。在解决的过程中,我又偶然发现如果ID不一致也会导致此问题。
  • 解决 LDAP 同步的问题:检查 LDAP 的配置,完成后重启 LDAP 的客户端服务 nslcd 服务
  • 解决 SSSD 的问题:SSSD 配置错误可能会导致ID无法查询的问题,需要注意的是,SSSD 修改配置后,需要先停止 sssd 服务,重新赋权限给 sssd.conf 后,再启动服务,否则会启动服务会异常。
  1. chmod 600 /etc/sssd/sssd.conf
  • 解决 ID 不一致的问题:同步 LDAP 服务;或者在本地创建一个同名用户。注意同名用户的uid需要和 LDP 的 ID 一致,否则也会出现找不到该用户的报错内容。可以在创建用户的时候加 -g 指定该用户的 group,组可以是只在 LDAP 中存在的。
  1. useradd -u uid -g guoupname username

2021-6-2

问题:MapReduce Map阶段无法运行,卡住0%

image.png
原因:yarn任务多,且前面任务卡住,无法运行

解决:kill掉卡死的任务即可**