- 问题发现 192.168.18.52 机器上执行的脚本都失败了
同一个脚本分配到53执行时没问题,分配到52则失败
2.问题定位
根据日志
sudo -u hdfs sh /tmp/dolphinscheduler/exec/process/6/80/1624/7309/80_1624_7309.command
[INFO] 2023-01-10 01:26:21.969 - [taskAppId=TASK-80-1624-7309]:[208] - process start, process id is: 17001
[INFO] 2023-01-10 01:26:22.060 - [taskAppId=TASK-80-1624-7309]:[217] - process has exited, execute path:/tmp/dolphinscheduler/exec/process/6/80/1624/7309, processId:17001 ,exitStatusCode:0
[INFO] 2023-01-10 01:26:22.970 - [taskAppId=TASK-80-1624-7309]:[129] - -> /var/tmp/sclKZ0aES: line 8: -u: command not found
首先在52上使用sudo -u hdfs echo "hello" 进行简单的测试 发现同样报错 line 8: -u: command not found
然后尝试 su hdfs 发现报错 This account is currently not available
cat /etc/passwd | grep hdfs
发现它的shell是“/sbin /nologin”
然后尝试修正 vim /etc/passwd 修改,并且wq!保存后再次重试
su hdfs 无报错但是sudo -u hdfs echo "hello" 执行脚本还是报错
3.检查/etc/profile 环境变量发现
对比53 51 机器多了一个环境变量/opt/rh/devtoolset/root/usr/bin 并且该环境优先级最高
对其优先级进行调整 并且重新source /etc/profile 后 sudo -u hdfs echo "hello" 成功显示 hello
4.总结
重启ds集群 并且重新执行任务成功。到这里52 ds运行环境修复成功!
总结 新添加的环境变量的优先级尽量不要覆盖系统的优先级; 如果hdfs用户对新环境变量的路径没有权限会导致整个环境变量无法生效。