• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java ClusterStatusTracker类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker的典型用法代码示例。如果您正苦于以下问题:Java ClusterStatusTracker类的具体用法?Java ClusterStatusTracker怎么用?Java ClusterStatusTracker使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ClusterStatusTracker类属于org.apache.hadoop.hbase.zookeeper包,在下文中一共展示了ClusterStatusTracker类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: becomeActiveMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Try becoming active master.
 * @param startupStatus
 * @return True if we could successfully become the active master.
 * @throws InterruptedException
 */
private boolean becomeActiveMaster(MonitoredTask startupStatus)
throws InterruptedException {
  // TODO: This is wrong!!!! Should have new servername if we restart ourselves,
  // if we come back to life.
  this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName,
      this);
  this.zooKeeper.registerListener(activeMasterManager);
  stallIfBackupMaster(this.conf, this.activeMasterManager);

  // The ClusterStatusTracker is setup before the other
  // ZKBasedSystemTrackers because it's needed by the activeMasterManager
  // to check if the cluster should be shutdown.
  this.clusterStatusTracker = new ClusterStatusTracker(getZooKeeper(), this);
  this.clusterStatusTracker.start();
  return this.activeMasterManager.blockUntilBecomingActiveMaster(startupStatus,
      this.clusterStatusTracker);
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:24,代码来源:HMaster.java


示例2: becomeActiveMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Try becoming active master.
 * @param startupStatus
 * @return True if we could successfully become the active master.
 * @throws InterruptedException
 */
private boolean becomeActiveMaster(MonitoredTask startupStatus)
throws InterruptedException {
  // TODO: This is wrong!!!! Should have new servername if we restart ourselves,
  // if we come back to life.
  this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName,
      this);
  this.zooKeeper.registerListener(activeMasterManager);
  stallIfBackupMaster(this.conf, this.activeMasterManager);

  // The ClusterStatusTracker is setup before the other
  // ZKBasedSystemTrackers because it's needed by the activeMasterManager
  // to check if the cluster should be shutdown.
  this.clusterStatusTracker = new ClusterStatusTracker(getZooKeeper(), this);
  this.clusterStatusTracker.start();
  return this.activeMasterManager.blockUntilBecomingActiveMaster(startupStatus);
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:23,代码来源:HMaster.java


示例3: initializeZooKeeper

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Bring up connection to zk ensemble and then wait until a master for this
 * cluster and then after that, wait until cluster 'up' flag has been set.
 * This is the order in which master does things.
 * Finally put up a catalog tracker.
 * @throws IOException
 * @throws InterruptedException
 */
private void initializeZooKeeper() throws IOException, InterruptedException {
  // Open connection to zookeeper and set primary watcher
  this.zooKeeper = new ZooKeeperWatcher(conf, REGIONSERVER + ":" +
    this.isa.getPort(), this);

  // Create the master address manager, register with zk, and start it.  Then
  // block until a master is available.  No point in starting up if no master
  // running.
  this.masterAddressManager = new MasterAddressTracker(this.zooKeeper, this);
  this.masterAddressManager.start();
  blockAndCheckIfStopped(this.masterAddressManager);

  // Wait on cluster being up.  Master will set this flag up in zookeeper
  // when ready.
  this.clusterStatusTracker = new ClusterStatusTracker(this.zooKeeper, this);
  this.clusterStatusTracker.start();
  blockAndCheckIfStopped(this.clusterStatusTracker);

  // Create the catalog tracker and start it;
  this.catalogTracker = new CatalogTracker(this.zooKeeper, this.conf,
    this, this.conf.getInt("hbase.regionserver.catalog.timeout", Integer.MAX_VALUE));
  catalogTracker.start();
}
 
开发者ID:lifeng5042,项目名称:RStore,代码行数:32,代码来源:HRegionServer.java


示例4: testRestartMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
@Test public void testRestartMaster() throws IOException, KeeperException {
  ZooKeeperWatcher zk = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(),
    "testActiveMasterManagerFromZK", null, true);
  try {
    ZKUtil.deleteNode(zk, zk.getMasterAddressZNode());
    ZKUtil.deleteNode(zk, zk.clusterStateZNode);
  } catch(KeeperException.NoNodeException nne) {}

  // Create the master node with a dummy address
  ServerName master = ServerName.valueOf("localhost", 1, System.currentTimeMillis());
  // Should not have a master yet
  DummyMaster dummyMaster = new DummyMaster(zk,master);
  ClusterStatusTracker clusterStatusTracker =
    dummyMaster.getClusterStatusTracker();
  ActiveMasterManager activeMasterManager =
    dummyMaster.getActiveMasterManager();
  assertFalse(activeMasterManager.clusterHasActiveMaster.get());

  // First test becoming the active master uninterrupted
  MonitoredTask status = Mockito.mock(MonitoredTask.class);
  clusterStatusTracker.setClusterUp();

  activeMasterManager.blockUntilBecomingActiveMaster(100, status);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);

  // Now pretend master restart
  DummyMaster secondDummyMaster = new DummyMaster(zk,master);
  ActiveMasterManager secondActiveMasterManager =
    secondDummyMaster.getActiveMasterManager();
  assertFalse(secondActiveMasterManager.clusterHasActiveMaster.get());
  activeMasterManager.blockUntilBecomingActiveMaster(100, status);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:36,代码来源:TestActiveMasterManager.java


示例5: DummyMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
public DummyMaster(ZooKeeperWatcher zk, ServerName master) {
  this.clusterStatusTracker =
    new ClusterStatusTracker(zk, this);
  clusterStatusTracker.start();

  this.activeMasterManager =
    new ActiveMasterManager(zk, master, this);
  zk.registerListener(activeMasterManager);
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:10,代码来源:TestActiveMasterManager.java


示例6: initializeZooKeeper

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Bring up connection to zk ensemble and then wait until a master for this cluster and then after
 * that, wait until cluster 'up' flag has been set. This is the order in which master does things.
 * Finally put up a catalog tracker.
 * @throws IOException
 * @throws InterruptedException
 */
private void initializeZooKeeper() throws IOException, InterruptedException {
  // Open connection to zookeeper and set primary watcher
  this.zooKeeper = new ZooKeeperWatcher(conf, REGIONSERVER + ":" + this.isa.getPort(), this);

  // Create the master address manager, register with zk, and start it. Then
  // block until a master is available. No point in starting up if no master
  // running.
  this.masterAddressManager = new MasterAddressTracker(this.zooKeeper, this);
  this.masterAddressManager.start();
  blockAndCheckIfStopped(this.masterAddressManager);

  // Wait on cluster being up. Master will set this flag up in zookeeper
  // when ready.
  this.clusterStatusTracker = new ClusterStatusTracker(this.zooKeeper, this);
  this.clusterStatusTracker.start();
  blockAndCheckIfStopped(this.clusterStatusTracker);

  // Create the catalog tracker and start it;
  this.catalogTracker = new CatalogTracker(this.zooKeeper, this.conf, this);
  catalogTracker.start();

  // watch for snapshots
  try {
    this.snapshotManager = new RegionServerSnapshotManager(this);
  } catch (KeeperException e) {
    this.abort("Failed to reach zk cluster when creating snapshot handler.");
  }
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:36,代码来源:HRegionServer.java


示例7: testRestartMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
@Test public void testRestartMaster() throws IOException, KeeperException {
  ZooKeeperWatcher zk = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(),
    "testActiveMasterManagerFromZK", null, true);
  try {
    ZKUtil.deleteNode(zk, zk.masterAddressZNode);
    ZKUtil.deleteNode(zk, zk.clusterStateZNode);
  } catch(KeeperException.NoNodeException nne) {}

  // Create the master node with a dummy address
  ServerName master = new ServerName("localhost", 1, System.currentTimeMillis());
  // Should not have a master yet
  DummyMaster dummyMaster = new DummyMaster(zk,master);
  ClusterStatusTracker clusterStatusTracker =
    dummyMaster.getClusterStatusTracker();
  ActiveMasterManager activeMasterManager =
    dummyMaster.getActiveMasterManager();
  assertFalse(activeMasterManager.clusterHasActiveMaster.get());

  // First test becoming the active master uninterrupted
  MonitoredTask status = Mockito.mock(MonitoredTask.class);
  clusterStatusTracker.setClusterUp();

  activeMasterManager.blockUntilBecomingActiveMaster(status,clusterStatusTracker);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);

  // Now pretend master restart
  DummyMaster secondDummyMaster = new DummyMaster(zk,master);
  ActiveMasterManager secondActiveMasterManager =
    secondDummyMaster.getActiveMasterManager();
  assertFalse(secondActiveMasterManager.clusterHasActiveMaster.get());
  activeMasterManager.blockUntilBecomingActiveMaster(status,clusterStatusTracker);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:36,代码来源:TestActiveMasterManager.java


示例8: DummyMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
public DummyMaster(ZooKeeperWatcher zk, ServerName master) {
  this.clusterStatusTracker =
    new ClusterStatusTracker(zk, this);
  clusterStatusTracker.start();
  
  this.activeMasterManager =
    new ActiveMasterManager(zk, master, this);
  zk.registerListener(activeMasterManager);
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:10,代码来源:TestActiveMasterManager.java


示例9: testRestartMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
@Test public void testRestartMaster() throws IOException, KeeperException {
  ZooKeeperWatcher zk = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(),
    "testActiveMasterManagerFromZK", null, true);
  try {
    ZKUtil.deleteNode(zk, zk.getMasterAddressZNode());
    ZKUtil.deleteNode(zk, zk.clusterStateZNode);
  } catch(KeeperException.NoNodeException nne) {}

  // Create the master node with a dummy address
  ServerName master = ServerName.valueOf("localhost", 1, System.currentTimeMillis());
  // Should not have a master yet
  DummyMaster dummyMaster = new DummyMaster(zk,master);
  ClusterStatusTracker clusterStatusTracker =
    dummyMaster.getClusterStatusTracker();
  ActiveMasterManager activeMasterManager =
    dummyMaster.getActiveMasterManager();
  assertFalse(activeMasterManager.clusterHasActiveMaster.get());

  // First test becoming the active master uninterrupted
  MonitoredTask status = Mockito.mock(MonitoredTask.class);
  clusterStatusTracker.setClusterUp();

  activeMasterManager.blockUntilBecomingActiveMaster(status);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);

  // Now pretend master restart
  DummyMaster secondDummyMaster = new DummyMaster(zk,master);
  ActiveMasterManager secondActiveMasterManager =
    secondDummyMaster.getActiveMasterManager();
  assertFalse(secondActiveMasterManager.clusterHasActiveMaster.get());
  activeMasterManager.blockUntilBecomingActiveMaster(status);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:36,代码来源:TestActiveMasterManager.java


示例10: initializeZooKeeper

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Bring up connection to zk ensemble and then wait until a master for this
 * cluster and then after that, wait until cluster 'up' flag has been set.
 * This is the order in which master does things.
 * Finally put up a catalog tracker.
 * @throws IOException
 * @throws InterruptedException
 */
private void initializeZooKeeper() throws IOException, InterruptedException {
  // Open connection to zookeeper and set primary watcher
  this.zooKeeper = new ZooKeeperWatcher(conf, REGIONSERVER + ":" +
    this.isa.getPort(), this);

  // Create the master address manager, register with zk, and start it.  Then
  // block until a master is available.  No point in starting up if no master
  // running.
  this.masterAddressManager = new MasterAddressTracker(this.zooKeeper, this);
  this.masterAddressManager.start();
  blockAndCheckIfStopped(this.masterAddressManager);

  // Wait on cluster being up.  Master will set this flag up in zookeeper
  // when ready.
  this.clusterStatusTracker = new ClusterStatusTracker(this.zooKeeper, this);
  this.clusterStatusTracker.start();
  blockAndCheckIfStopped(this.clusterStatusTracker);

  // Create the catalog tracker and start it;
  this.catalogTracker = new CatalogTracker(this.zooKeeper, this.conf, this);
  catalogTracker.start();

  // watch for snapshots
  try {
    this.snapshotManager = new RegionServerSnapshotManager(this);
  } catch (KeeperException e) {
    this.abort("Failed to reach zk cluster when creating snapshot handler.");
  }
}
 
开发者ID:wanhao,项目名称:IRIndex,代码行数:38,代码来源:HRegionServer.java


示例11: testRestartMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
@Test public void testRestartMaster() throws IOException, KeeperException {
  ZKWatcher zk = new ZKWatcher(TEST_UTIL.getConfiguration(),
    "testActiveMasterManagerFromZK", null, true);
  try {
    ZKUtil.deleteNode(zk, zk.znodePaths.masterAddressZNode);
    ZKUtil.deleteNode(zk, zk.znodePaths.clusterStateZNode);
  } catch(KeeperException.NoNodeException nne) {}

  // Create the master node with a dummy address
  ServerName master = ServerName.valueOf("localhost", 1, System.currentTimeMillis());
  // Should not have a master yet
  DummyMaster dummyMaster = new DummyMaster(zk,master);
  ClusterStatusTracker clusterStatusTracker =
    dummyMaster.getClusterStatusTracker();
  ActiveMasterManager activeMasterManager =
    dummyMaster.getActiveMasterManager();
  assertFalse(activeMasterManager.clusterHasActiveMaster.get());

  // First test becoming the active master uninterrupted
  MonitoredTask status = Mockito.mock(MonitoredTask.class);
  clusterStatusTracker.setClusterUp();

  activeMasterManager.blockUntilBecomingActiveMaster(100, status);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);

  // Now pretend master restart
  DummyMaster secondDummyMaster = new DummyMaster(zk,master);
  ActiveMasterManager secondActiveMasterManager =
    secondDummyMaster.getActiveMasterManager();
  assertFalse(secondActiveMasterManager.clusterHasActiveMaster.get());
  activeMasterManager.blockUntilBecomingActiveMaster(100, status);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);
}
 
开发者ID:apache,项目名称:hbase,代码行数:36,代码来源:TestActiveMasterManager.java


示例12: DummyMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
public DummyMaster(ZKWatcher zk, ServerName master) {
  this.clusterStatusTracker =
    new ClusterStatusTracker(zk, this);
  clusterStatusTracker.start();

  this.activeMasterManager =
    new ActiveMasterManager(zk, master, this);
  zk.registerListener(activeMasterManager);
}
 
开发者ID:apache,项目名称:hbase,代码行数:10,代码来源:TestActiveMasterManager.java


示例13: initializeZKBasedSystemTrackers

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Initialize all ZK based system trackers.
 * @throws IOException
 * @throws InterruptedException
 */
private void initializeZKBasedSystemTrackers() throws IOException,
    InterruptedException, KeeperException {
  this.catalogTracker = new CatalogTracker(this.zooKeeper, this.conf,
      this, conf.getInt("hbase.master.catalog.timeout", Integer.MAX_VALUE));
  this.catalogTracker.start();

  this.assignmentManager = new AssignmentManager(this, serverManager,
      this.catalogTracker, this.executorService);
  this.balancer = LoadBalancerFactory.getLoadBalancer(conf);
  zooKeeper.registerListenerFirst(assignmentManager);

  this.regionServerTracker = new RegionServerTracker(zooKeeper, this,
      this.serverManager);
  this.regionServerTracker.start();

  this.drainingServerTracker = new DrainingServerTracker(zooKeeper, this,
    this.serverManager);
  this.drainingServerTracker.start();

  // Set the cluster as up.  If new RSs, they'll be waiting on this before
  // going ahead with their startup.
  this.clusterStatusTracker = new ClusterStatusTracker(getZooKeeper(), this);
  this.clusterStatusTracker.start();
  boolean wasUp = this.clusterStatusTracker.isClusterUp();
  if (!wasUp) this.clusterStatusTracker.setClusterUp();

  LOG.info("Server active/primary master; " + this.serverName +
      ", sessionid=0x" +
      Long.toHexString(this.zooKeeper.getRecoverableZooKeeper().getSessionId()) +
      ", cluster-up flag was=" + wasUp);
}
 
开发者ID:lifeng5042,项目名称:RStore,代码行数:37,代码来源:HMaster.java


示例14: initializeZooKeeper

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
/**
 * Bring up connection to zk ensemble and then wait until a master for this
 * cluster and then after that, wait until cluster 'up' flag has been set.
 * This is the order in which master does things.
 * Finally put up a catalog tracker.
 * @throws IOException
 * @throws InterruptedException
 */
private void initializeZooKeeper() throws IOException, InterruptedException {
  // Open connection to zookeeper and set primary watcher
  this.zooKeeper = new ZooKeeperWatcher(conf, REGIONSERVER + ":" +
    this.isa.getPort(), this);

  // Create the master address manager, register with zk, and start it.  Then
  // block until a master is available.  No point in starting up if no master
  // running.
  this.masterAddressManager = new MasterAddressTracker(this.zooKeeper, this);
  this.masterAddressManager.start();
  blockAndCheckIfStopped(this.masterAddressManager);

  // Wait on cluster being up.  Master will set this flag up in zookeeper
  // when ready.
  this.clusterStatusTracker = new ClusterStatusTracker(this.zooKeeper, this);
  this.clusterStatusTracker.start();
  blockAndCheckIfStopped(this.clusterStatusTracker);

  // Create the catalog tracker and start it;
  this.catalogTracker = new CatalogTracker(this.zooKeeper, this.conf,
    this, this.conf.getInt("hbase.regionserver.catalog.timeout", 600000));
  catalogTracker.start();

  // Retrieve clusterId
  // Since cluster status is now up
  // ID should have already been set by HMaster
  try {
    String clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);
    if (clusterId == null) {
      this.abort("Cluster ID has not been set");
    }
    this.conf.set(HConstants.CLUSTER_ID, clusterId);
    LOG.info("ClusterId : "+clusterId);
  } catch (KeeperException e) {
    this.abort("Failed to retrieve Cluster ID",e);
  }
}
 
开发者ID:daidong,项目名称:DominoHBase,代码行数:46,代码来源:HRegionServer.java


示例15: testRestartMaster

import org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker; //导入依赖的package包/类
@Test public void testRestartMaster() throws IOException, KeeperException {
  ZooKeeperWatcher zk = new ZooKeeperWatcher(TEST_UTIL.getConfiguration(),
    "testActiveMasterManagerFromZK", null, true);
  try {
    ZKUtil.deleteNode(zk, zk.getMasterAddressZNode());
    ZKUtil.deleteNode(zk, zk.clusterStateZNode);
  } catch(KeeperException.NoNodeException nne) {}

  // Create the master node with a dummy address
  ServerName master = new ServerName("localhost", 1, System.currentTimeMillis());
  // Should not have a master yet
  DummyMaster dummyMaster = new DummyMaster(zk,master);
  ClusterStatusTracker clusterStatusTracker =
    dummyMaster.getClusterStatusTracker();
  ActiveMasterManager activeMasterManager =
    dummyMaster.getActiveMasterManager();
  assertFalse(activeMasterManager.clusterHasActiveMaster.get());

  // First test becoming the active master uninterrupted
  MonitoredTask status = Mockito.mock(MonitoredTask.class);
  clusterStatusTracker.setClusterUp();

  activeMasterManager.blockUntilBecomingActiveMaster(status,clusterStatusTracker);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);

  // Now pretend master restart
  DummyMaster secondDummyMaster = new DummyMaster(zk,master);
  ActiveMasterManager secondActiveMasterManager =
    secondDummyMaster.getActiveMasterManager();
  assertFalse(secondActiveMasterManager.clusterHasActiveMaster.get());
  activeMasterManager.blockUntilBecomingActiveMaster(status,clusterStatusTracker);
  assertTrue(activeMasterManager.clusterHasActiveMaster.get());
  assertMaster(zk, master);
}
 
开发者ID:daidong,项目名称:DominoHBase,代码行数:36,代码来源:TestActiveMasterManager.java



注:本文中的org.apache.hadoop.hbase.zookeeper.ClusterStatusTracker类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java ResourceContext类代码示例发布时间:2022-05-21
下一篇:
Java WBMPImageWriterSpi类代码示例发布时间:2022-05-21
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap