HDFS-14535. The default 8KB buffer in requestFileDescriptors#BufferedOutputStream is causing lots of heap allocation in HBase when using short-circut read
(cherry picked from commitea3b0a1844
) (cherry picked from commit9b61ecfcbe
) (cherry picked from commitb082628e5a
)
This commit is contained in:
parent
1be7c42cb7
commit
2b9c4fccf4
|
@ -86,6 +86,7 @@ import org.slf4j.LoggerFactory;
|
|||
@InterfaceAudience.Private
|
||||
public class BlockReaderFactory implements ShortCircuitReplicaCreator {
|
||||
static final Logger LOG = LoggerFactory.getLogger(BlockReaderFactory.class);
|
||||
private static final int SMALL_BUFFER_SIZE = 512;
|
||||
|
||||
public static class FailureInjector {
|
||||
public void injectRequestFileDescriptorsFailure() throws IOException {
|
||||
|
@ -578,7 +579,7 @@ public class BlockReaderFactory implements ShortCircuitReplicaCreator {
|
|||
Slot slot) throws IOException {
|
||||
ShortCircuitCache cache = clientContext.getShortCircuitCache();
|
||||
final DataOutputStream out =
|
||||
new DataOutputStream(new BufferedOutputStream(peer.getOutputStream()));
|
||||
new DataOutputStream(new BufferedOutputStream(peer.getOutputStream(), SMALL_BUFFER_SIZE));
|
||||
SlotId slotId = slot == null ? null : slot.getSlotId();
|
||||
new Sender(out).requestShortCircuitFds(block, token, slotId, 1,
|
||||
failureInjector.getSupportsReceiptVerification());
|
||||
|
|
Loading…
Reference in New Issue