[jira] [Commented] (HDFS-15794) IBR and FBR use different queues to load data.

2021-01-27 Thread JiangHua Zhu (Jira)


[ 
https://issues.apache.org/jira/browse/HDFS-15794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17273253#comment-17273253
 ] 

JiangHua Zhu commented on HDFS-15794:
-

[~kihwal] , thank you very much.
I think your suggestion is very meaningful.

 

> IBR and FBR use different queues to load data.
> --
>
> Key: HDFS-15794
> URL: https://issues.apache.org/jira/browse/HDFS-15794
> Project: Hadoop HDFS
>  Issue Type: Improvement
>  Components: namenode
>Reporter: JiangHua Zhu
>Assignee: JiangHua Zhu
>Priority: Major
>
> When DataNode reports data to NameNode, IBR and FBR are included here.
> After the NameNode receives the DataNode request, it temporarily stores the 
> data in a queue, here it refers to 
> BlockManager#BlockReportProcessingThread#queue.
> NameNodeRpcServer#blockReport()
> for (int r = 0; r   final BlockListAsLongs blocks = reports[r].getBlocks();
>  final int index = r;
>  noStaleStorages = bm.runBlockOp(() ->
>  bm.processReport(nodeReg, reports[index].getStorage(),
>  blocks, context));
>  }
> NameNodeRpcServer#blockReport()
> for (final StorageReceivedDeletedBlocks r: receivedAndDeletedBlocks) {
>  bm.enqueueBlockOp(new Runnable() {
>  @Override
>  public void run() {
>  try {
>  namesystem.processIncrementalBlockReport(nodeReg, r);
>  } catch (Exception ex) {
>  // usually because the node is unregistered/dead. next heartbeat
>  // will correct the problem
>  blockStateChangeLog.error(
>  "*BLOCK* NameNode.blockReceivedAndDeleted: "
>  + "failed from "+ nodeReg + ":" + ex.getMessage());
>  }
>  }
>  });
>  }
> The problem here is that when the NameNode is blocked in processing the IBR, 
> the FBR requested by the DN from the NameNode will be affected. Similarly, 
> when the NameNode processing FBR is blocked.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org



[jira] [Commented] (HDFS-15794) IBR and FBR use different queues to load data.

2021-01-27 Thread Kihwal Lee (Jira)


[ 
https://issues.apache.org/jira/browse/HDFS-15794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17272999#comment-17272999
 ] 

Kihwal Lee commented on HDFS-15794:
---

{quote}The problem here is that when the NameNode is blocked in processing the 
IBR, the FBR requested by the DN from the NameNode will be affected. Similarly, 
when the NameNode processing FBR is blocked.
{quote}

The serial processing of IBR and FBR is not a side-effect of way a data 
structure is used (single queue).  In current namespace and block manager 
design, each report is processed with the fsn write lock held. The queue made 
it possible to process multiple IBRs under one lock, thus increasing 
throughput.  Having multiple queues for IBRs and FBRs won't help with 
concurrency. In fact, it will complicate things, as it needs to maintain 
certain processing order across multiple queues.

In order to make a meaningful performance improvement, we have to make NN 
perform concurrent block report processing. 

> IBR and FBR use different queues to load data.
> --
>
> Key: HDFS-15794
> URL: https://issues.apache.org/jira/browse/HDFS-15794
> Project: Hadoop HDFS
>  Issue Type: Improvement
>  Components: namenode
>Reporter: JiangHua Zhu
>Assignee: JiangHua Zhu
>Priority: Major
>
> When DataNode reports data to NameNode, IBR and FBR are included here.
> After the NameNode receives the DataNode request, it temporarily stores the 
> data in a queue, here it refers to 
> BlockManager#BlockReportProcessingThread#queue.
> NameNodeRpcServer#blockReport()
> for (int r = 0; r   final BlockListAsLongs blocks = reports[r].getBlocks();
>  final int index = r;
>  noStaleStorages = bm.runBlockOp(() ->
>  bm.processReport(nodeReg, reports[index].getStorage(),
>  blocks, context));
>  }
> NameNodeRpcServer#blockReport()
> for (final StorageReceivedDeletedBlocks r: receivedAndDeletedBlocks) {
>  bm.enqueueBlockOp(new Runnable() {
>  @Override
>  public void run() {
>  try {
>  namesystem.processIncrementalBlockReport(nodeReg, r);
>  } catch (Exception ex) {
>  // usually because the node is unregistered/dead. next heartbeat
>  // will correct the problem
>  blockStateChangeLog.error(
>  "*BLOCK* NameNode.blockReceivedAndDeleted: "
>  + "failed from "+ nodeReg + ":" + ex.getMessage());
>  }
>  }
>  });
>  }
> The problem here is that when the NameNode is blocked in processing the IBR, 
> the FBR requested by the DN from the NameNode will be affected. Similarly, 
> when the NameNode processing FBR is blocked.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org



[jira] [Commented] (HDFS-15794) IBR and FBR use different queues to load data.

2021-01-27 Thread JiangHua Zhu (Jira)


[ 
https://issues.apache.org/jira/browse/HDFS-15794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17272840#comment-17272840
 ] 

JiangHua Zhu commented on HDFS-15794:
-

[~weichiu] , thank you for your reply.
I noticed @14997 . The improvements made here are very meaningful.
But what I want to explain here is that @14997 is about the improvement of 
DataNode.
What I want to express is that something meaningful can be done on the NameNode 
side.
When NN processes IBR and FBR data, it can use different queues for processing, 
instead of sharing one queue (BlockManager#BlockReportProcessingThread#queue).
This will benefit the NN's capabilities.

 

> IBR and FBR use different queues to load data.
> --
>
> Key: HDFS-15794
> URL: https://issues.apache.org/jira/browse/HDFS-15794
> Project: Hadoop HDFS
>  Issue Type: Improvement
>  Components: namenode
>Reporter: JiangHua Zhu
>Assignee: JiangHua Zhu
>Priority: Major
>
> When DataNode reports data to NameNode, IBR and FBR are included here.
> After the NameNode receives the DataNode request, it temporarily stores the 
> data in a queue, here it refers to 
> BlockManager#BlockReportProcessingThread#queue.
> NameNodeRpcServer#blockReport()
> for (int r = 0; r   final BlockListAsLongs blocks = reports[r].getBlocks();
>  final int index = r;
>  noStaleStorages = bm.runBlockOp(() ->
>  bm.processReport(nodeReg, reports[index].getStorage(),
>  blocks, context));
>  }
> NameNodeRpcServer#blockReport()
> for (final StorageReceivedDeletedBlocks r: receivedAndDeletedBlocks) {
>  bm.enqueueBlockOp(new Runnable() {
>  @Override
>  public void run() {
>  try {
>  namesystem.processIncrementalBlockReport(nodeReg, r);
>  } catch (Exception ex) {
>  // usually because the node is unregistered/dead. next heartbeat
>  // will correct the problem
>  blockStateChangeLog.error(
>  "*BLOCK* NameNode.blockReceivedAndDeleted: "
>  + "failed from "+ nodeReg + ":" + ex.getMessage());
>  }
>  }
>  });
>  }
> The problem here is that when the NameNode is blocked in processing the IBR, 
> the FBR requested by the DN from the NameNode will be affected. Similarly, 
> when the NameNode processing FBR is blocked.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org



[jira] [Commented] (HDFS-15794) IBR and FBR use different queues to load data.

2021-01-27 Thread Wei-Chiu Chuang (Jira)


[ 
https://issues.apache.org/jira/browse/HDFS-15794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17272795#comment-17272795
 ] 

Wei-Chiu Chuang commented on HDFS-15794:


I think we made quite some improvements recently in here.

One of which is HDFS-14997.

> IBR and FBR use different queues to load data.
> --
>
> Key: HDFS-15794
> URL: https://issues.apache.org/jira/browse/HDFS-15794
> Project: Hadoop HDFS
>  Issue Type: Improvement
>  Components: namenode
>Reporter: JiangHua Zhu
>Assignee: JiangHua Zhu
>Priority: Major
>
> When DataNode reports data to NameNode, IBR and FBR are included here.
> After the NameNode receives the DataNode request, it temporarily stores the 
> data in a queue, here it refers to 
> BlockManager#BlockReportProcessingThread#queue.
> NameNodeRpcServer#blockReport()
> for (int r = 0; r   final BlockListAsLongs blocks = reports[r].getBlocks();
>  final int index = r;
>  noStaleStorages = bm.runBlockOp(() ->
>  bm.processReport(nodeReg, reports[index].getStorage(),
>  blocks, context));
>  }
> NameNodeRpcServer#blockReport()
> for (final StorageReceivedDeletedBlocks r: receivedAndDeletedBlocks) {
>  bm.enqueueBlockOp(new Runnable() {
>  @Override
>  public void run() {
>  try {
>  namesystem.processIncrementalBlockReport(nodeReg, r);
>  } catch (Exception ex) {
>  // usually because the node is unregistered/dead. next heartbeat
>  // will correct the problem
>  blockStateChangeLog.error(
>  "*BLOCK* NameNode.blockReceivedAndDeleted: "
>  + "failed from "+ nodeReg + ":" + ex.getMessage());
>  }
>  }
>  });
>  }
> The problem here is that when the NameNode is blocked in processing the IBR, 
> the FBR requested by the DN from the NameNode will be affected. Similarly, 
> when the NameNode processing FBR is blocked.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org



[jira] [Commented] (HDFS-15794) IBR and FBR use different queues to load data.

2021-01-27 Thread JiangHua Zhu (Jira)


[ 
https://issues.apache.org/jira/browse/HDFS-15794?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17272716#comment-17272716
 ] 

JiangHua Zhu commented on HDFS-15794:
-

When DataNode requests IBR and FBR from NameNode, NameNode uses different queue 
processing (BlockManager). This can improve the performance of NameNode 
processing these two types of requests.

[~weichiu] [~elgoiri] Do you have different opinions?

 

> IBR and FBR use different queues to load data.
> --
>
> Key: HDFS-15794
> URL: https://issues.apache.org/jira/browse/HDFS-15794
> Project: Hadoop HDFS
>  Issue Type: Improvement
>  Components: namenode
>Reporter: JiangHua Zhu
>Assignee: JiangHua Zhu
>Priority: Major
>
> When DataNode reports data to NameNode, IBR and FBR are included here.
> After the NameNode receives the DataNode request, it temporarily stores the 
> data in a queue, here it refers to 
> BlockManager#BlockReportProcessingThread#queue.
> NameNodeRpcServer#blockReport()
> for (int r = 0; r   final BlockListAsLongs blocks = reports[r].getBlocks();
>  final int index = r;
>  noStaleStorages = bm.runBlockOp(() ->
>  bm.processReport(nodeReg, reports[index].getStorage(),
>  blocks, context));
>  }
> NameNodeRpcServer#blockReport()
> for (final StorageReceivedDeletedBlocks r: receivedAndDeletedBlocks) {
>  bm.enqueueBlockOp(new Runnable() {
>  @Override
>  public void run() {
>  try {
>  namesystem.processIncrementalBlockReport(nodeReg, r);
>  } catch (Exception ex) {
>  // usually because the node is unregistered/dead. next heartbeat
>  // will correct the problem
>  blockStateChangeLog.error(
>  "*BLOCK* NameNode.blockReceivedAndDeleted: "
>  + "failed from "+ nodeReg + ":" + ex.getMessage());
>  }
>  }
>  });
>  }
> The problem here is that when the NameNode is blocked in processing the IBR, 
> the FBR requested by the DN from the NameNode will be affected. Similarly, 
> when the NameNode processing FBR is blocked.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org