topic

Spack学习笔记

丶灬走出姿态 提交于 2019-12-27 01:46:08
一。 spark 是一个快速且通用的集群计算平台 基于内存的运算 通用性;降低维护成本 Spack的设计容纳了其它分布式系统拥有的功能 批处理,迭代式计算,交互查询和流处理等 spark是高度开放的;Python Java scala haddoop 二。 spark core: 包含spark的基本功能,任务调度,内存管理,容错机制 内部定义了RDDs,弹性分布式数据集 spark sql: 是spark处理结构化数据的库 spark streaming: 实时数据流处理组件,类似Storm Spaek Streaming提供了API来提供操作实时流数据。 应用场景,企业中用来从Kafka接收数据做实时统计。 milb: 包含通用机器学习功能的包,分类,聚类,回归 支持起集群上的横向扩展 机器学习 graphx: 处理图的库,并进行图的并行计算 cluster managers: 集群管理,Spark自带一个集群管理是单独调度器。 常见的集群管理包括Hadoop YARN,Apache Mesos 紧密集成的优点 1.spark底层优化了,基于spark的底层组件也会得到相应的优化。 2.紧密继承节省了各个组价组合使用时的部署,测试等时间 3.向spark增加新的组件时,其他组件,可立刻享用新组建的功能。 三。 spark与Hadoop的比较 Hadoop的应用场景:离线处理

kafka exactly-once

£可爱£侵袭症+ 提交于 2019-12-26 23:17:05
2018年,Apache Kafka以一种特殊的设计和方法实现了强语义的exactly-once和事务性。 这篇文章将讲解kafka中exactly-once和事务操作的原理,具体为 (1)exactly-once在kafka中的定义。 (2)数据生产者“幂等操作”,kafka的事务性以及exactly-once实现原理。 (3)exactly-once的流处理。 1. 什么是恰好一次exactly-once exactly-once定义为: 不管在处理的时候是否有错误发生,计算的结果(包括所有所改变的状态)都一样。 所以,在计算的时候如果发生了一个错误,系统重新计算,重新计算的结果和没有错误发生所得到的结果是一样的,因为这些计算操作是“恰好一次的”。这有另外一个专业术语:“幂等操作”。 为什么exactly-once那么重要呢?(1)在流处理操作中,很多应用场景必须需要“恰好一次”的支持。比如生活着有一个很重要的使用场景:在转账给朋友的时候,用户只希望一次转账,如果不支持“恰好一次”,那么就无法保障在违背用户本意的情况下重复转账。(2)对于kafka而言,其是流处理平台的核心部件,因为kafka通常作为公司内部的消息系统中间件,是其他系统的消息传输的桥梁。(3)支持exactly-once操作可以解锁更过的应用,比如金融行业应用。 使用Kafka进行流处理通常主要包含三个步骤

Kafka 之 入门

情到浓时终转凉″ 提交于 2019-12-26 23:16:37
摘要: 最近研究采集层,对Kafka做了一个研究。分为入门,中级,高级步步进阶。本篇主要介绍基本概念,适用场景。 一、 入门 1. 简介 Kafka is a distributed, partitioned, replicated commit log service 。它提供了类似于JMS 的特性,但是在设计实现上完全不同,此外它并不是JMS 规范的实现。kafka 对消息保存时根据Topic 进行归类,发送消息者成为Producer, 消息接受者成为Consumer, 此外kafka 集群有多个kafka 实例组成,每个实例(server) 成为broker 。无论是kafka 集群,还是producer 和consumer 都依赖于zookeeper 来保证系统可用性集群保存一些meta 信息。 下面这张图描述更准确。 主要特性: 1 )消息持久化 要从大数据中获取真正的价值,那么不能丢失任何信息。Apache Kafka 设计上是时间复杂度O(1) 的磁盘结构,它提供了常量时间的性能,即使是存储海量的信息(TB 级)。 2 )高吞吐 记住大数据,Kafka 的设计是工作在标准硬件之上,支持每秒数百万的消息。 3 )分布式 Kafka 明确支持在Kafka 服务器上的消息分区,以及在消费机器集群上的分发消费,维护每个分区的排序语义。 4 )多客户端支持 Kafka

Kafka集群搭建

眉间皱痕 提交于 2019-12-26 23:10:11
Kafka初识 Kafka使用背景 在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行统计,分析出当前的流行趋势 有些数据,存储数据库浪费,直接存储硬盘效率又低 这些场景都有一个共同点: 数据是由上游模块产生,上游模块,使用上游模块的数据计算、统计、分析,这个时候就可以使用消息系统,尤其是分布式消息系统! Kafka的定义 What is Kafka:它是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量。 Kafka和其他主流分布式消息系统的对比 定义解释: Java 和 scala都是运行在JVM上的语言。 erlang和最近比较火的和go语言一样是从代码级别就支持高并发的一种语言,所以RabbitMQ天生就有很高的并发性能,但是 有RabbitMQ严格按照AMQP进行实现,受到了很多限制。kafka的设计目标是高吞吐量,所以kafka自己设计了一套高性能但是不通用的协议,他也是仿照AMQP( Advanced Message Queuing Protocol 高级消息队列协议)设计的。 事物的概念:在数据库中

NSQ源码剖析之nsqd

纵然是瞬间 提交于 2019-12-26 18:18:19
NSQ简介 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征,是一个成熟的、已在大规模生成环境下应用的产品。 NSQ 由 3 个守护进程组成: nsqd 是接收、保存和传送消息到客户端的守护进程。 nsqlookupd 是管理的拓扑信息,维护着所有nsqd的状态,并提供了最终一致发现服务的守护进程。 nsqadmin 是一个 Web UI 来实时监控集群和执行各种管理任务。 这篇文章介绍主要介绍nsqd的实现。 Topic与Channel Topic与Channel是NSQ中重要的两个概念。 生产者将消息写到Topic中,一个Topic下可以有多个Channel,每个Channel都是Topic的完整副本。 消费者从Channel处订阅消息,如果有多个消费者订阅同一个Channel,Channel中的消息将被传递到一个随机的消费者。 要理解Topic Channel中各种chan的作用,关键是要理解golang中如何在并发环境下如何操作一个结构体(多个goroutine同时操作topic),与C/C++多线程操作同一个结构体时加锁(mutex,rwmutex)不同,go语言中一般是为这个结构体(topic,channel

Kafka入门初探+伪集群部署

岁酱吖の 提交于 2019-12-26 16:18:37
Kafka是目前非常流行的消息队列中间件,常用于做普通的消息队列、网站的活性数据分析(PV、流量、点击量等)、日志的搜集(对接大数据存储引擎做离线分析)。 全部内容来自网络,可信度有待考证!如有问题,还请及时指正。 概念介绍 在Kafka中消息队列分为三种角色: producer ,即生产者,负责产生日志数据。 broker ,存储节点,负责按照 topic 中的 partition 分区,均匀分布式的存储分区。 consumer ,即消费者,负责读取使用 broker 中的分区。 producer Kafka系统中的生产者,用于产生数据并发送给broker进行存储。由于需要与broker中的分区保持socket连接,因此需要在zk中维护生产者与分区broker的对应关系。同一个topic下的数据,会以某种负载均衡的方式发送到不同的分区中。 broker Broker可以当做Kafka中的存储节点,数据按照topic组织,按照某种负载均衡方式分配到不同的分区中。一个Topic由多个分区组成,每个分区可以设置备份数量。分区由一个leader+多个followers组成,生产者直接与leader进行沟通,leader接收消息后,其他的followers会同步这个消息。所有的follwers同步消息后,该消息才会成为可消费的状态。 Broker中Topic与分区,分区与生产者

Kafka生产者与消费者详解

£可爱£侵袭症+ 提交于 2019-12-25 18:42:03
什么是 Kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。 Kafka 的基本术语 消息:Kafka 中的数据单元被称为消息,也被称为记录,可以把它看作数据库表中某一行的记录。 批次:为了提高效率, 消息会分批次写入 Kafka,批次就代指的是一组消息。 主题:消息的种类称为 主题(Topic),可以说一个主题代表了一类消息。相当于是对消息进行分类。主题就像是数据库中的表。 分区:主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现 kafka 的伸缩性,单一主题中的分区有序,但是无法保证主题中所有的分区有序 生产者: 向主题发布消息的客户端应用程序称为生产者(Producer),生产者用于持续不断的向某个主题发送消息。 消费者:订阅主题消息的客户端程序称为消费者(Consumer),消费者用于处理生产者产生的消息。 消费者群组:生产者与消费者的关系就如同餐厅中的厨师和顾客之间的关系一样,一个厨师对应多个顾客,也就是一个生产者对应多个消费者,消费者群组(Consumer Group)指的就是由一个或多个消费者组成的群体。 偏移量:偏移量(Consumer Offset

分布式进阶(二十) Kafka简介

北战南征 提交于 2019-12-24 22:01:43
一、简介 1.1 概述 Kafka是最初由Linkedin公司开发,是一个 分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统) ,常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应用场景是: 日志收集系统和消息系统。 Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在线水平扩展 1.2 消息系统介绍 一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。 Kafka就是一种发布-订阅模式。 1.3 点对点消息传递模式 在点对点消息系统中,消息持久化到一个队列中。此时

NSQ

主宰稳场 提交于 2019-12-24 14:14:44
NSQ NSQ介绍 NSQ 是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。 NSQ的优势有以下优势: NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证 NSQ支持横向扩展,没有任何集中式代理。 NSQ易于配置和部署,并且内置了管理界面。 NSQ的应用场景 通常来说,消息队列都适用以下场景。 异步处理 参照下图利用消息队列把业务流程中的非关键流程异步化,从而显著降低业务请求的响应时间。 应用解耦 通过使用消息队列将不同的业务逻辑解耦,降低系统间的耦合,提高系统的健壮性。后续有其他业务要使用订单数据可直接订阅消息队列,提高系统的灵活性。[nsq应用场景1] 流量削峰 类似秒杀(大秒)等场景下,某一时间可能会产生大量的请求,使用消息队列能够为后端处理请求提供一定的缓冲区,保证后端服务的稳定性。 安装 官方下载页面 根据自己的平台下载并解压即可。 NSQ组件 nsqd nsqd是一个守护进程,它接收、排队并向客户端发送消息。 启动 nsqd ,指定 -broadcast-address=127.0.0.1 来配置广播地址 ./nsqd -broadcast-address=127.0.0.1 如果是在搭配 nsqlookupd 使用的模式下需要还指定 nsqlookupd 地址: ./nsqd -broadcast-address

Apache Kafka 消息队列篇

淺唱寂寞╮ 提交于 2019-12-24 05:02:55
概述 Kafka是Apache软件基金会的开源的流处理平台,该平台提供了消息的订阅与发布,能够基于Kafka实现对网络日志流实时在线处理,在这个维度上弥补了Hadoop的离线分析系统的不足。因为基于hadoop的MapReduce系统分析离线数据延迟较高,而且不支持动态数据处理和分析。Kafka的流处理平台不仅仅可以为离线系统储备数据(通常使用Kafka作为数据缓冲),而且Kafka自身也提供了一套数据流的处理机制,实现对数据流在线处理,比如: 统计。 消息队列的概念 可以用于系统间通讯的一个组件-middle ware(中间件),该组件可以用于做消息缓冲的中间件(持久化)解决一些 并发处理、数据库缓冲等实现对高并发的业务场景的削峰填谷。 使用消息队列的场景分析 1.异步消息发送: 使用Kafka MQ功能实现模块间异步通信,把一些费时的操作交给额外的服务或者设备去执行,这样可以提升系统运行效率,加速连接释放的速度,例如:用户注册模块,在用户注册成功后,业务系统需要给用户发送一个通知短信,通知用户登录邮箱去激活刚注册的用户信息。这种业务场景如图所示,因为短信通知和邮件发送是一个比较耗时的操作,所以在这里没必要将短信和邮件发送作为注册模块的流程,使用Message Queue功能可以将改业务和主业务注册分离,这样可以缩短用户浏览器和服务建立的链接时间,同时也能满足发送短信和邮件的业务