Como esvaziar o lixo no hadoop quando a quota de espaços de nomes for excedida?
15/05/19 23:17:34 ERROR streaming.StreamJob: Error Launching job : The NameSpace quota (directories and files) of directory /user/myname is exceeded: quota=1000000 file count=1000001
eu tentei apagar alguns arquivos usando hdfs dfs -rm -r -f files
que relata que os arquivos são movidos para o lixo. Depois tentei e voltei.
15/05/19 23:12:32 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
15/05/19 23:12:33 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/myname/.Trash/150519231233
2 answers
Se realmente sabes o que estás a fazer , Então podias fazer:
[gsamaras@gwta3000 ~]$ hadoop fs -rm -f -r -skipTrash /path/to/dirToBeDeleted
Deleted /path/to/dirToBeDeleted
Que eu montei depois de ler: Como apagar uma pasta não-vazia no Terminal? e o resto..
Quando se apaga um ficheiro ou um directório, ele vai para o lixo, mas quando se apaga o lixo, há um intervalo (que é configurável e depende da sua configuração, o meu é 1h), que tem de passar, por isso que a eliminação real ocorre.
A ideia é que você pode excluir algo importante (ou algo gerado após muita energia de computação é usado) por acidente e essa configuração lhe dá a oportunidade de recuperar seus dados.
Se não tem a certeza de como proceder, aconselho-o a esperar pelo menos uma hora e tentar de novo, caso contrário..A partir desse link , Há esta lista que propõe algumas ideias:
- diga aos utilizadores para usar
-Dfs.trash.interval=0
ao apagar grandes directório - excluir
/user/<username>/.Trash
do contingente - mexe-te
.Trash
para fora de/user directory
. Talvez/Trash/<username>
e fixar quotas diferentes. - Quando
-rm
/rmr
falha com a quota, apaga-as automaticamente. - introduza um comando separado que faz (1). Algo como a força de apagar.