storm+flume+kafka+redis+zookeeper

zookeeper 为分布式系统提供一致性协调(Coordination)服务,Client与ZooKeeper之间的通信,需要创建一个Session

https://www.2cto.com/net/201806/756084.html     https://www.cnblogs.com/felixzh/p/5869212.html

配置DNS映射: 将zkCluster的标识lgprc通过DNS解析到对应的ZooKeeper集群的地址

创建ZNode: 在对应的ZooKeeper上创建/NameService/hdfs/lgprc-example结点,将HDFS的配置文件存储于该结点下

用户程序要访问hdfs://lgprc-example/的HDFS集群,首先通过DNS找到lgprc的ZooKeeper机群的地址,然后在ZooKeeper的/NameService/hdfs/lgprc-example结点中读取到HDFS的配置,进而根据得到的配置,得到HDFS的实际访问入口

https://www.jianshu.com/p/b19702403a6e生产者Producer,消费者Consumer,消费者组Consumer Group,代理Broker(我更喜欢叫他中介者),备份Replica,主题Topic,分区Partition,领导Leader,下属Fllower,isr解决了两件事,一个是动态维护replica列表,保证了消息接受的高效性和一致性,一个是leader挂掉时选取新leader很容易。broker由zookkeper维护。kafka是一个消息系统

  1. Topic:特指Kafka处理的消息源(feeds of messages)的不同分类。
  2. Partition:Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。
  3. Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。
  4. Producers:消息和数据生产者,向Kafka的一个topic发布消息的过程叫做producers。
  5. Consumers:消息和数据消费者,订阅topics并处理其发布的消息的过程叫做consumers。
  6. Broker:缓存代理,Kafa集群中的一台或多台服务器统称为broker。https://blog.csdn.net/burpee/article/details/78773738

高吞吐量,分布式,由consumer处理,可以将数据持久化到磁盘中

source:source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
channel:source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的——对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。
sink:sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、Hbase、solr、自定义。

flume编写三个对应的配置信息,启动服务器,打开telnet.在sink查看。 https://www.cnblogs.com/wangtao1993/p/6404232.html

写入kafka# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
 
# 描述和配置source组件:r1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /opt/datas/tmp.log
 
# 描述和配置sink组件:k1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = flumetopic
a1.sinks.k1.kafka.bootstrap.servers = hadoop01:9092,hadoop02:9092,hadoop03:9092,hadoop04:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.ki.kafka.producer.compression.type = snappy
 
# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
 
# 描述和配置source  channel   sink之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

RPC原理  https://blog.csdn.net/u012165769/article/details/88205604

redis知识 https://blog.csdn.net/zlc3323/article/details/80836881

 

Redis是一个基于内存且支持持久化的key-value的NoSQL数据库,其中每个key和value都是使用对象表示的,具有以以下特征:多样数据类型、持久化、主从同步。

和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的使用RDB快照的方式,把更新的数据写入磁盘或者使用类似MySQL的AOF日志方式把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis支持将数据同步到多台从数据库上,这种特性对提高读取性能非常有益。

 

https://my.oschina.net/u/2330181/blog/1987299 页面缓存,数据缓存,redis

 https://www.jianshu.com/p/0b70133ee040     实时流计算案例

 

Topology Storm中运行的一个实时应用程序的名称。将 Spout、 Bolt整合起来的拓扑图。定义了 Spout和 Bolt的结合关系、并发数量、配置等等

使用OutputFieldsDeclarer.declareStream来定义多个stream,然后使用SpoutOutputCollector来发射指定的stream

Bolt 接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作

Tuple 一次消息传递的基本单元,理解为一组消息就是一个Tuple

Stream Tuple的集合。表示数据的流向。

 在Storm中,Topology任务一旦提交后永远不会结束,除非你显示去停止任务。计算任务Topology是由不同的Spouts和Bolts,通过数据流(Stream)连接起来的图一个Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:

 https://www.2cto.com/net/201806/756083.html

并发和通信机制  https://www.cnblogs.com/frankdeng/p/9572017.html   https://www.cnblogs.com/cxzdy/p/5513316.html

简单的storm实现 https://blog.csdn.net/sinat_38718822/article/details/83063893

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值