Skip to content

Commit e54c401

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

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
@@ -371,6 +371,7 @@ public void run() {
371371
private ClusterStatusChore clusterStatusChore;
372372
private ClusterStatusPublisher clusterStatusPublisherChore = null;
373373

374+
private HbckChecker hbckChecker;
374375
CatalogJanitor catalogJanitorChore;
375376
private LogCleaner logCleaner;
376377
private HFileCleaner hfileCleaner;
@@ -1030,6 +1031,8 @@ private void finishActiveMasterInitialization(MonitoredTask status)
10301031
getChoreService().scheduleChore(normalizerChore);
10311032
this.catalogJanitorChore = new CatalogJanitor(this);
10321033
getChoreService().scheduleChore(catalogJanitorChore);
1034+
this.hbckChecker = new HbckChecker(this);
1035+
getChoreService().scheduleChore(hbckChecker);
10331036

10341037
// NAMESPACE READ!!!!
10351038
// Here we expect hbase:namespace to be online. See inside initClusterSchemaService.
@@ -1495,6 +1498,7 @@ private void stopChores() {
14951498
choreService.cancelChore(this.logCleaner);
14961499
choreService.cancelChore(this.hfileCleaner);
14971500
choreService.cancelChore(this.replicationBarrierCleaner);
1501+
choreService.cancelChore(this.hbckChecker);
14981502
}
14991503
}
15001504

@@ -3861,4 +3865,8 @@ public Map<String, ReplicationStatus> getWalGroupsReplicationStatus() {
38613865
}
38623866
return super.getWalGroupsReplicationStatus();
38633867
}
3868+
3869+
public HbckChecker getHbckChecker() {
3870+
return this.hbckChecker;
3871+
}
38643872
}

0 commit comments

Comments
 (0)