`
josephgao
  • 浏览: 14721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

scribe使用BufferStore

 
阅读更多
一. BufferStore

BufferStore,它包含两个Store, 笔者这里primaryStore是hdfsFileStore,secondaryStore是stdFileStore。

整个BufferStore工作的时候是一个有限状态自动机,有以下几个状态:
DISCONNECTED, SENDING_BUFFER, STREAMING, 
三个状态的含义是主store挂球, 主store恢复并从次store 恢复数据,主store正常工作

有两种事件会可能改变状态
1. handleMessage
     if(STREAMING) primaryStore->handleMessage, if fail ,从STREAMING跳到DISCONNECT
     if(!STREAMING), secondaryStore->handleMessage(这时候出问题数据丢失)

2. periodCheck(定期检查)
     if(DISCONNECTED && ts-lastTs>period) primaryStore->open, if success&&replayBuffer 从STREAMING跳到SENDING_BUFFER, if success&&!replayBuffer,从STREAMING跳到STREAMING, if !success,保持DISCONNECTED

     if(SENDING_BUFFER), 将secondaryStore积累的消息flush到primaryStore,如果成功了跳到STREAMING, 如果失败或者报异常跳到DISCONNECTED

changeStore做的事情, 如果前状态是STREAMING, secondaryStore->open
如果后状态是DISCONNECTED, 增加retrytimes,重新设置retryinterval, 如果secondaryStore没open, open

如果后状态是STREAMING, sencondaryStore->close

如果后状态是SENDING_BUFFER, try secondaryStore->open if not

二. 与hadoop-1.0.4工作时候的问题
     HdfsFile.cpp 在创建hdfsFileSystem时候使用的是hdfsConnectNewInstance,对每次创建返回一个new的对象,但是hadoop-1.0.4的libhdfs 中没有这个接口  ,所以笔者先将其改为hdfsConnect, 但是这样会出现一个问题, 这个connect返回的是一个全局的singleton, 这样第一个categoryA的消息来了建立一次,正常工作,第二个categoryB来了再调用一次,正常工作,但是再来一次第一个categoryA的消息时,其HdfsFile对象的fileSys已经没有了hdfsfilesystem的句柄了(假装自己是c++大牛, 其实就是不work了,不知道是不是它的句柄被释放了),这样问题就来了,处在STREAMING状态,但是写不进去东西,这样就会跳到DISCONNECTED,这样两个category的消息交错进入scribed,两个category的自动机就会不停的跳状态,然后交错使用primary 和 secondary两个store,然后还要将secondary 的数据buffer进primary,这样其实是个不正常的状态
     限于笔者屎一般的c++能力,笔者将HdfsFile的fileSys做成了这个类的静态成员变量,所有category的primaryStore 的HdfsFile对象都共用一个hdfsFileSystem,就不贴代码了,
     笔者觉得正经的做法是在libhdfs里面仿照  hadoop-0.21添加一个hdfsConnectNewInsance的接口重新生成一个库,供Scribed调用,不过如前文所说限于笔者屎一般的c++能力,还是交给大牛去做吧
分享到:
评论

相关推荐

    fb303,使用Java连接Scribe必备的JAR包

    包含编译好的FacebookService, fb_status, FacebookBase, LogEntry, ResultCode, scribe类。 按照完thrift和scribe后,就不用自己生成了。

    Oauth实例(使用Scribe-java)

    Oauth实例(使用Scribe-java实现新浪微博的Oauth)

    scribe软件

    scribe软件

    VideoScribe.3.2.003

    如果您想自己尝试一下,则可以以某种方式安装摄像机并花费数小时进行绘制,但是更有效的方法是使用VideoScribe。它使您可以创建自己绘制的视频演示文稿。界面的现代设计及其直观的控件使此过程尽可能简单。 该软件...

    scribe-1.3.5.jar

    scribe-1.3.5.jar

    scribe详细安装文档

    很好的东西,描述如何详细的安装scribe,编写安装脚本

    scribe客户端所需jar包

    scribe客户端所需要用到的jar包,里面还包含一个java客户端用log4j向scribe服务端发送日志的小例子

    facebook scribe

    facebook的log系统 - scribe

    VideoScribe.7z

    VideoScribe.exeVideoScribe.exeVideoScribe.exeVideoScribe.exeVideoScribe.exeVideoScribe.exe

    scribe-2.2.tar.gz

    scribe-2.2.tar.gz 下载地址: https://github.com/facebook/scribe Scribe is a server for aggregating log data streamed in real time from a large number of servers. It is designed to be scalable, ...

    VideoScribe

    VideoScribe手绘视频制作软件

    Facebook大量数据处理 Scribe.zip

    Facebook大量数据处理 Scribe ,Scribe旨在帮助Facebook处理服务器上的大量数据,正像Scribe网页所述“如经常访问Fa...

    Flat earth scribe

    Flat earth scribe

    VideoScribe for mac版

    一款非常有趣的手绘动画视频制作软件,我们经常会看到一些创意动画视频,其中就有一只拿着画笔的手画出整幅画面,就像快进效果的沙画一样。这种手绘视频不仅有创意,还可以装X,自己可以制定视频内容,可以是你跟你...

    Scribe日志记录讲解

    thrift框架的分布式日志记录框架,支持多种语言实现。

    scribe日志系统文档

    scribe日志系统使用文档 本文档描述scribe日志的发送,日志内容分析,用户行为的统计,系统错误信息的记录和统计内容和错误内容的查询

    scribe+thrift+fb303已经编译好的rpm包,直接下载安装使用

    最佳环境 CentOS 5.4 Scribe真正可用rpm安装包 apache-thrift-0.7.0-1.x86_64.rpm,fb303-0.7.0-1.x86_64.rpm,scribe-2.2-3.x86_64.rpm。无需编译,一命令安装。简单快捷,方便部署。 ============================...

    scribe-2.1.tar.gz

    Scribe is a server for aggregating log data streamed in real time from a large number of servers. It is designed to be scalable, extensible without client-side modification, and robust to failure of ...

    scribe-version-2.01.tar.gz

    Scribe is a server for aggregating log data streamed in real time from a large number of servers. It is designed to be scalable, extensible without client-side modification, and robust to failure of ...

    scribe-log4j:将日志消息发送到 Scribe 的 log4j appender

    scribe-example - 使用示例 入门 克隆仓库 git clone https://github.com/caiiiycuk/scribe-log4j.git 将 scribe-client 安装到本地 maven 仓库 cd scribe-log4j/scribe-client mvn install 运行聚合日志的 scribe...

Global site tag (gtag.js) - Google Analytics