Недавно наш кластер oop, работающий с mapr 5.2, выдавал ошибку, которая, похоже, влияет только на большие файлы в HDFS. Когда основная учетная запись (которая выполняет все службы mapr) взаимодействует с большим файлом, она работает нормально. Однако, когда любая другая учетная запись пытается это сделать, мы получаем сообщение об ошибке, подобное следующему:
$ hdfs -get <large file>
2020-04-16 12:09:20,5178 ERROR Client fs/client/fileclient/cc/client.cc:5062 Thread: 602 Read failed for file <large file>, error Invalid argument(22), off 65536 len 65536 for fid 4212.137.132072
20/04/16 12:09:20 ERROR fs.Inode: Marking failure for: <large file>, error: Input/output error
20/04/16 12:09:20 ERROR fs.Inode: Throwing exception for: <large file>, error: Input/output error get: 2070.1218926.8072252 <large file> (Input/output error)
Обратите внимание, что это происходит практически для любого файла большего размера, но файлы меньшего размера, похоже, не затрагиваются, даже если они были реплицированы через HDFS.
Каждый раз, когда появляется эта ошибка, я также вижу соответствующую ошибку в mfs.log-3:
2020-04-16 11:55:53,0963 ERROR MapServerFile clishm.cc:157 shmat failed for shmid 1769111589, errno 13, trying again
2020-04-16 11:55:53,0963 ERROR MapServerFile clishm.cc:163 shmat failed 2nd time for shmid 1769111589, errno 13
2020-04-16 11:55:53,0963 ERROR FileServer fileserver.cc:3837 192.168.30.21:38254 shmat failed on shmid: 1769111589
Интересно, если я пытаюсь скопировать Тот же файл на локальный диск на узле данных, вместо имени узла, он работает без каких-либо проблем. Первоначально я думал, что это проблема с разрешениями (поскольку она отлично работает для одной учетной записи, а не для других), но я проверил uid и gid на всех узлах, и они одинаковы, поэтому тот факт, что это работает на узле данных но не узел имени говорит мне, что это проблема узла имени. Но я не уверен, как поступить в отладке этого.