DataX mysqlからhbaseへのデータのエクスポート


ビジネス・データベースに大量の履歴データが格納されているため、ビジネス条件に基づいてデータをクエリーする際の効率が低下します.そこで、元のビジネスデータをSQLで一度処理してから中間テーブルに配置し、その後、中間テーブルのデータをhbaseに同期し、その後、hbaseから直接データを照会することを考えています.もちろん、これはインクリメンタルデータがどのように同期されるか、インクリメンタルデータが失われないことをどのように保証するかなどの問題にも関連しており、ここでは記録されていない.ここではmysqlのデータがhbaseに全量同期する方法のみを記録します.
異機種データソース間のデータ移行ツールは比較的多く、kettle、sqoop、dataX、streamsetsなどが一般的です.mysqlデータがhbaseに移行する場合,sqoopとdataXに関する資料が多いため,この2つから着手することを考える.
まずsqoopであり,Hadoop内生のデータ移行ツールとしては,リレーショナルデータベースとhdfs間の移行移行移行移行のサポートがよい.メカニズムは,命令をMapReduceプログラムに変換してデータのインポート・エクスポートを行う.しかし、sqoopの公式サイトから見ると、sqoopの最近の更新時間は2019年1月18日で、もう1年以上メンテナンスされていません.使用する場合、hbaseは2.1.8バージョンを使用しているため、hbaseにデータをインポートするときにエラーが発生することがあります.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.HBaseAdmin.(Lorg/apache/hadoop/conf/Configuration;)V
        at org.apache.sqoop.mapreduce.HBaseImportJob.jobSetup(HBaseImportJob.java:163)
        at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:264)
        at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:673)
        at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:118)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:497)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

ネット上で似たような問題を見てみると、この問題が発生したのはすべて2.xバージョンのhbase.この問題はバージョンがサポートされていないためだと思います.解決策としては、sqoopインポートコマンドの実行時に生成したMapReduceプログラムをjarパッケージにして実行することもあるので、逆コンパイルして不一致のコードを修正することも考えられます.しかし、これはあまり意味がありません.そこでdataXを使って試してみることを考えています.
 
残念なことにdataXのGitライブラリを見ていると、サポートされているhbaseバージョンに0しか書かれていないことに気づきました.xと1.x,感覚は2.xもサポートされています.しかし、試してみるとサポートされていることがわかりました.
DataxはPython 2に基づいて作成されるため,Python 2環境を構成するとともにjdk環境も必要である.具体的なインストールはチュートリアルのネット上で全面的で、説明しません.