partition

Kafka 原理和实战

半世苍凉 提交于 2019-11-27 21:43:06
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平台、移动浏览器、推荐广告和大数据、人工智能等相关开发和架构。目前在vivo智能平台中心从事 AI中台建设以及广告推荐业务。擅长各种业务形态的业务架构、平台化以及各种业务解决方案。 博客地址: http://arganzheng.life 。 背景 最近要把原来做的那套集中式日志监控系统进行迁移,原来的实现方案是: Log Agent => Log Server => ElasticSearch => Kibana,其中Log Agent和Log Server之间走的是Thrift RPC,自己实现了一个简单的负载均衡(WRB)。 原来的方案其实运行的挺好的,异步化Agent对应用性能基本没有影响。支持我们这个每天几千万PV的应用一点压力都没有。不过有个缺点就是如果错误日志暴增,Log Server这块处理不过来,会导致消息丢失。当然我们量级没有达到这个程度,而且也是可以通过引入队列缓冲一下处理。不过现在综合考虑,其实直接使用消息队列会更简单。PRC,负载均衡,负载缓冲都内建实现了。另一种方式是直接读取日志,类似于logstash或者flume的方式

Kafka 原理和实战

自作多情 提交于 2019-11-27 21:41:19
本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平台、移动浏览器、推荐广告和大数据、人工智能等相关开发和架构。目前在vivo智能平台中心从事 AI中台建设以及广告推荐业务。擅长各种业务形态的业务架构、平台化以及各种业务解决方案。 博客地址: http://arganzheng.life 。 背景 最近要把原来做的那套集中式日志监控系统进行迁移,原来的实现方案是: Log Agent => Log Server => ElasticSearch => Kibana,其中Log Agent和Log Server之间走的是Thrift RPC,自己实现了一个简单的负载均衡(WRB)。 原来的方案其实运行的挺好的,异步化Agent对应用性能基本没有影响。支持我们这个每天几千万PV的应用一点压力都没有。不过有个缺点就是如果错误日志暴增,Log Server这块处理不过来,会导致消息丢失。当然我们量级没有达到这个程度,而且也是可以通过引入队列缓冲一下处理。不过现在综合考虑,其实直接使用消息队列会更简单。PRC,负载均衡,负载缓冲都内建实现了。另一种方式是直接读取日志,类似于logstash或者flume的方式

How to paginate a list of objects in Java 8?

喜夏-厌秋 提交于 2019-11-27 20:13:33
Given a java.util.List with n elements and a desired page size m , I want to transform it to a map containing n/m+n%m elements. Each map element shall contain m elements. Here's an example with integers: List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // What is the equivalent Java 8 code to create the map below from my list? Map<Integer, List<Integer>> map = new HashMap<>(); map.put(0, Arrays.asList(1,2,3)); map.put(1, Arrays.asList(4,5,6)); map.put(2, Arrays.asList(7,8,9)); map.put(3, Arrays.asList(10)); Is this possible, using Java 8? Alexis C. You could use IntStream

SPARK总结之RDD

安稳与你 提交于 2019-11-27 19:25:01
一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做 弹性分布式数据集 , 是Spark中最基本的数据抽象 ,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 1.2 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner,即RDD的分片函数

go操作kafka

我们两清 提交于 2019-11-27 18:55:52
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展等特点。本文介绍了如何使用Go语言发送和接收kafka消息。 sarama Go语言中连接kafka使用第三方库: github.com/Shopify/sarama 。 下载及安装 go get github.com/Shopify/sarama 注意事项 sarama v1.20之后的版本加入了 zstd 压缩算法,需要用到cgo,在Windows平台编译时会提示类似如下错误: # github.com/DataDog/zstd exec: "gcc":executable file not found in %PATH% 所以在Windows平台请使用v1.19版本的sarama。 连接kafka发送消息 package main import ( "fmt" "github.com/Shopify/sarama" ) // 基于sarama第三方库开发的kafka client func main() { config := sarama.NewConfig() config.Producer.RequiredAcks = sarama.WaitForAll // 发送完数据需要leader和follow都确认 config

kafka集群安装和使用

馋奶兔 提交于 2019-11-27 15:48:45
kafka (1)kafka是一个分布式的消息缓存系统 (2)kafka集群中的服务器都叫做broker (3)kafka有两类客户端,一个叫做producer(消息生产者),一类叫做consumer(消息消费者),客户端和broker服务器之间采用TCP协议连接 (4)kafka中的消息可以通过topic进行区分,而且每一个消息topic都会被分区,以分担消息服务器的负载 (5)每一个分区都可以有多个副本,以防止数据的丢失 (6)某一个分区中的数据如果需要更新,都必须通知该分区所有副本中的leader来更新 (7)消费者可以分组,比如有两个消费者组A和B,共同消费一个topic:order_info,A和B所消费的消息不会重复,如order_info中有100个消息,每个消息都有一个id,编号从1-99,那么如果A组消费从0-49,B组消费就从50-99,当然不一定都是连续的 (8)消费者在具体消费某个topic中的消息时,可以制定起始偏移量 集群安装 官网教程 http://kafka.apache.org/22/documentation.html#introduction 1.解压 2.修改server.properties broker.id=1 zookeeper.connect=hadoop01:2182,hadoop02:2182,hadoop03:2182 3

Apache kafka 简介

人盡茶涼 提交于 2019-11-27 15:35:49
kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据 kafka名词解释 Broker:Kafka 集群包含一个或多个服务器,这种服务器被称为 broker。 Topic:每条发布到 Kafka 集群的消息都有一个类别,这个类别被称为 Topic。(物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个 broker 上,但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)。 Partition:Partition 是物理上的概念,每个 Topic 包含一个或多个 Partition。 Producer:负责发布消息到 Kafka broker。 Consumer:消息消费者,向 Kafka broker 读取消息的客户端。 Consumer Group:每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 group name,若不指定 group name 则属于默认的 group)。 每个消息(也叫作record记录,也被称为消息)是由一个key,一个value和时间戳构成。 基本原理及架构 消息模型可以分为两种:队列和发布-订阅式。队列的处理方式是一组消费者从服务器读取消息,一条消息只有其中的一个消费者来处理。在发布

fdisk分区命令

谁说胖子不能爱 提交于 2019-11-27 15:26:44
fdisk是Linux系统中最常用的分区工具,通过这个命令也可以查看系统中所有可用的分区,但是这个命令只支持MBR的分区表(这句话应该只对某些系统,CentOS7-1810适用,Debian9.5和openSUSE15应该已经支持GPT分区表,下面对fdisk的操作都是在Debian9.5下操作),所以这个命令不能对大于2T的硬盘进行分区,大于2T的硬盘我们需要用GPT分区表来进行分区,GPT分区我们就要用gdisk或parted分区工具来进行分区。 Linux 内核是如何理解硬盘的? 作为人类,我们可以很轻松地理解一些事情;但是电脑就不是这样了,它们需要合适的命名才能理解这些。 在 Linux 中,外围设备都位于 /dev 挂载点,内核通过以下的方式理解硬盘: /dev/hdX[a-z]: IDE 硬盘被命名为 hdX /dev/sdX[a-z]: SCSI 硬盘被命名为 sdX /dev/xdX[a-z]: XT 硬盘被命名为 xdX /dev/vdX[a-z]: 虚拟硬盘被命名为 vdX /dev/fdN: 软盘被命名为 fdN /dev/scdN or /dev/srN: CD-ROM 被命名为 /dev/scdN 或 /dev/srN 一、fdisk参数使用方法: fdisk [-l] 设备名 参数 -l :显示指定磁盘设备的分区表信息,如果没有指定磁盘设备,则显示

Drop multiple partitions based on date

时光怂恿深爱的人放手 提交于 2019-11-27 14:54:31
I have a table based on daily partitions. I can drop a paritition using the below query ALTER TABLE MY_TABLE DROP PARTITION FOR(TO_DATE('19-DEC-2017','dd-MON-yyyy')) How can I drop all the partitions(multiple partitions) before 15days? You can use PL/SQL like this. DECLARE CANNOT_DROP_LAST_PARTITION EXCEPTION; PRAGMA EXCEPTION_INIT(CANNOT_DROP_LAST_PARTITION, -14758); ts TIMESTAMP; BEGIN FOR aPart IN (SELECT PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'MY_TABLE') LOOP EXECUTE IMMEDIATE 'BEGIN :ret := '||aPart.HIGH_VALUE||'; END;' USING OUT ts; IF ts < SYSTIMESTAMP -