Secor

Kafka 日志持久化
授权协议 Apache
开发语言 Java
所属分类 程序开发、 日志工具(Logging)
软件类型 开源软件
地区 不详
投 递 者 訾安邦
操作系统 跨平台
开源组织 Pinterest
适用人群 未知
 软件概览

Secor 是 Pinerest 公司开发的一个服务,用来将 Kafka 日志持久化到 Amazon S3, Google Cloud StorageOpenstack Swift

特性:

  • 强大的一致性:只要Kafka在Secor能够读取邮件之前不丢弃邮件(例如,由于积极的清除策略),就可以确保将每封邮件保存在一个S3文件中。最终一致性模型导致的S3众所周知的时间不一致不会损害此属性,
  • 容错:Secor的任何组件都可以在任何给定时间崩溃,而不会影响数据完整性,
  • 负载分配:Secor可以分布在多台机器上,
  • 水平可扩展性:扩展系统以处理更多负载就像启动额外的Secor流程一样容易。可以通过取消任何正在运行的Secor进程来减少资源占用。增长或下降都不会对数据一致性产生任何影响,
  • 输出分区:Secor解析传入的消息,并将它们放在分区的s3路径下,以便直接导入到Hive等系统中。secor支持日期,小时,分钟级别的分区
  • 可配置的上传策略:通过基于大小和基于时间的策略来配置控制何时将数据保留在S3中的提交点​​(例如,当本地缓冲区达到100MB且每小时至少一次时上传数据),
  • 监视:跟踪各种性能属性的度量标准通过OstrichMicrometer公开,并可以选择导出到OpenTSDB / statsD
  • 可定制性:可以通过更新配置来加载外部日志消息解析器,
  • 事件转换:外部消息级别转换可以通过使用自定义类来完成。
  • Qubole接口:Secor连接到Qubole,以将最终的输出分区添加到Hive表。
 相关资料
  • 我正在使用一组持久的函数来完成一些关键的后端逻辑和操作,我希望它们在同一个文件中写入日志,这样我就可以进行更好的分析。对了,我知道我正在使用log.information方法注入的ILog实例,但是每个函数都编写自己的日志文件。 我也在使用application insights,但由于遥测采样,文件中的信息比application insights要多得多。 以下是我的host.json文件的示

  • 我正在将日志消息写入Kafka Topic,我希望此主题的保留是永久的。我在Kafka和Kafka Connect(_schemas、连接-配置、连接-状态、连接-偏移等)中看到,有一些特殊主题不会因日志保留时间而删除。如何强制一个主题像这些其他特殊主题一样?是命名约定还是其他属性? 谢啦

  • 有两个相互调用的持久函数。主配乐- 每个func都有ILogger依赖项,并在函数开始和函数结束时登录。由于某种原因,两个编排器都重复了“on start”消息。(见图)活动没有这种效果。(见图)多次运行下面的示例-同一个故事。 我也相信整个过程已经触发一次。 这是编排器中的错误还是预期的行为?

  • Akka持久化使有状态的actor能留存其内部状态,以便在因JVM崩溃、监管者引起,或在集群中迁移导致的actor启动、重启时恢复它。Akka持久化背后的关键概念是持久化的只是一个actor的内部状态的的变化,而不是直接持久化其当前状态 (除了可选的快照)。这些更改永远只能被附加到存储,没什么是可变的,这使得高事务处理率和高效复制成为可能。有状态actor通过重放保存的变化来恢复,从而使它们可以重

  • 我曾经在SGS2 I9100(4.1.2)上测试我的应用程序,在设备出现缺陷后,我购买了华为Ascend P6(4.2)。我必须总是在HiSuite模式下连接它,这在PC上启动了他们讨厌的同步软件,USB调试将无法工作否则。好吧,我已经习惯了,但每当我运行我的应用程序时,我都会看到这个日志(标记为警告),并用我的应用程序标记(应用程序仍然运行,没有任何问题): 问题是,这个警告是我在LogCat中

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • Spark通过在操作中将其持久保存在内存中,提供了一种处理数据集的便捷方式。在持久化RDD的同时,每个节点都存储它在内存中计算的任何分区。也可以在该数据集的其他任务中重用它们。 我们可以使用或方法来标记要保留的RDD。Spark的缓存是容错的。在任何情况下,如果RDD的分区丢失,它将使用最初创建它的转换自动重新计算。 存在可用于存储持久RDD的不同存储级别。通过将对象(Scala,Java,Pyt

  • Redis 支持持久化,即把数据存储到硬盘中。 Redis 提供了两种持久化方式: RDB 快照(snapshot) - 将存在于某一时刻的所有数据都写入到硬盘中。 只追加文件(append-only file,AOF) - 它会在执行写命令时,将被执行的写命令复制到硬盘中。 这两种持久化方式既可以同时使用,也可以单独使用。 将内存中的数据存储到硬盘的一个主要原因是为了在之后重用数据,或者是为了防