2——broker配置(0.10版)——kafka0.10.x-全系列-加米谷大數據

2——broker配置(0.10版)——kafka0.10.x-全系列-加米穀大數據

kafka broker配置(0.10版)

領取大數據開發、大數據挖掘分析、Python人工智能等試聽資料,可上加米穀大數據官網(http://www.dtinone.com/)諮詢領取或者加入加米穀大數據技術交流群領取:234648425

基本配置如下:

  • broker.id

  • log.dirs

  • zookeeper.connect

下文將詳細論述了主題級別配置和默認值。

名稱

描述

類型

默認

有效值

重要程度

zookeeper.connect

zookeeper host string

string

advertised.host.name

過時的:當advertised.listeners或listeners沒設置時候才使用。請改用advertised.listeners。Hostname發佈到Zookeeper供客戶端使用。在IaaS環境中,Broker可能需要綁定不同的接口。如果沒有設置,將會使用host.name(如果配置了)。否則將從java.net.InetAddress.getCanonicalHostName()獲取。

string

null

advertised.listeners

發佈到Zookeeper供客戶端使用監聽(如果不同)。在IaaS環境中,broker可能需要綁定不同的接口。如果沒設置,則使用listeners。

string

null

advertised.port

過時的:當advertised.listeners或listeners沒有設置才使用。請改用advertised.listeners。端口發佈到Zookeeper供客戶端使用,在IaaS環境中,broker可能需要綁定到不同的端口。如果沒有設置,將和broker綁定的同一個端口。

int

null

auto.create.topics.enable

啟用自動創建topic

boolean

true

auto.leader.rebalance.enable

啟用自動平衡leader。如果需要,後臺線程會定期檢查並觸發leader平衡。

boolean

true

background.threads

用於各種後臺處理任務的線程數

int

10

[1,...]

broker.id

服務器的broker id。如果未設置,將生成一個獨一無二的broker id。要避免zookeeper生成的broker id和用戶配置的broker id衝突,從reserved.broker.max.id + 1開始生成。

int

-1

compression.type

為給定topic指定最終的壓縮類型。支持標準的壓縮編碼器('gzip', 'snappy', 'lz4')。也接受'未壓縮',就是沒有壓縮。保留由producer設置的原始的壓縮編碼。

string

producer

delete.topic.enable

啟用刪除topic。如果此配置已關閉,通過管理工具刪除topic將沒有任何效果

boolean

false

host.name

不贊成:當listeners沒有設置才會使用。請改用listeners。如果設置,它將只綁定到此地址。如果沒有設置,它將綁定到所有接口

string

""

leader.imbalance.check.interval.seconds

由控制器觸發分區再平衡檢查的頻率

long

300

leader.imbalance.per.broker.percentage

允許每個broker的leader比例不平衡。如果每個broker的值高於此值,控制器將觸發leader平衡,該值以百分比的形式指定。

int

10

listeners

監聽列表 - 監聽逗號分隔的URL列表和協議。指定hostname為0.0.0.0綁定到所有接口,將hostname留空則綁定到默認接口。合法的listener列表是:PLAINTEXT://myhost:9092,TRACE://:9091 PLAINTEXT://0.0.0.0:9092, TRACE://localhost:9093

string

null

log.dir

保存日誌數據的目錄 (補充log.dirs屬性)

string

/tmp/kafka-logs

log.dirs

保存日誌數據的目錄。如果未設置,則使用log.dir中的值

string

null

log.flush.interval.messages

消息刷新到磁盤之前,累計在日誌分區的消息數

long

9223372036854775807

[1,...]

log.flush.interval.ms

topic中的消息在刷新到磁盤之前保存在內存中的最大時間(以毫秒為單位),如果未設置,則使用log.flush.scheduler.interval.ms中的值

null

log.flush.offset.checkpoint.interval.ms

我們更新的持續記錄的最後一次刷新的頻率。作為日誌的恢復點。

int

60000

[0,...]

log.flush.scheduler.interval.ms

日誌刷新的頻率(以毫秒為單位)檢查是否有任何日誌需要刷新到磁盤

long

9223372036854775807

log.retention.bytes

刪除日誌之前的最大大小

long

-1

log.retention.hours

刪除日誌文件保留的小時數(以小時為單位)。第三級是log.retention.ms屬性

int

168

log.retention.minutes

刪除日誌文件之前保留的分鐘數(以分鐘為單位)。次於log.retention.ms屬性。如果沒設置,則使用log.retention.hours的值。

int

null

log.retention.ms

刪除日誌文件之前保留的毫秒數(以毫秒為單位),如果未設置,則使用log.retention.minutes的值。

long

null

log.roll.hours

新建一個日誌段的最大時間(以小時為單位),次於log.roll.ms屬性。

int

168

[1,...]

log.roll.jitter.hours

從logRollTimeMillis(以小時為單位)減去最大抖動,次於log.roll.jitter.ms屬性。

int

0

[0,...]

log.roll.ms

新建一個日誌段之前的最大事時間(以毫秒為單位)。如果未設置,則使用log.roll.hours的值。

long

null

og.segment.bytes

單個日誌文件的最大大小

int

1073741824

[14,...]

og.segment.delete.delay.ms

從文件系統中刪除文件之前的等待的時間

long

60000

[0,...]

message.max.bytes

服務器可以接收的消息的最大大小

int

1000012

[0,...]

min.insync.replicas

當producer設置acks為"all"(或"-1")時。min.insync.replicas指定必須應答成功寫入的replicas最小數。如果不能滿足最小值,那麼producer拋出一個異常(NotEnoughReplicas或NotEnoughReplicasAfterAppend)。

當一起使用時,min.insync.replicas和acks提供最大的耐用性保證。一個典型的場景是創建一個複製因子3的topic,設置min.insync.replicas為2,並且ack是“all”。如果多數副本沒有接到寫入時,將會拋出一個異常。

int

1

[1,...]

num.io.threads

服務器用於執行網絡請求的io線程數

int

8

[1,...]

num.network.threads

服務器用於處理網絡請求的線程數。

int

3

[1,...]

num.recovery.threads.per.data.dir

每個數據的目錄線程數,用於啟動時日誌恢復和關閉時flush。

int

1

[1,...]

num.replica.fetchers

從源broker複製消息的提取線程數。遞增該值可提高follower broker的I/O的併發。

int

1

offset.metadata.max.bytes

offset提交關聯元數據條目的最大大小

int

4096

offsets.commit.required.acks

commit之前需要的應答數,通常,不應覆蓋默認的(-1)

short

-1

offsets.commit.timeout.ms

Offset提交延遲,直到所有副本都收到提交或超時。 這類似於生產者請求超時。

int

5000

[1,...]

offsets.load.buffer.size

當加載offset到緩存時,從offset段讀取的批量大小。

int

5242880

[1,...]

offsets.retention.check.interval.ms

檢查過期的offset的頻率。

long

600000

[1,...]

offsets.retention.minutes

offset topic的日誌保留時間(分鐘)

int

1440

[1,...]

offsets.topic.compression.codec

壓縮編碼器的offset topic - 壓縮可以用於實現“原子”提交

int

0

offsets.topic.num.partitions

offset commit topic的分區數(部署之後不應更改)

int

50

[1,...]

offsets.topic.replication.factor

offset topic複製因子(ps:就是備份數,設置的越高來確保可用性)。為了確保offset topic有效的複製因子,第一次請求offset topic時,活的broker的數量必須最少最少是配置的複製因子數。 如果不是,offset topic將創建失敗或獲取最小的複製因子(活著的broker,複製因子的配置)

short

3

[1,...]

offsets.topic.segment.bytes

offset topic段字節應該相對較小一點,以便於加快日誌壓縮和緩存加載

int

104857600

[1,...]

port

不贊成:當listener沒有設置才使用。請改用listeners。該port監聽和接收連接。

int

9092

queued.max.requests

在阻塞網絡線程之前允許的排隊請求數

int

500

[1,...]

quota.consumer.default

過時的:當默認動態的quotas沒有配置或在Zookeeper時。如果每秒獲取的字節比此值高,所有消費者將通過clientId/consumer區分限流。

long

9223372036854775807

[1,...]

quota.producer.default

過時的:當默認動態的quotas沒有配置,或在zookeeper時。如果生產者每秒比此值高,所有生產者將通過clientId區分限流。

long

9223372036854775807

[1,...]

replica.fetch.min.bytes Minimum

每個獲取響應的字節數。如果沒有滿足字節數,等待replicaMaxWaitTimeMs。

int

1

replica.fetch.wait.max.ms

跟隨者副本發出每個獲取請求的最大等待時間,此值應始終小於replica.lag.time.max.ms,以防止低吞吐的topic的ISR頻繁的收縮。

int

500

replica.high.watermark.

checkpoint.interval.ms

達到高“水位”保存到磁盤的頻率。

long

5000

replica.lag.time.max.ms

如果一個追隨者沒有發送任何獲取請求或至少在這個時間的這個leader的沒有消費完。該leader將從isr中移除這個追隨者。

long

10000

replica.socket.receive.buffer.bytes

用於網絡請求的socket接收緩存區

int

65536

replica.socket.timeout.ms

網絡請求的socket超時,該值最少是replica.fetch.wait.max.ms

int

30000

request.timeout.ms

該配置控制客戶端等待請求的響應的最大時間,。如果超過時間還沒收到消費。客戶端將重新發送請求,如果重試次數耗盡,則請求失敗。

int

30000

socket.receive.buffer.bytes

socket服務的SO_RCVBUF緩衝區。如果是-1,則默認使用OS的。

int

102400

socket.request.max.bytes

socket請求的最大字節數

int

104857600

[1,...]

socket.send.buffer.bytes

socket服務的SO_SNDBUF緩衝區。如果是-1,則默認使用OS的。

int

102400

unclean.leader.election.enable

是否啟用不在ISR中的副本參與選舉leader的最後的手段。這樣做有可能丟失數據。

boolean

true

zookeeper.connection.timeout.ms

連接zookeeper的最大等待時間,如果未設置,則使用zookeeper.session.timeout.ms。

int

null

zookeeper.session.timeout.ms

Zookeeper會話的超時時間

int

6000

zookeeper.set.acl

設置客戶端使用安全的ACL

boolean

false

broker.id.generation.enable

啟用自動生成broker id。啟用該配置時應檢查reserved.broker.max.id。

boolean

true

中等

broker.rack

broker機架,用於機架感知副本分配的失敗容錯。例如:RACK1, us-east-1d

string

null

中等

connections.max.idle.ms Idle

連接超時:閒置時間超過該設置,則服務器socket處理線程關閉這個連接。

long

600000

中等

controlled.shutdown.enable

啟用服務器的關閉控制。

boolean

true

中等

controlled.shutdown.max.retries

控制因多種原因導致的shutdown失敗,當這樣失敗發生,嘗試重試的次數

int

3

中等

controlled.shutdown.retry.backoff.ms

在每次重試之前,系統需要時間從導致先前故障的狀態(控制器故障轉移,複製延遲等)恢復。 此配置是重試之前等待的時間數。

long

5000

中等

controller.socket.timeout.ms

控制器到broker通道的sockt超時時間

int

30000

default.replication.factor

自動創建topic的默認的副本數

int

1

fetch.purgatory.purge.interval.requests

拉取請求清洗間隔(請求數)

int

1000

group.max.session.timeout.ms

已註冊的消費者允許的最大會話超時時間,設置的時候越長使消費者有更多時間去處理心跳之間的消息。但察覺故障的時間也拉長了。

int

300000

group.min.session.timeout.ms

已經註冊的消費者允許最小的會話超時時間,更短的時間去快速的察覺到故障,代價是頻繁的心跳,這可能會佔用大量的broker資源。

int

6000

inter.broker.protocol.version

指定broker內部通訊使用的版本。通常在更新broker時使用。有效的值為:0.8.0, 0.8.1, 0.8.1.1, 0.8.2, 0.8.2.0, 0.8.2.1, 0.9.0.0, 0.9.0.1。查看ApiVersion找到的全部列表。

string

0.10.1-IV2

log.cleaner.backoff.ms

當沒有日誌要清理時,休眠的時間

long

15000

[0,...]

log.cleaner.dedupe.buffer.size

用於日誌去重的內存總量(所有cleaner線程)

long

134217728

log.cleaner.delete.retention.ms

刪除記錄保留多長時間?

long

86400000

log.cleaner.enable

在服務器上啟用日誌清洗處理?如果使用的任何topic的cleanup.policy=compact包含內部的offset topic,應啟動。如果禁用,那些topic將不會被壓縮並且會不斷的增大。

boolean

true

log.cleaner.io.buffer.load.factor

日誌cleaner去重緩衝負載因子。去重緩衝區的百分比,較高的值將允許同時清除更多的日誌,但將會導致更多的hash衝突。

double

0.9

log.cleaner.io.buffer.size

所有日誌清潔器線程I/O緩存的總內存

int

524288

[0,...]

log.cleaner.io.max.bytes.per.second

日誌清理器限制,以便其讀寫i/o平均小與此值。

double

1.7976931348623157E308

log.cleaner.min.cleanable.ratio

髒日誌與日誌的總量的最小比率,以符合清理條件

double

0.5

log.cleaner.min.compaction.lag.ms

一條消息在日誌保留不壓縮的最小時間,僅適用於正在壓縮的日誌。

long

0

log.cleaner.threads

用於日誌清除的後臺線程數

int

1

[0,...]

log.cleanup.policy

超過保留時間段的默認清除策略。逗號分隔的有效的策略列表。有效的策略有:“delete”和“compact”

list

[delete]

[compact, delete]

log.index.interval.bytes

添加一個條目到offset的間隔

index

int

4096

[0,...]

log.index.size.max.bytes

offset index的最大大小(字節)

int

10485760

[4,...]

log.message.format.version

指定追加到日誌中的消息格式版本。例如: 0.8.2, 0.9.0.0, 0.10.0。通過設置一個特定消息格式版本,用戶需要保證磁盤上所有現有的消息小於或等於指定的版本。錯誤的設置將導致舊版本的消費者中斷,因為消費者接收一個不理解的消息格式。

string

0.10.1-IV2

log.message.timestamp.difference.max.ms

如果log.message.timestamp.type=CreateTime,broker接收消息時的時間戳和消息中指定的時間戳之間允許的最大差異。如果時間戳超過此閾值,則消息將被拒絕。如果log.message.timestamp.type=LogAppendTime,則此配置忽略。

long

9223372036854775807

[0,...]

log.message.timestamp.type

定義消息中的時間戳是消息創建時間或日誌追加時間。該值可設置為CreateTime 或 LogAppendTime

string

CreateTime

[CreateTime, LogAppendTime]

log.preallocate

在創建新段時預分配文件?如果你在Windowns上使用kafka,你可能需要設置它為true。

boolean

false

log.retention.check.interval.ms

日誌清除程序檢查日誌是否滿足被刪除的頻率(以毫秒為單位)

long

300000

[1,...]

max.connections.per.ip

允許每個ip地址的最大連接數。

int

2147483647

[1,...]

max.connections.per.ip.overrides

per-ip或hostname覆蓋默認最大連接數

string

""

num.partitions

topic的默認分區數

int

1

[1,...]

principal.builder.class

實現PrincipalBuilder接口類的完全限定名,該接口目前用於構建與SSL SecurityProtocol連接的Principal。

class

class org.apache.kafka.

common.security.auth

.DefaultPrincipalBuilder

producer.purgatory.purge.interval.requests

生產者請求purgatory的清洗間隔(請求數)

int

1000

replica.fetch.backoff.ms

當拉取分區發生錯誤時休眠的時間

1000

[0,...]

replica.fetch.max.bytes

拉取每個分區的消息的字節數。這不是絕對的最大值,如果提取的第一個非空分區中的第一個消息大於這個值,則消息仍然返回,以確保進展。通過message.max.bytes (broker配置)或max.message.bytes (topic配置)定義broker接收的最大消息大小。

int

1048576

[0,...]

replica.fetch.response.max.bytes

預計整個獲取響應的最大字節數,這不是絕對的最大值,如果提取的第一個非空分區中的第一個消息大於這個值,則消息仍然返回,以確保進展。通過message.max.bytes (broker配置)或max.message.bytes (topic配置)定義broker接收的最大消息大小。

int

10485760

[0,...]

reserved.broker.max.id

broker.id的最大數

int

1000

[0,...]

sasl.enabled.mechanisms

可用的SASL機制列表,包含任何可用的安全提供程序的機制。默認情況下只有GSSAPI是啟用的。

list

[GSSAPI]

sasl.kerberos.kinit.cmd

Kerberos kinit 命令路徑。

string

/usr/bin/kinit

sasl.kerberos.min.time.before.relogin

登錄線程在刷新嘗試的休眠時間。

long

60000

sasl.kerberos.principal.to.local.rules

principal名稱映射到一個短名稱(通常是操作系統用戶名)。按順序,使用與principal名稱匹配的第一個規則將其映射其到短名稱。忽略後面的規則。默認情況下,{username}/{hostname}@{REALM} 映射到 {username}。

list

[DEFAULT]

sasl.kerberos.service.name

Kafka運行的Kerberos principal名稱。 可以在JAAS或Kafka的配置文件中定義。

string

null

sasl.kerberos.ticket.renew.jitter

添加到更新時間的隨機抖動的百分比

time. double

0.05

sasl.kerberos.ticket.renew.window.factor

登錄線程休眠,直到從上次刷新到ticket的到期的時間已到達(指定窗口因子),在此期間它將嘗試更新ticket。

double

0.8

sasl.mechanism.inter.broker.protocol

SASL機制,用於broker之間的通訊,默認是GSSAPI。

string

GSSAPI

security.inter.broker.protocolSecurity

broker之間的通訊協議,有效值有:PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL。

string

PLAINTEXT

ssl.cipher.suites

密碼套件列表。認證,加密,MAC和秘鑰交換算法的組合,用於使用TLS或SSL的網絡協議交涉網絡連接的安全設置,默認情況下,支持所有可用的密碼套件。

list

null

ssl.client.auth

配置請求客戶端的broker認證。常見的設置:

ssl.client.auth=required 需要客戶端認證。

ssl.client.auth=requested 客戶端認證可選,不同於requested ,客戶端可選擇不提供自身的身份驗證信息

* ssl.client.auth=none 不需要客戶端身份認證

string

none

[required, requested, none]

ssl.enabled.protocols

已啟用的SSL連接協議列表。

list

[TLSv1.2, TLSv1.1, TLSv1]

ssl.key.password

秘鑰庫文件中的私鑰密碼。對客戶端是可選的。

password

null

ssl.keymanager.algorithm

用於SSL連接的密鑰管理工廠算法。默認值是Java虛擬機的密鑰管理工廠算法。

string

SunX509

ssl.keystore.location

密鑰倉庫文件的位置。客戶端可選,並可用於客戶端的雙向認證。

string

null

ssl.keystore.password

密鑰倉庫文件的倉庫密碼。客戶端可選,只有ssl.keystore.location配置了才需要。

password

null

ssl.keystore.type

密鑰倉庫文件的格式。客戶端可選。

string

JKS

ssl.protocol

用於生成SSLContext,默認是TLS,適用於大多數情況。允許使用最新的JVM,LS, TLSv1.1 和TLSv1.2。 SSL,SSLv2和SSLv3 老的JVM也可能支持,由於有已知的安全漏洞,不建議使用。

string

TLS

ssl.provider

用於SSL連接的安全提供程序的名稱。默認值是JVM的安全程序。

string

null

ssl.trustmanager.algorithm

信任管理工廠用於SSL連接的算法。默認為Java虛擬機配置的信任算法。

string

PKIX

ssl.truststore.location

信任倉庫文件的位置

string

null

ssl.truststore.password

信任倉庫文件的密碼

password

null

ssl.truststore.type

信任倉庫文件的文件格式

string

JKS

authorizer.class.name

string

""

metric.reporters

度量報告的類列表,通過實現MetricReporter接口,允許插入新度量標準類。JmxReporter包含註冊JVM統計。

list

[]

metrics.num.samples

維持計算度量的樣本數。

int

2

[1,...]

metrics.sample.window.ms

計算度量樣本的時間窗口

long

30000

[1,...]

quota.window.num

在內存中保留客戶端限額的樣本數

int

11

[1,...]

quota.window.size.seconds

每個客戶端限額的樣本時間跨度

int

1

[1,...]

replication.quota.window.num

在內存中保留副本限額的樣本數

int

11

[1,...]

replication.quota.window.size.seconds

每個副本限額樣本數的時間跨度

int

1

[1,...]

ssl.endpoint.identification.algorithm

端點身份標識算法,使用服務器證書驗證服務器主機名。

string

null

ssl.secure.random.implementation

用於SSL加密操作的SecureRandom PRNG實現。

string

null

zookeeper.sync.time.ms

ZK follower可落後與leader多久。

int

2000


分享到:


相關文章: