- 浏览: 105690 次
- 性别:
- 来自: 重庆
最新评论
-
ppqq1121827:
重新启动 报异常
storm trident实战 trident state -
ppqq1121827:
第一次启动正常,结束程序,重新启动抛异常16:37:34,99 ...
storm trident实战 trident state -
zhuwensheng:
它是怎么感知leader不可用需要选举新的leader呢
kafka的文件格式和副本的Leader选举
文章列表
一:简介
因为项目需要,最近研究了下restful风格的编程方式,这里也Jersey为例。Jersey是一个restful框架,其提供了面向切面的Providers功能,一般情况下我们可以手动注册到Application中,但是它支持更加灵活的方式,这就是jerse ...
一、kafka的文件存储 在kafka中,一个topic可以有多个分区,分区在物理上是单独存放的,为了数据安全,一个分区可以有多个副本,而每个分区都有单独的leader来负责读写请求。我们可以通过命令
bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 2 --partitions 3 --topic test
来创建一个topic,同时指定副本数和分区数,通过命令
bin/kafka-topics.sh --describe --zookeeper master:2181 - ...
一、前言 storm通过保证数据至少被处理一次来保证数据的完整性,由于元祖可以重发,对于一些需要数据精确的场景,可以考虑用storm trident实现。 传统的事物型拓扑中存在几种bolt: 1.1 BasicBolt 这是最基本的Bolt,BasicBolt ...
一:kafka简介 Kafka 是一个分布式的,可划分的,多订阅者,冗余备份的持久性的日志服务,可以简单理解为一个消息中间件。二:kafka的特点 1:分布式 kafka的producer,consumer,broker都是分布式的,可水平扩展,无需停机。 2:持久化 kafka将日志持久化到磁盘,通过将消息持久化到磁盘(磁盘线性读写)以及它的replication机制,保证数据的不丢失,通常一个topic会有多个分区,不同的分区分布在不同的server上,而每个分区又可以有多个副本,这样既提高了并行处理的能力,又保证了消息的可靠,因为越多的partition意味着可以接 ...
一、kafka基础
本篇文章讨论的kafka版本是目前最新版 0.10.1.0。
1.1 kafka种的KafkaController
所有broker会通过ZooKeeper选举出一个作为KafkaController,来负责:
监控所有broker的存活,以及向他们发送相关的执行命令。
分 ...
一、Storm trident filter
filter通过返回true和false。来判断是否对信息过滤。
1.1 代码
public static void main(String[] args) throws InterruptedException,
AlreadyAliveException, InvalidTopologyException,
AuthorizationException {
FixedBatchSpout spout = new FixedBatchSpout(new Fields("a" ...
一、认识storm trident trident可以理解为storm批处理的高级抽象,提供了分组、分区、聚合、函数等操作,提供一致性和恰好一次处理的语义。 1)元祖被作为batch处理 2)每个batch的元祖都被指定唯一的一个事物id,如果因为处理失败导致batch重发,也和保证和重发前一样的事物id 3)数据更新操作严格有序,比如batch1必须在batch2之前被成功处理,且如果batch1失败了,后面的处理也会失败。 假如: batch1处理1--20 batch2处理21--40 batch1处理失败,那么batc ...
一:事件监听
原生zookeeper的事件监听采用Watcher实现,不过Watcher监听是一次性的,如果需要继续监听该事件,必须重新注册。Curator中采用cache来封装了对事件的监听,包括监听节点,监听子节点等,下面分别做介绍1.1 NodeCache Node ...
一:Zookeeper权限控制
在zk集群中,不同的应用之间一般不会存在共享数据,为了避免某一个数据被不同的进程修改,这就需要进行相应的权限控制。
二:ACL介绍
Zookeeper使用ACL机制来实现权限的控制,ACL机制主要分为3个方面, ...
一:redis过期键删除策越 1:惰性删除:每次get的时候才判断key是否过期,如果过期才会执行删除,这样会导致大量的过期key占用内存。 2:定期删除:通过设置删除频率和时长(需要根据实际情况,可以压数据,看某个时间范围内过期的key有多少,占用多少内存,大概需要多久才能删除完),在某个时候执行删除操作,并只执行设置的时长时间,这样既降低了CPU消耗时间(不会长时间占用cpu去执行删除过期key的操作),同时也避免了一定的内存浪费(删除一定时长,即使还存在未删除的key,也可以下次删除) 3: 过期键不会对RDB和AOF有影响(执行save(阻塞主进程),bgsave(直接f ...
一、前言
groupBy分组操作,根据指定属性进行分组,如果后面是aggregate()的话,先根据partitionBy分区,在每个partition上分组,分完组后,在每个分组上进行聚合。
二、实战
main:
public static void main(String[] args) throws Exception {
/**
* 多设置几个并行度,分组后如果分组不够,那么将有并行度空闲跑者
*/
@SuppressWarnings("unchecked")
FixedBatchSpout spou ...
一、前言
对于不使用trident的人来说,使用基本的storm spout,bolt操作,需要理解storm的ack机制,保证消息的完整性,Storm 提供了三种不同层次的消息保证机制,分别是 At Most Once、At Least Once 以及 Exactly Once。消息保证机制依赖于消息是否被完全处理。
怎样才认为消息被完全处理?每个从 Spout发出的 Tuple可能会生成成千上万个新的 Tuple,形成一棵 Tuple 树,当整棵 Tuple 树的节点都被成功处理了,我们就说从 Spout 发出的 Tuple 被完全处理了。
这里我主要给不使用tr ...
一、前言
先有batch,因为trident内部是基于batch来实现的,然后有partition,分区后再分配并发度,然后才能进行并发处理。并发度的分配是利用parallelismHint来实现。
二、实战
main方法
public static void main(String[] args) throws AlreadyAliveException,
InvalidTopologyException, AuthorizationException, IOException {
FixedBatchSpout spout = new FixedB ...
一、 重定向
重定向定义了我们的tuple如何被route到下一个处理层,当然不同的层之间可能会有不同的并行度。storm提供了如下的重定向操作: shuffle:通过随机分配算法来均衡tuple到各个分区 broadcast:每个tuple都被广播到所有的分区,这种方式在drcp时非常有用,比如在每个分区上做stateQuery partitionBy:根据指定的字段列表进行划分,具体做法是用指定字段列表的hash值对分区个数做取模运算,确保相同字段列表的数据被划分到同一个分区。 global:所有的tuple都被发送到一个分区,这个分区用来处理整个 ...
一:功能介绍 基于数组的有界阻塞队列,基于FIFO的存储模式,支持公平非公平锁。二:源码分析
//数组
final Object[] items;
//出队索引
int takeIndex;
//入队索引
int putIndex;
//队列大小
int count;
//可重入锁
final ReentrantLock lock;
//等待通知条件
private final Condition notEmpty;
//等待通知条件
pri ...