我想使用Kafka HDFS接收器连接到Azure Blob存储。 到目前为止,我已经完成了:
设置kafka-connect
属性:
hdfs.url=wasbs://<my_url>
hadoop.conf.dir={hadoop_3_home}/etc/hadoop/
hadoop.home={hadoop_3_home}
并在core-site.xml
添加了对wasbs的支持:
<property>
<name>fs.wasbs.impl</name>
<value>org.apache.hadoop.fs.azure.NativeAzureFileSystem</value>
</property>
导出的HADOOP_CLASSPATH
变量,已添加到PATH
但无论如何,Hadoop无法找到类 - NativeAzureFileSystem
:
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at io.confluent.connect.hdfs.storage.StorageFactory.createStorage(StorageFactory.java:29)
... 11 more
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.azure.NativeAzureFileSystem not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2654)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
你能帮忙解决这个问题。它甚至可能吗?
答案 0 :(得分:0)
我的目标是:备份从任何数据格式的Kafka到Azure BLOB的所有内容。
HDFS和云连接器无法备份&#34;任何格式&#34;。 Confluent的Avro是文件格式的一流公民。其次是JSON,但没有&#34;纯文本&#34;格式,来自我发现的。我认为HDFS连接器支持&#34;字节数组&#34;格式。
正如我在评论中提到的,在我看来,Kafka的备份不同于无限期地将数据保留到文件系统。备份Kafka-to-Kafka包括使用MirrorMaker。
如果您想使用任何格式,Spark,Flink,NiFi或Streamset可以更灵活地处理开箱即用