2015-01-23 14 views
10

tôi đang cố gắng để tạo ra một chủ đề Kafka qua AdminCommand sử dụng mã dưới đây SourceLỗi tạo Kafka chủ đề: - sao chép yếu tố lớn hơn môi giới sẵn

ZkClient zkClient = new ZkClient(kafkaHost, 10000, 10000, ZKStringSerializer$.MODULE$); 
    AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties()); 

Nhưng nhận được ngoại lệ bên dưới

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0 
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70) 
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155) 

Tuy nhiên, Tôi có thể tạo chủ đề bằng cách sử dụng lệnh shell.

Trả lời

13

Trong code của bạn,

AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties()); 

Đối số thứ tư là yếu tố sao chép. Vì vậy, bạn đang cố tạo chủ đề có tên là pa_reliancepoc_telecom_usageevent với phân vùng count of 10replication of 2. Vì vậy, two kafka brokers sẽ khả dụng khi tạo chủ đề. Nếu ít hơn hai là có sẵn sau đó bạn sẽ nhận được ngoại lệ sau đây.

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0 
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70) 
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155) 

Hãy chắc chắn rằng bạn đang chạy kafka cluster with two broker nodes và hai nút should be alive while creating the topic.

Để chạy Kafka trong cụm tham khảo Bước 6 trong this link

+0

Trong mọi trường hợp, ngoại lệ là gây hiểu nhầm và có thể nên đọc: "[...] nhân rộng: 2 lớn hơn các nhà môi giới có sẵn: 1" – sandris

4

cấu hình máy tính cục bộ của bạn có nhiều người môi giới và chạy trong trường hợp bạn quyết định giữ replication_factor > 1.

Bạn có thể làm điều đó bằng cách chỉ cần có nhiều bản sao của tệp server.properties. ví dụ
server-1.properties & server-2.properties

Bạn cần sau đó xác định khác nhau broker.id & port trong mỗi của những tập tin để làm cho họ độc đáo ..

config/server-1.properties: 
    broker.id=1 
    port=9093 
    log.dir=/tmp/kafka-logs-1 

    config/server-2.properties: 
    broker.id=2 
    port=9094 
    log.dir=/tmp/kafka-logs-2 

Và sau đó bắt đầu nhiều trường hợp với các lệnh sau

> bin/kafka-server-start.sh config/server-1.properties & 
> bin/kafka-server-start.sh config/server-2.properties & 

Để biết thêm chi tiết, hãy kiểm tra Step 6: Setting up a multi-broker cluster

0

Tôi gặp phải vấn đề tương tự khi thiết lập nhiều nhà môi giới.

Bước tôi đã mất tích là:

Trong khi chỉnh sửa tập tin cấu hình: config/server-1.properties: broker.id = 1 nghe = Plaintext: //: 9093 log.dir =/tmp/Kafka-logs-1

cần phải cập nhật phần CƠ BẢN lOG cũng (xem dưới đây):

##################### ## Log Basics

Danh sách thư mục được phân cách bằng dấu phẩy để lưu trữ nhật ký fi les

log.dirs=/tmp/kafka-logs-1 
Các vấn đề liên quan