2015-07-15 3 views
2

Использование Hadoop-2.6.0 с защитой от kerberos. Попытка установить ACL для каталога с помощью следующей командыhadoop setfacl --set not working

Command

hadoop fs -setfacl --set user::rwx,user:user1:---,group::rwx,other::rwx /test1 

Это дает сообщение "Слишком много аргументов"

ошибок

-setfacl: Too many arguments 
Usage: hadoop fs [generic options] -setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>] 

я уверен, синтаксис команды верен, и, кроме того, одна и та же команда отлично работает при выполнении ng из REST API.

Нужно решение для этого.

ответ

3

Это правильный синтаксис для команды HDFS setfacl. Если вы работаете с Windows cmd.exe, вам может понадобиться обернуть параметры командной строки в кавычках, если они содержат какие-либо разделители параметров cmd.exe. В cmd.exe разделителями параметров являются пробел, запятая, точка с запятой и знак равенства. Синтаксис спецификации ACL содержит запятые, поэтому нам нужно обернуть это в кавычки. В противном случае cmd.exe разбивает его на несколько аргументов перед вызовом кода Hadoop, и поэтому вы видите ошибку для слишком большого количества аргументов. Когда я запускал это на Windows, он работал:

hadoop fs -setfacl --set "user::rwx,user:user1:---,group::rwx,other::rwx" /test1 
+0

Большое спасибо. Это сработало. – Kumar