看源码,老实说我没什么很好的方法。所以,只能静下心来看,一步一步的看。
我认为每个程序都有个门,要想进入,首先得把这个门找到,而我找到的katta的门是Katta.java
Katta.java中有个main方法,接收你输入的命令(String[] args)
1.startNode
2.startMaster
3.version
4.zk
5.search
6.addIndex
7.removeIndex
8.mergeIndexes
9.listIndexes
10.listNodes
11.showStructure
12.check
13.listErrors
14.redeployIndex
如果想要知道有多少个节点已经连接了,那么输入listIndexes
main方法先判断是否有值输入,如果没有调用printUsageAndExit(),给出输入的格式并退出程序。
现在当然是有输入咯,然后就是要Katta显示所有节点了,它调用Katta的构造函数
katta = new Katta();
Katta的构造函数,它调用了ZkConfiguration ,ZKClient的构造函数。
public Katta() throws KattaException {
final ZkConfiguration configuration = new ZkConfiguration();
_zkClient = new ZKClient(configuration);
_zkClient.start(10000);
}
ZkConfiguration 它继承了KattaConfiguration类,KattaConfiguration类是一个配置类,它读取katta.zk.properties
文件,生成Properties,方便下一步的读取操作。
ZKClient它实现了Zookeeper的Watcher,Watcher是一个事件处理程序的接口。
_zkClient = new ZKClient(configuration);
在ZKClient的构造函数中,把configuration作为参数传了进去,然后读取katta.zk.properties这个文件的
zookeeper.servers,zookeeper.timeout和zookeeper.clientPort
_zkClient.start(10000);
打开一个Zookeeper的客户端,并等待Zookeeper服务器的连接。
使用同步的机制, getEventLock().lock();
调用ZooKeeper的构造函数:
ZooKeeper _zk = new ZooKeeper(_servers, _timeOut, this);
把从katta.zk.properties这个文件中读取的服务器名,超时时间和Zookeeper它本身作为参数传入这个构造函数。
在Zookeeper的构造函数中又调用了ClientCnxn 的构造函数
ClientCnxn cnxn = new ClientCnxn(host, sessionTimeout, this);
ClientCnxn 为客户端管理socket的i/o,并保持一份可用的服务器连接。
在ClientCnxn的构造函数中调用了两个线程,SendThread和EventThread
SendThread 这个类服务那些即将离任的请求队列。
EventThread 这个类服务于返回的信息事件。
当ZooKeeper的状态为CONNECTED时说明已经连接。
katta实例调用它的listNodes()方法以显示节点
在listNodes()方法中,调用ZKClient的getKnownNodes()方法,返回一个List对象。
NodeMetaData nodeMetaData = new NodeMetaData();
Katta把节点信息封装到NodeMetaData 对象中。
Table table = new Table();
table.addRow(nodeMetaData.getName(), nodeMetaData.getStartTimeAsDate(), nodeState.name());
把需要显示的数据封装到Katta的Table中
System.out.println(table.toString());
显示出来。
分享到:
- 2009-04-14 10:39
- 浏览 2907
- 评论(3)
- 论坛回复 / 浏览 (1 / 2575)
- 查看更多
相关推荐
1. **分片与复制**:Katta将索引分割成多个分片,每个分片可以在多个节点上进行复制,以提高可用性和性能。当某个节点故障时,系统能够自动切换到其他节点的副本,保证服务不间断。 2. **分布式查询处理**:Katta...
在压缩包文件katta-core-0.6.4中,包含了Katta项目的主干代码和核心库。开发者可以通过研究源码,深入了解Katta的实现细节,如索引分片策略、查询优化机制等,以便更好地利用Katta解决实际问题。同时,社区提供的...
通过深入研究`code-katta-master`压缩包中的源代码,我们可以更详细地了解项目的实现细节,包括它的设计模式、组件交互、配置选项以及如何扩展以适应不同的需求。这个项目为Java开发者提供了一种高效的方式来处理...
多斯蒂·卡塔(Dosti Katta) 一种社交媒体应用程序,人们可以结识来自世界各地的数百万新朋友,并与他们建立联系以结交新朋友 :men_holding_hands: 网站网址 特征 - Authentication - Profile Viewing - Set ...
21011.1.3 深入HiveQL 21311.1.4 Hive小结 22111.2 其他Hadoop相关的部分 22111.2.1 HBase 22111.2.2 ZooKeeper 22111.2.3 Cascading 22111.2.4 Cloudera 22211.2.5 Katta 22211.2.6 CloudBase 22211.2.7 Aster Data...
Katta 是一个灵感来源于 Hive 和 HBase 运行机制的大数据工具。 索引的导入机制类似 Hive 对表数据的管理; 基于 Index 和 Shard 机制又非常类似于 Hbase 对 Table 和 Region 的管理; 内部 ZooKeeper 的选举机制,...
BigDesk Plugin 提供节点的实时状态监控,Elasticsearch Head Plugin 是一个客户端工具,Kibana 是 ES 官方推荐的数据报表和搜索工具。 七、ES 自动映射的规则? ES 映射是用于确定字段类型,将新增的每个字段数据...
HEKA Patchmaster进口商 将 HEKA Patchmaster 文件... 核心功能基于 sigTool ( https://doi.org/10.1016/j.neuron.2015.10.042和https://github.com/irondukepublishing/sigTOOL ) 的 HEKA 导入器,并从 Sammy Katta ( ...
它提供了丰富的文本分析、索引和查询功能,为开发者提供了强大的文本搜索能力。基于Lucene的开源搜索引擎则是在Lucene基础上进行了扩展和封装,提供了更高级别的功能和服务,适用于各种场景和需求。 1. Apache Solr...
覆盆子用于处理 NGS 大数据的快速并行质量控制工具作者:Mohan AVSK Katta ( 、Aamir W Khan ( )、Dadakhalandar Doddamani ( ) 和 Rajeev K Varshney ( ) 基因组学卓越中心ICRISAT,海得拉巴,印度关于处理数百或数...