筆者在本地的Flink項目從雲服務器kafka上獲取數據方式以下:java
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "139.196.235.10:9092");
properties.setProperty("group.id", "test");
DataStream<String> stream = env
.addSource(new FlinkKafkaConsumer<>("pk1", new SimpleStringSchema(), properties));
複製代碼
因爲筆者的雲服務器是計時類型的,每次啓動IP地址都會變化,因此就沒有在本地配置主機名與IP地址的映射關係,經過公網IP:端口號的方式訪問雲服務器。可是在獲取數據時顯示因爲找不到正確的分片位置致使鏈接超時:apache
Caused by: org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition pk1-0 could be determin
bootstrap
可是筆者在雲服務器上自測kafka的生產者消費者案例沒有問題,本地經過 公網IP:端口號 也能鏈接上雲服務器上的端口。進一步排錯顯示未知的主機異常: java.net.UnknownHostException: hadoop000
服務器
筆者的雲服務器hostname爲hadoop000,可是在kafka的server.properties中配置的是localhost,找完整個kafka都沒發現須要使用hostname的地方。markdown
最終不得已在本地的hosts中配置了IP地址 hostname,才得以解決問題。oop