Hari Sekhon created HDFS-7488:
---------------------------------
Summary: HDFS Windows CIFS Gateway
Key: HDFS-7488
URL: https://issues.apache.org/jira/browse/HDFS-7488
Project: Hadoop HDFS
Issue Type: New Feature
Affects Versions: 2.4.0
Environment: HDP 2.1
Reporter: Hari Sekhon
Stakeholders are pressuring for native Windows file share access to our Hadoop
clusters.
I've used NFS gateway several times and while it's theoretically viable for
users now UID mapping is implemented in 2.5... insecure NFS makes our fully
Kerberized clusters security pointless.
We really need CIFS gateway access to enforce authentication which NFSv3
doesn't (NFSv4?).
I've even tried Samba over NFS gateway loopback mount point (don't laugh - they
want it that badly), and enabled hdfs atime precision to an hour to prevent
FSNamesystem.setTimes() java exceptions in gw logs, but the NFS server still
doesn't like the Windows CIFS client actions:
{code}2014-12-08 16:31:38,053 ERROR nfs3.RpcProgramNfs3
(RpcProgramNfs3.java:setattr(346)) - Setting file size is not supported when
setattr, fileId: 25597
2014-12-08 16:31:38,065 INFO nfs3.WriteManager
(WriteManager.java:handleWrite(136)) - No opened stream for fileId:25597
2014-12-08 16:31:38,122 INFO nfs3.OpenFileCtx
(OpenFileCtx.java:receivedNewWriteInternal(624)) - Have to change stable write
to unstable write:FILE_SYNC
{code}
A debug of the Samba server shows it's trying to set metadata timestamps which
hangs indefinitely, resulting in the creation of a zero byte file when trying
to copy a file in to HDFS /tmp via the Windows mapped drive.
{code}
...
smb_set_file_time: setting utimes to modified values.
file_ntime: actime: Thu Jan 1 01:00:00 1970
file_ntime: modtime: Mon Dec 8 16:31:38 2014
file_ntime: ctime: Thu Jan 1 01:00:00 1970
file_ntime: createtime: Thu Jan 1 01:00:00 1970
{code}
This is the traceback from NFS gw log when hdfs precision was set to 0:
{code}org.apache.hadoop.ipc.RemoteException(java.io.IOException): Access time
for hdfs is not configured. Please set dfs.namenode.accesstime.precision
configuration parameter.
at
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.setTimes(FSNamesystem.java:1960)
at
org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.setTimes(NameNodeRpcServer.java:950)
at
org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.setTimes(ClientNamenodeProtocolServerSideTranslatorPB.java:833)
at
org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at
org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)
...
{code}
Regards,
Hari Sekhon
http://www.linkedin.com/in/harisekhon
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)