2017-09-15 16 views
0

私が始めようとしているのは、私がKafkaを完全に新しくしてLinuxにはかなり新しいと言うことから始めたいと思います。これがちょっと単純な答えに終わったら、親切にしてください! :)Kafka MySQLソースに接続

私がしようとしていることは、コンフルエントのKafka Connectを使用して、センサデータを分または分単位でストリームしているMySQLデータベースから読み込み、次にKafkaをデータをデータウェアハウスおよび/またはMongoDBに即座にルーティングして報告するか、Webアプリケーションからカフカに直接つなげる「ETLパイプライン」を提供しています。

私は最初のガイドとして、Robin MoffattのseriesとConfluentのJDBC Source Connector Quickstartを使用しています。これらがホストされているところでは、私はAmazon RDS MySQLデータベースとUbuntu 16.04.2と別のAWS EC2 t2.largeインスタンスを使用してKafka Connectを実行しています。

Robinのワークフローを使用して、私は設定ファイルを作成しましたが、彼が使用するjson形式は使用していません。私はクイックスタート記事のフォーマットを使用しています。

name=jdbc_source_mysql_4427_Data  
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector 
key.converter=io.confluent.connect.avro.AvroConverter 
key.converter.schema.registry.url=http://localhost:8081 
value.converter=io.confluent.connect.avro.AvroConverter 
value.converter.schema.registry.url=http://localhost:8081 
connection.url=jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*****     
table.whitelist=4427_Data    
mode=timestamp     
timestamp.column.name=TmStamp    
validate.non.null=false     
topic.prefix=mysql- 

そして、それはで保存されます。

/usr/bin/confluent load jdbc_source_mysql_4427_Data -d /etc/kafka-connect-jdbc/kafka-connect-jdbc-source.properties 
をして、このエラーを取得:

/etc/kafka-connect-jdbc/kafka-connect-jdbc-source.properties 

私はその後、実行

{ 
    "error_code": 400, 
    "message": "Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*** for configuration Couldn't open connection to jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=***\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*** for configuration Couldn't open connection to jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=***\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`" 
} 

ドライバの問題のようです。私の質問は、「MySQL JDBCドライバをEC2インスタンスにダウンロードする必要があるのですか、またはそれがConfluent Platformパッケージに含まれている必要がありますか?

また、私の全体的なアイデアはKafka Connectによく似ていますか?

前述のとおり、私はこれらの技術には新しいですが、何かを学ぶ最も良い方法は、すぐに飛び込んで問題を解決しようとすることです。どんなアイデアや提案も大歓迎です。ありがとうございました!

答えて

1

全体のコンセプトは私にとって意味があります。ドライバをダウンロードしてワーカークラスパスに追加する必要があります。ライセンスの理由からパッケージ化されていません。

+0

ありがとう、@ dawsaw。私はこれが非常に初心者であることは知っていますが、私はLinuxにとって新しいものですが、ワーカークラスパスにドライバを追加することをお勧めするドキュメントはありますか?私はapt-getダウンロード/インストールをうまくやっていますが、圧縮されたtar.gzを使うのはまっすぐではありません。あまりにもWindows GUIの私の人生で台無しにされて... – bneelon

+0

https://docs.confluent.io/current/connect/userguide.html#installing-pluginsに記載されているのと同様のことができます。 jarをshare/java/kafka-connect-jdbcに置くことによって、インストールに直接jarファイルを追加することもできます。そこには、コネクタ付きの他のドライバもあります。 – dawsaw

+0

あなたの助けを借りて私はそれに取り組みましたが、私が遭遇した1つの問題は、MySQLテーブル名の多くが数字で始まり、 "Illegal Initial Character"というエラーを投げたことです。それを回避する方法はありますか?私は手紙から始まるテーブルを試してみましたが、うまくいきました。ありがとう。 – bneelon

0

@dawsawによると、MySQL JDBCドライバをコネクタで使用できるようにする必要があります。

センサーからカフカにストリームし、カフカからMySQL、Mongo、webappなどにストリームするのが最適です。

DBにストリーミングしてDBからストリーミングすることは、オプションがあれば完璧な選択ではありません。

+0

返信ありがとう、@RobinMoffat。あなたの記事はこれまでのところ非常に役立っています。私は間違いなくセンサーからKafkaへのストリーミングが最適であることに同意する。センサー用のJava SDKがありますが、言及したように、私はハードコアプログラミングのいくつかの初心者です。私はR /統計的背景の多くを持っています。センサー会社のソフトウェアがあります。私が試しているのは、ボタンをクリックするだけでセンサーをMySQLデータベースにストリームすることができますが、非常に堅牢です。 Kafkaと一意のIDを使用して、データをクエリ可能なフォーマット/プラットフォームに分割したいと考えています。 – bneelon

0

コンフルエントの配布にmysqlドライバがないためです。私はあなたがmysqlドライバのjarファイルをダウンロードし、それをconfluent/share/java/kafka-connect-jdbcフォルダに入れて、プログラムを再実行することで問題を解決できると思います。