Skip to content

Commit 50e27e2

Browse files
committed
HBASE-22709 Add a chore thread in master to do hbck checking (#404)
Signed-off-by: stack <[email protected]>
1 parent 9b5fd68 commit 50e27e2

File tree

7 files changed

+497
-144
lines changed

7 files changed

+497
-144
lines changed

hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/AssignmentManagerStatusTmpl.jamon

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -42,84 +42,8 @@ int limit = 100;
4242
<%java>
4343
SortedSet<RegionState> rit = assignmentManager.getRegionStates()
4444
.getRegionsInTransitionOrderedByTimestamp();
45-
Map<String, Pair<ServerName, Set<ServerName>>> problematicRegions = assignmentManager
46-
.getProblematicRegions();
4745
</%java>
4846

49-
<%if !problematicRegions.isEmpty() %>
50-
<%java>
51-
int totalSize = problematicRegions.size();
52-
int sizePerPage = Math.min(10, totalSize);
53-
int numOfPages = (int) Math.ceil(totalSize * 1.0 / sizePerPage);
54-
</%java>
55-
<section>
56-
<h2><a name="problem-regions">Problematic Regions</a></h2>
57-
<p>
58-
<span>
59-
<% problematicRegions.size() %> problematic region(s). There are three case: 1. Master
60-
thought this region opened, but no regionserver reported it. 2. Master thought this
61-
region opened on Server1, but regionserver reported Server2. 3. More than one
62-
regionservers reported opened this region. Notice: the reported online regionservers
63-
may be not right when there are regions in transition. Please check them in
64-
regionserver's web UI.
65-
</span>
66-
</p>
67-
<div class="tabbable">
68-
<div class="tab-content">
69-
<%java int recordItr = 0; %>
70-
<%for Map.Entry<String, Pair<ServerName, Set<ServerName>>> entry : problematicRegions.entrySet() %>
71-
<%if (recordItr % sizePerPage) == 0 %>
72-
<%if recordItr == 0 %>
73-
<div class="tab-pane active" id="tab_prs<% (recordItr / sizePerPage) + 1 %>">
74-
<%else>
75-
<div class="tab-pane" id="tab_prs<% (recordItr / sizePerPage) + 1 %>">
76-
</%if>
77-
<table class="table table-striped" style="margin-bottom:0px;">
78-
<tr>
79-
<th>Region</th>
80-
<th>Location in META</th>
81-
<th>Reported Online Region Servers</th>
82-
</tr>
83-
</%if>
84-
85-
<tr>
86-
<td><% entry.getKey() %></td>
87-
<td><% entry.getValue().getFirst() %></td>
88-
<td><% entry.getValue().getSecond().stream().map(ServerName::getServerName)
89-
.collect(Collectors.joining(", ")) %></td>
90-
</tr>
91-
<%java recordItr++; %>
92-
<%if (recordItr % sizePerPage) == 0 %>
93-
</table>
94-
</div>
95-
</%if>
96-
</%for>
97-
98-
<%if (recordItr % sizePerPage) != 0 %>
99-
<%for ; (recordItr % sizePerPage) != 0 ; recordItr++ %>
100-
<tr><td colspan="3" style="height:61px"></td></tr>
101-
</%for>
102-
</table>
103-
</div>
104-
</%if>
105-
106-
</div>
107-
<nav>
108-
<ul class="nav nav-pills pagination">
109-
<%for int i = 1 ; i <= numOfPages; i++ %>
110-
<%if i == 1 %>
111-
<li class="active">
112-
<%else>
113-
<li>
114-
</%if>
115-
<a href="#tab_prs<% i %>"><% i %></a></li>
116-
</%for>
117-
</ul>
118-
</nav>
119-
</div>
120-
</section>
121-
</%if>
122-
12347
<%if !rit.isEmpty() %>
12448
<%java>
12549
long currentTime = System.currentTimeMillis();

hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.jamon

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
149149
<li class="active"><a href="/master-status">Home</a></li>
150150
<li><a href="/tablesDetailed.jsp">Table Details</a></li>
151151
<%if master.isActiveMaster() %>
152-
<li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
152+
<li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
153+
<li><a href="/hbck.jsp">HBCK Report</a></li>
153154
</%if>
154155
<li><a href="/processMaster.jsp">Process Metrics</a></li>
155156
<li><a href="/logs/">Local Logs</a></li>

hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ public void run() {
374374
private ClusterStatusChore clusterStatusChore;
375375
private ClusterStatusPublisher clusterStatusPublisherChore = null;
376376

377+
private HbckChecker hbckChecker;
377378
CatalogJanitor catalogJanitorChore;
378379
private LogCleaner logCleaner;
379380
private HFileCleaner hfileCleaner;
@@ -1087,6 +1088,8 @@ private void finishActiveMasterInitialization(MonitoredTask status)
10871088
getChoreService().scheduleChore(normalizerChore);
10881089
this.catalogJanitorChore = new CatalogJanitor(this);
10891090
getChoreService().scheduleChore(catalogJanitorChore);
1091+
this.hbckChecker = new HbckChecker(this);
1092+
getChoreService().scheduleChore(hbckChecker);
10901093

10911094
// NAMESPACE READ!!!!
10921095
// Here we expect hbase:namespace to be online. See inside initClusterSchemaService.
@@ -1549,6 +1552,7 @@ private void stopChores() {
15491552
choreService.cancelChore(this.logCleaner);
15501553
choreService.cancelChore(this.hfileCleaner);
15511554
choreService.cancelChore(this.replicationBarrierCleaner);
1555+
choreService.cancelChore(this.hbckChecker);
15521556
}
15531557
}
15541558

@@ -3668,4 +3672,8 @@ public Map<String, ReplicationStatus> getWalGroupsReplicationStatus() {
36683672
}
36693673
return super.getWalGroupsReplicationStatus();
36703674
}
3675+
3676+
public HbckChecker getHbckChecker() {
3677+
return this.hbckChecker;
3678+
}
36713679
}

0 commit comments

Comments
 (0)