Janus Chow created HDFS-16367:
---------------------------------
Summary: Out-sync of socket config between client and DataNode
Key: HDFS-16367
URL: https://issues.apache.org/jira/browse/HDFS-16367
Project: Hadoop HDFS
Issue Type: Improvement
Reporter: Janus Chow
We met an issue of timeout while clients writing data to datanodes. The root
cause is the different "dfs.client.socket-timeout" config used by Clients and
DataNode.
Clients updated the config to 3m, DataNodes are using the default config of 1m.
During the stage of "DATA_STREAMING" when writing pipelines, the client will
send heartbeat packets with an interval of half of the timeout, that is
90seconds, but the socket timeout between the client and the first DataNode is
60seconds, then the client fails to write the content.
IMHO, the client config of "dfs.client.socket-timeout" is reasonable to be
configured by clients themselves, thus in a cluster, we should allow the
circumstances of different clients using different client configs.
If so, the problem is the out-sync of some configs between the client and
DataNodes. After checking the code, I think the following 2 options would be
feasible:
# while the client is invoking writeBlock of DataTransferProtocol, we can
transfer the config from client to DataNode, and DataXceiver should process and
update the config. The drawback of this option is we may need to add arguments
to other methods like "readBlock".
# Add a new interface like "syncConfig" to DataTransferProtocol, then after
each time the connection is created, we can invoke the method and do the config
sync up.
Hope to get other options and ideas.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]