kafka常见计算

Kafka机器数量计算

经验公式:Kafka机器数量= 2 (峰值生产速度 副本数 / 100)+ 1

1)峰值生产速度

峰值生产速度可以压测得到。

2)副本数

副本数默认是1个,在企业里面2-3个都有,2个居多。

副本多可以提高可靠性,但是会降低网络传输效率。

例子:

先拿到峰值生产速度,再根据设定的副本数,就能预估出需要部署Kafka的数量。

比如我们的峰值生产速度是50M/s。副本数为2。

Kafka机器数量 = 2 (50 2 / 100)+ 1 = 3台

Kafka分区数计算

(1)创建一个只有1个分区的topic

(2)测试这个topic的producer吞吐量和consumer吞吐量。

(3)假设他们的值分别是Tp和Tc,单位可以是MB/s。

(4)然后假设总的目标吞吐量是Tt,那么分区数 = Tt / min(Tp,Tc)

例如:producer吞吐量 = 20m/s;consumer吞吐量 = 50m/s,期望吞吐量100m/s;分区数 = 100 / 20 = 5分区

https://blog.csdn.net/weixin_42641909/article/details/89294698

分区数一般设置为:3-10个

kafka与Zookeeper的关系

https://www.lilinchao.com/archives/1548.html

https://developer.51cto.com/article/658581.html

过去

Apache Kafka的一个关键依赖是Apache Zookeeper,它是一个分布式配置和同步服务。 Zookeeper是Kafka代理和消费者之间的协调接口。 Kafka服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如关于主题,代理,消费者偏移(队列读取器)等的信息。

由于所有关键信息存储在Zookeeper中,并且它通常在其整体上复制此数据,因此Kafka代理/ Zookeeper的故障不会影响Kafka集群的状态。 Kafka将恢复状态,一旦Zookeeper重新启动。 这为Kafka带来了零停机时间。 Kafka代理之间的领导者选举也通过使用Zookeeper在领导者失败的情况下完成。

未来

Kafka 2.8.0,移除了对Zookeeper的依赖,通过KRaft进行自己的集群管理

spark常见错误

Python in worker has different version 2.7 than that in driver 3.7, PySpark cannot run with different minor versions

核心思路:分别指定driver和excutor的python版本,使其统一

方法一:修改环境变量

1./在环境变量文件 /etc/profile 中添加指定的pyspark,python的版本

1
2
export PYSPARK_PYTHON=指定的python路径
export PYSPARK_DRIVER_PYTHON=指定的python路径

保存后source一下 /etc/profile ,使之生效

2.代码内指定

1
2
os.environ["PYSPARK_DRIVER_PYTHON"]="" ##driver 
os.environ["PYSPARK_PYTHON"]="" ### worker ,excutor

方法二:spark-submit工具指定

在spark-submit时增加参数 --conf spark.pyspark.python--conf spark.pyspark.driver.python

1
2
3
spark-submit \
--driver-memory 5g --num-executors 5 --executor-cores 1 --executor-memory 1G
--conf spark.pyspark.python=./.../bin/python --conf spark.pyspark.driver.python=./.../bin/python xx.py

spark.sql 不能查询到hive的数据库,只查询到default数据库

说明spark没有连接到hive

https://www.cnblogs.com/yjt1993/p/13963144.html

IDEA

激活

https://www.heiz123.com/2022/02/242/#di_liu_bu_da_kai_IDEA_tian_ru_zhi_ding_ji_huo_ma_wan_cheng_ji_huo

IDEA修改变量的值

https://blog.csdn.net/qq_36925114/article/details/102484525

debug

https://www.cnblogs.com/chiangchou/p/idea-debug.html

language level

https://blog.csdn.net/glpghz/article/details/107509987

当我们项目使用的是 JDK 8,但是代码却没有使用 JDK 8 的新特性,只需使用 JDK 7 的时候我们可以选择 7 - Diamonds,ARM,multi-catch etc

导入jar

project settings -> modules

  

maven

1 简介

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

2 安装配置

https://blog.csdn.net/qq_19734597/article/details/120996418

https://blog.csdn.net/weixin_34234829/article/details/89686175

https://blog.csdn.net/idomyway/article/details/81974677

1 更换镜像

conf/settings.xml

https://www.cnblogs.com/digdeep/p/5026066.html

https://blog.csdn.net/qq_42931492/article/details/107283590

2 网络配置

conf/settings.xml

https://blog.csdn.net/zongf0504/article/details/88797831

3 问题

(org.apache.maven.wagon.providers.http.httpclient.NoHttpResponseException) caught when processing request to {}->http://XXXXXX->http://maven.aliyun.com:80: The target server failed to respond

3 管理包

https://blog.51cto.com/u_15119353/3303815

1 设置setting.xml

2 编写pom

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka-0.11_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.bahir</groupId>
<artifactId>flink-connector-redis_2.11</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-elasticsearch6_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-statebackend-rocksdb_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.12</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-csv</artifactId>
<version>1.10.1</version>
</dependency>

</dependencies>

3 生成本地包的repository

默认位置在/user/.m2/repository,在setting可以修改

4 环境使用本地repository

https://blog.csdn.net/weixin_42476601/article/details/87884514

4 问题

1.com/atguigu/gmall/hive/udtf/ExplodeJSONArray has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

解决:两边jdk版本对齐就好

打包时候注意要:maven clean,maven compile

class file versions对应jdk版本:

1
2
3
4
5
6
7
8
9
10
49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14

2.Unknown host maven.aliyun.com

it的技术场景

前后端

指的web前后端

移动端

ios和安卓

服务端 ,客户端

服务端:顾名思义是服务的,客户端发送的请求交给服务器端处理,是以response对象存在,服务端处理完毕后反馈给客户端。

客户端(Client)是指与服务器相对应并为客户提供本地服务的程序。 除了仅在本地运行的某些应用程序外,它们通常安装在普通客户端上,并且需要与服务器一起使用。


:D 一言句子获取中...