partition

全网最通俗易懂的Kafka入门!

守給你的承諾、 提交于 2019-12-06 16:22:13
摘自: https://www.cnblogs.com/Java3y/p/11982381.html 全网最通俗易懂的Kafka入门! 前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star: https://github.com/ZhongFuCheng3y/3y 在这篇之前已经写过两篇基础文章了, 强烈建议 先去阅读: 什么是ZooKeeper? 什么是消息队列? 众所周知,消息队列的产品有好几种,这里我选择学习Kafka的原因,无他,公司在用。 我司使用的是Kafka和自研的消息队列(Kafka和RocketMQ)改版,于是我就想学学Kafka这款消息队列啦。本篇文章对Kafka入门,希望对大家有所帮助。 本文知识点提前预览: 这篇文章花了我很长时间画图,目的是希望以最通俗易懂的方式带大家入门,如果觉得不错, 希望能给我点个赞 ! 一、什么是Kafka? 首先我们得去官网看看是怎么介绍Kafka的: https://kafka.apache.org/intro 在收集资料学习的时候,已经发现有不少的前辈对官网的介绍进行翻译和总结了,所以我这里就不重复了,贴下地址大家自行去学习啦: https://scala.cool/2018/03/learning-kafka-1/ https://colobu.com/2014/08/06/kafka

2.kafka架构深入——生产者

戏子无情 提交于 2019-12-06 15:23:08
一个topic有多个partition,每个partition又有多个副本,在这些副本中又有一个leader和多个follower。 1)分区的原因 (1)方便在集群中扩展,每个Partition可以通过调整以适应它所在的机器,而一个topic又可以有多个Partition组成,因此整个集群就可以适应任意大小的数据了; (2)可以提高并发,因为可以以Partition为单位读写了。 2)分区的原则 我们需要将producer发送的数据封装成一个ProducerRecord对象。 (1)指明 partition 的情况下,直接将指明的值直接作为 partiton 值; (2)没有指明 partition 值但有 key 的情况下,将 key 的 hash 值与 topic 的 partition 数进行取余得到 partition 值; (3)既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition 值,也就是常说的 round-robin 算法。 生产者发送到topic的数据可靠性保证 为保证producer发送的数据,能可靠的发送到指定的topic,topic的每个partition收到producer发送的数据后

linux磁盘管理及命令

前提是你 提交于 2019-12-06 15:17:44
一、查看磁盘信息 1、df +参数+目录或文件名:检查文件系统的磁盘空间占用情况   参数: -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; -k :以 KBytes 的容量显示各文件系统; -m :以 MBytes 的容量显示各文件系统; -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式; -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出; -i :不用硬盘容量,而以 inode 的数量来显示 2、du +参数+目录或文件名:对文件和目录磁盘使用的空间的查看 参数 -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示; 二、磁盘操作 1、磁盘分区 # 分区工具 fdisk [-l] 装置名称 -l :输出后面接的装置所有的分区内容 输入 m 后,就会看到底下这些命令介绍 a toggle a bootable flag b edit

[转帖]插曲:大白话带你认识Kafka

坚强是说给别人听的谎言 提交于 2019-12-06 14:10:07
插曲:大白话带你认识Kafka 2019-11-18 21:58:27 从事Java 阅读数 2 更多 分类专栏: java Kafaka 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_45674354/article/details/103132612 本文内容过长,文末小编准备了彩蛋!希望读者喜欢! 前言 应大部分的小伙伴的要求,在Yarn之前先来一个kafka的小插曲,轻松愉快。 一、Kafka基础 消息系统的作用 应该大部份小伙伴都清楚,用机油装箱举个例子 所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。 引入一个场景,我们知道中国移动,中国联通,中国电信的日志处理,是交给外包去做大数据分析的,假设现在它们的日志都交给了你做的系统去做用户画像分析。 ​​ ​​ 按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的作用而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。 1.Topic 主题 kafka学习了数据库里面的设计,在里面设计了topic(主题),这个东西类似于关系型数据库的表 ​ ​ 此时我需要获取中国移动的数据,那就直接监听TopicA即可 2

impala进阶

寵の児 提交于 2019-12-06 12:15:39
一、impala存储 1、文件类型 2、压缩方式 二、impala分区 1、创建分区方式 partitioned by 创建表时,添加该字段指定分区列表: create table t_person(id int, name string, age int) partitioned by (type string); 使用alter table 进行分区的添加和删除操作: alter table t_person add partition (sex=‘man'); alter table t_person drop partition (sex=‘man'); alter table t_person drop partition (sex=‘man‘,type=‘boss’); 2、分区内添加数据 insert into t_person partition (type='boss') values (1,’zhangsan’,18),(2,’lisi’,23) insert into t_person partition (type='coder') values (3,wangwu’,22),(4,’zhaoliu’,28),(5,’tianqi’,24) 3、查询指定分区 select id,name from t_person where type=‘coder’ 三

Java Partition Surface into Little Squares

旧街凉风 提交于 2019-12-06 11:50:02
问题 I would like to know if there is any algorithm that does something like this: Given a specific surface it divides it into smaller rectangles of the same size. Something like this example figure: The grey area is the surface, and the red squares is the partition itself. I am thinking if there is a optimized way to do this. A very bad approach would be a for loop in all the pixels and check if there is a rectangle for that specific spot, if not, would create a rectangle, and so on.. Maybe

数据库优化策略之分区、分表、表分区

 ̄綄美尐妖づ 提交于 2019-12-06 09:54:18
分库、分表、表分区 来源场景:读写分离以后可分为一个主库 ( 主库负责写 ) 加上 N 多个从库 ( 从库负责读 ) , 但是因为业务量的扩大,主库还是无法承受写入的压力,那么此时就可以考虑分库、分表、表分区 来进一步优化 分库: 场景 1 :比如一个系统涵盖了订单 \ 物流 \ 仓储 ..... 等等 垂直分库,按业务拆分库,不同库不同的服务器 场景 2:订单增删改特别大 水平分库,每个库结构一致数据不一致 (地域/时间/类别/随机算法) 分表 场景 1 : 文章表, 10个常规字段+1个很长的内容字段 垂直分表,减小表体积,提升增删改查的效率 场景 2: 单表数据量太大 (订单表/商品表) 水平分表 (地域/时间/类别/随机算法) 表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里。 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个 cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。 所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高 select效率,还可以对历史数据经行区分存档等。但是数据量少的数据就不要凑这个热闹啦,因为表分区会对数据库产生不必要的开销,除啦性能还会增加实现对象的管理费用和复杂性。

Spark aggregate on multiple columns within partition without shuffle

强颜欢笑 提交于 2019-12-06 07:02:59
问题 I'm trying to aggregate a dataframe on multiple columns. I know that everything I need for the aggregation is within the partition- that is, there's no need for a shuffle because all of the data for the aggregation are local to the partition. Taking an example, if I have something like val sales=sc.parallelize(List( ("West", "Apple", 2.0, 10), ("West", "Apple", 3.0, 15), ("West", "Orange", 5.0, 15), ("South", "Orange", 3.0, 9), ("South", "Orange", 6.0, 18), ("East", "Milk", 5.0, 5)))

Spring Batch Partitioning inject stepExecutionContext parameter in itemReader

…衆ロ難τιáo~ 提交于 2019-12-06 03:13:50
I am trying to learn Spring Batch with Partitioner. The issue is that I need to set the filenames dynamically from the Partitioner implementation. And I am trying to get it in the itemReader . But it gives filename null . My Spring Batch configuration: @Bean @StepScope public ItemReader<Transaction> itemReader(@Value("#{stepExecutionContext[filename]}") String filename) throws UnexpectedInputException, ParseException { FlatFileItemReader<Transaction> reader = new FlatFileItemReader<Transaction>(); DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer(); String[] tokens = { "username",

Spark性能优化

[亡魂溺海] 提交于 2019-12-06 03:09:44
Spark性能优化 1)避免创建重复RDD 2)尽可能复用同一个RDD 3)对多次使用的RDD进行持久化 4)尽量避免使用shuffle类算子 5)使用map-side预聚合的shuffle操作 6)使用高性能的算子 7)广播大变量 8)使用Kryo优化序列化性能 9)优化数据结构 10)资源参数调优 1)避免创建重复RDD ​ 对于同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据。 2)尽可能复用同一个RDD ​ 除了要避免在开发过程中对一份完全相同的数据创建多个RDD之外,在对不同的数据执行算子 操作时还要尽可能地复用一个RDD。比如说,有一个RDD的数据格式是key-value类型的,另 一个是单value类型的,这两个RDD的value数据是完全一样的。那么此时我们可以只使用key-value类型的那个RDD,因为其中已经包含了另一个的数据。对于类似这种多个RDD的数据有重叠或者包含的情况,我们应该尽量复用一个RDD,这样可以尽可能地减少RDD的数量,从而尽可能减少算子执行的次数。 3)对多次使用的RDD进行持久化 Spark中对于一个RDD执行多次算子的默认原理是这样的:每次你对一个RDD执行一个算子操作时,都会重新从源头处计算一遍,计算出那个RDD来,然后再对这个RDD执行你的算子操作。因此对于这种情况,建议是:对多次使用的RDD进行持久化