Skip to content

Commit 91a6ab5

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

File tree

7 files changed

+499
-145
lines changed

7 files changed

+499
-145
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
@@ -145,7 +145,8 @@ AssignmentManager assignmentManager = master.getAssignmentManager();
145145
<li class="active"><a href="/">Home</a></li>
146146
<li><a href="/tablesDetailed.jsp">Table Details</a></li>
147147
<%if master.isActiveMaster() %>
148-
<li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
148+
<li><a href="/procedures.jsp">Procedures &amp; Locks</a></li>
149+
<li><a href="/hbck.jsp">HBCK Report</a></li>
149150
</%if>
150151
<li><a href="/processMaster.jsp">Process Metrics</a></li>
151152
<li><a href="/logs/">Local Logs</a></li>

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ public void run() {
354354
private ClusterStatusChore clusterStatusChore;
355355
private ClusterStatusPublisher clusterStatusPublisherChore = null;
356356

357+
private HbckChecker hbckChecker;
357358
CatalogJanitor catalogJanitorChore;
358359

359360
private ReplicationZKNodeCleanerChore replicationZKNodeCleanerChore;
@@ -991,6 +992,8 @@ private void finishActiveMasterInitialization(MonitoredTask status)
991992
getChoreService().scheduleChore(normalizerChore);
992993
this.catalogJanitorChore = new CatalogJanitor(this);
993994
getChoreService().scheduleChore(catalogJanitorChore);
995+
this.hbckChecker = new HbckChecker(this);
996+
getChoreService().scheduleChore(hbckChecker);
994997

995998
// NAMESPACE READ!!!!
996999
// Here we expect hbase:namespace to be online. See inside initClusterSchemaService.
@@ -1456,13 +1459,15 @@ private void stopChores() {
14561459
if (this.mobCompactThread != null) {
14571460
this.mobCompactThread.close();
14581461
}
1459-
14601462
if (this.quotaObserverChore != null) {
14611463
quotaObserverChore.cancel();
14621464
}
14631465
if (this.snapshotQuotaChore != null) {
14641466
snapshotQuotaChore.cancel();
14651467
}
1468+
if (this.hbckChecker != null) {
1469+
hbckChecker.cancel();
1470+
}
14661471
}
14671472

14681473
/**
@@ -3784,4 +3789,8 @@ public static void decorateMasterConfiguration(Configuration conf) {
37843789
}
37853790
}
37863791
}
3792+
3793+
public HbckChecker getHbckChecker() {
3794+
return this.hbckChecker;
3795+
}
37873796
}

0 commit comments

Comments
 (0)