首先,这是一个棘手的问题。这是我们设计的拼接机(开源),希望它可以帮助...
(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'''? –