首先,這是一個棘手的問題。這是我們設計的拼接機(開源),希望它可以幫助...
(1)創建一個MasterObserver(協處理器):這是一個條目模式創建的一個點。
(2)創建一個從區域服務器的呼叫,他們拿出來調用主機(例如創建特定InitTable)如果飼養員沒有找到該模式初始化標誌。
(3)具有與MasterObserver覆蓋preCreateTable和在一個線程阻塞方式那裏執行您模式創建(從區域服務器即。塊其他請求)。直到我們的字典被初始化(模式)之前,我們並不想要我們的JDBC/ODBC端口,同時我們也想確保我們有一個區域服務器可用於創建的表。
(4)在創建結束時,讓MasterObserver向zookeeper寫入一個初始化標誌。這是至關重要的,因爲它處理的部分創建情況下迅速反彈服務器時,可以發生等
代碼示例:
MasterObserver代碼段
@Override
public void preCreateTable(ObserverContext<MasterCoprocessorEnvironment> ctx, HTableDescriptor desc, HRegionInfo[] regions) throws IOException {
SpliceLogUtils.info(LOG, "preCreateTable %s", Bytes.toString(desc.getTableName().getName()));
if (Bytes.equals(desc.getTableName().getName(), INIT_TABLE)) {
switch(manager.getState()){
case NOT_STARTED:
boot();
case BOOTING_ENGINE:
case BOOTING_GENERAL_SERVICES:
case BOOTING_SERVER:
throw new PleaseHoldException("Please Hold - Starting");
case RUNNING:
throw new DoNotRetryIOException("Success");
case STARTUP_FAILED:
case SHUTTING_DOWN:
case SHUTDOWN:
throw new IllegalStateException("Startup failed");
}
}
}
隨時檢查出
RegionLifecycleObserver和SpliceMasterObserver在我們的github帳戶上。
https://github.com/splicemachine/spliceengine
好運。
怎麼樣一個腳本來檢查的最後100行HBase的日誌,直到日誌'''master.HMaster:出現主已完成initialization'''? –