cassandra streaming 操作(翻译2)

请求(Request)
1. 目标节点编译一个它需要从其他节点获取的范围列表。
2. 目标节点发送一个包含key范围列表的StreamRequestMessage消息给源节点。
3. 源节点准备指定范围的sstable 文件,并创建暂挂文件。
4. 源节点流传输列表中俄第一个文件。第一个流的头部包含当前流的信息以及剩余的请求范围内的暂挂文件列表。
5. 目标节点接收流并写入到磁盘,产生相应的日志信息"Streaming added org.apache.cassandra.io.sstable.SSTableReader(path='/var/lib/cassandra/data/Keyspace1/Standard1-e-1-Data.db')".
6. 目标节点根据此指引一次请求一个后续文件。如果发生错误,则重复请求相同的文件,否则继续直到完成。
7. 源节点流传输每一个请求的文件。因为文件已经进行anti-compact,所以仅仅流传输到目标节点。

流传输调用(Streaming Invocations)
Cassandra节点间流输出会在如下场景中用到:
1. Bootstrapping - 在bootstrap过程中,一个节点向其他节点请求key范围,调用Stream Request.
2. Repair - 逆熵服务通过比较Merkle Tree进行修复操作,在这个过程的最后一步就是按照上面的流程顺序将冲突的key范围传送到其他节点,或向其他节点请求冲突的key范围。
3. Restore Replica - StorageService处理Stream request。
4. Un-bootstrap - 在节点退出或移动过程,调用un-bootstrap将节点范围传送到其他节点。此过程只调用传输(Transfer)操作

监控(Monitoring)
Anti-compaction操作既进行request又进行transfer操作,所以耗费时间最长,可以使用org.apache.cassandra.db.CompactionManager这个mbean进行监控。
流传输的监控可以同时在源节点和目标节点调用MBEAN org.apache.cassandra.streaming.StreamingService .状态属性提供了一个简单的标示表明进行流输出节点的正在进行的处理。getOutgoingFiles(host) 和 getIncomingFiles(host)两个操作返回一个字符串列表描述正传入和传出文件的状态。每个字符串的格式如下:
[path to file] [bytes sent/received]/[file size]
如果认为集群中流操作花费了太多时间,你首先要做的是检查StreamSources 或者StreamDestinations以明确哪些节点在传输文件。使用主机作为getOutgoingFiles() 或 getIncomingFiles()的参数检查问题主机每个文件的状态。流传输被分割成32M大小的的片段,所以应该每个几秒中刷新文件状态检查发送/接收值是否改变。如果一直没变或者比预期的要慢很多,那么表明存在问题。
流状态可以使用下面的方式监控:
nodetool -h streams[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23937368/viewspace-1054982/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23937368/viewspace-1054982/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值