草庐IT

Partition

全部标签

【Java面试】什么是 ISR,为什么需要引入 ISR

Hi,大家好,我是Mic。一个工作5年的粉丝,在简历上写精通Kafka。结果在面试的时候直接打脸。面试官问他:“什么是ISR,为什么需要设计ISR”然后他一脸懵逼的看着面试官.下面看看普通人和高手的回答。普通人:ISR好像是Kafka里面的一个机制吧。为什么要引入,应该是跟数据同步有关系。高手:好的,关于这个问题,我需要从几个方面来回答。首先,发送到KafkaBroker上的消息,最终是以Partition的物理形态来存储到磁盘上的。而Kafka为了保证Parititon的可靠性,提供了Paritition的副本机制,然后在这些Partition副本集里面。存在LeaderPartition和

MySQL8.0性能优化(实践)

一台几年前的旧笔记本电脑的虚拟系统运行环境,作为本次实践的运行工具,仅供参考。案例环境:Linux、Docker、MySQLCommunity8.0.31、InnoDB。过早的MySQL版本不一定适用本章内容,仅围绕InnoDB引擎的阐述。作者:[Sol·wang]-博客园,原文出处:https://www.cnblogs.com/Sol-wang/p/17076128.html一、索引1.1索引的管理--create方式创建create[unique]index{index_name}on{tab_name}({col_name}[(length)])[invisible];--alter表

MySQL8.0性能优化(实践)

一台几年前的旧笔记本电脑的虚拟系统运行环境,作为本次实践的运行工具,仅供参考。案例环境:Linux、Docker、MySQLCommunity8.0.31、InnoDB。过早的MySQL版本不一定适用本章内容,仅围绕InnoDB引擎的阐述。作者:[Sol·wang]-博客园,原文出处:https://www.cnblogs.com/Sol-wang/p/17076128.html一、索引1.1索引的管理--create方式创建create[unique]index{index_name}on{tab_name}({col_name}[(length)])[invisible];--alter表

合理安排kafka的broker、partition、consumer数量

broker的数量最好大于等于partition数量一个partition最好对应一个硬盘,这样能最大限度发挥顺序写的优势。一个broker如果对应多个partition,需要随机分发,顺序IO会退化成随机IO。实验条件:3个Broker,1个Topic,无Replication,异步模式,3个Producer,消息Payload为100字节:第一阶段:当Partition数量小于Broker个数时,Partition数量越大,吞吐率越高,且呈线性提升。Kafka会将所有Partition均匀分布到所有Broker上,所以当只有2个Partition时,会有2个Broker为该Topic服务。

合理安排kafka的broker、partition、consumer数量

broker的数量最好大于等于partition数量一个partition最好对应一个硬盘,这样能最大限度发挥顺序写的优势。一个broker如果对应多个partition,需要随机分发,顺序IO会退化成随机IO。实验条件:3个Broker,1个Topic,无Replication,异步模式,3个Producer,消息Payload为100字节:第一阶段:当Partition数量小于Broker个数时,Partition数量越大,吞吐率越高,且呈线性提升。Kafka会将所有Partition均匀分布到所有Broker上,所以当只有2个Partition时,会有2个Broker为该Topic服务。

Hive分区分桶

分区分区概念在逻辑上分区表与未分区表没有区别,在物理上分区表会将数据按照分区键的列值存储在表目录的子目录中,目录名=“分区键=键值”。其中需要注意的是分区键的值不一定要基于表的某一列(字段),它可以指定任意值,只要查询的时候指定相应的分区键来查询即可。我们可以对分区进行添加、删除、重命名、清空等操作。分为静态分区和动态分区两种,静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。分区案例Hive的分区功能可以帮助用户快速的查找和定位,这里我们给出了一个应用场景,通过使用

Hive分区分桶

分区分区概念在逻辑上分区表与未分区表没有区别,在物理上分区表会将数据按照分区键的列值存储在表目录的子目录中,目录名=“分区键=键值”。其中需要注意的是分区键的值不一定要基于表的某一列(字段),它可以指定任意值,只要查询的时候指定相应的分区键来查询即可。我们可以对分区进行添加、删除、重命名、清空等操作。分为静态分区和动态分区两种,静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。分区案例Hive的分区功能可以帮助用户快速的查找和定位,这里我们给出了一个应用场景,通过使用

PostgreSQL 的窗口函数 OVER, WINDOW, PARTITION BY, RANGE

最近在数据处理中用到了窗函数,把使用方法记录一下,暂时只有分组排序和滑动时间窗口的例子,以后再逐步添加场景在SQL查询时,会遇到有两类需要分组统计的场景,在之前的SQL语法中是不方便实现的场景1:顾客维修设备的记录表,每次维修产生一条记录,每个记录包含时间,顾客ID和维修金额,要取出每个顾客的维修次数和最后一次维修时的金额场景2:还是上面的维修记录表,要取出每个顾客的每次维修之间的时间间隔场景3:一个用户账户的交易流水表,要求每个小时的交易笔数和平均收支金额,这个平均数的统计范围是两个小时(整点时间的前后一个小时)使用窗函数直接SQL中使用窗函数就能解决这些问题,否则需要使用临时表,函数或存储

PostgreSQL 的窗口函数 OVER, WINDOW, PARTITION BY, RANGE

最近在数据处理中用到了窗函数,把使用方法记录一下,暂时只有分组排序和滑动时间窗口的例子,以后再逐步添加场景在SQL查询时,会遇到有两类需要分组统计的场景,在之前的SQL语法中是不方便实现的场景1:顾客维修设备的记录表,每次维修产生一条记录,每个记录包含时间,顾客ID和维修金额,要取出每个顾客的维修次数和最后一次维修时的金额场景2:还是上面的维修记录表,要取出每个顾客的每次维修之间的时间间隔场景3:一个用户账户的交易流水表,要求每个小时的交易笔数和平均收支金额,这个平均数的统计范围是两个小时(整点时间的前后一个小时)使用窗函数直接SQL中使用窗函数就能解决这些问题,否则需要使用临时表,函数或存储

ETL的系统核心特征

目录ETL系统核心特征数据重跑及其优化重跑的场景重跑的方式重跑的优化自动水平扩展参考链接ETL系统核心特征数据重跑及其优化重跑的场景场景导致原因影响kafkaconsumerpoll消息失败1.网络问题;2.kafkabroker磁盘坏道,拉取消息一直失败或其他kafka原因导致一个或多个topic&partition的消息未消费完整硬件故障,机器重启磁盘满、硬件故障等机器宕机、重启、yarn内部机制会重新在另外一个nodeManager节点重新分配宕机节点的mappertask,可能会造成数据重复taskkilled1.yarn主动killedtask:①,mapper初始化某个逻辑卡住,导