Sqoop+Oozie Workflowを活用した MySQL 8.0マイグレーション
    • PDF

    Sqoop+Oozie Workflowを活用した MySQL 8.0マイグレーション

    • PDF

    Article Summary

    VPC環境で利用できます。

    Sqoop(SQL to Hadoop)は、Hadoopと関係データベースの間でデータを配信できるように設計されたオープンソースソフトウェアです。
    簡単な CLIで Oracle、MySQLなど RDBMSの特定のテーブルまたは特定の条件に合ったデータを手軽に HDFSに移動でき、Hive、Pig、HBaseなどにすぐに移して確認できます。逆に、HDFSに保存されているデータを RDBMSへ移すこともできます。

    Oozieは Hadoopの様々な Jobを簡単に管理するために作成された Workflowのスケジューリングシステムです。Jobの開始、処理、分岐、終了などの様々な Actionで構成され、Cloud Hadoop(VPC)で提供する Hue(Hadoop User Experience)内で Oozie Workflowを簡単に使用できます。

    本ガイドでは Hueの Oozie Workflow内に Sqoopを使用して Cloud DB for MySQL(VPC)データを読み取り、Hive Tableを作成します。その後 Hive Queryで当該デーブルと同じコピー Hive Tableを作成します。最後に Sqoopを用いてコピーの Hive Tableを再び Cloud DB for MySQL(VPC)に配信する方法について説明します。

    参考

    Hueの Oozie Workflowと Ambariで発生する Alertsについてメールまたはメッセージを活用したユーザー定義の通知を設定できます。詳細は、ユーザー定義の通知設定ガイドをご参照ください。

    事前タスク

    Oozieで Sqoopを使用するには、以下のような事前タスクが必要です。

    項目説明ガイド
    MySQL 8バージョン connecto設定MySQLに接続するために connectorをインストールして Oozieに設定
    MySQLテーブルの準備ソースデータを持っている Source Tableと Hive Queryの実行結果を受け取る Target Tableを準備
    ACG設定Cloud Hadoop(VPC)と Cloud DB for MySQL(VPC)の ACGを設定ファイアウォール設定(ACG)

    1. MySQL 8バージョン connectorの設定

    Sqoopで MySQLにアクセスするにはバージョンに合った connector設定が必要です。以下の手順に従って、MySQL connectorのインストールと設定を行います。

    a. エッジノードで MySQL 8バージョン connector設定

    1. Cloud Hadoop(VPC)エッジノードに sshでアクセスします。エッジノードにでアクセスする方法は、SSHでクラスタノードにアクセスガイドをご参照ください。
    2. 以下のコマンドを実行して MySQL 8バージョン connector をダウンロードします。
      wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz
      
    3. 以下のコマンドを実行してダウンロードした MySQL 8バージョン connectorの圧縮を解凍します。
      tar -xvzf mysql-connector-java-8.0.26.tar.gz
      
    4. 以下のコマンドを実行して既に設定されている MySQL connectorを新規ダウンロードした MySQL 8バージョンに connectorで上書きします。
      sudo cp /home1/sshuser/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /usr/share/java/mysql-connector-java-8.0.26.jar
      sudo ln -Tfs /usr/share/java/mysql-connector-java-8.0.26.jar /usr/hdp/current/sqoop-client/lib/mysql-connector-java.jar
      
    5. /user/oozie/share/lib/lib_{timestamp}/sqoop パスに mysql-connector-java-8.0.26.jar ファイルをコピーします。例えば、/user/oozie/share/lib/lib_{timestamp}/sqoop パスに複数の lib_{timestamp} ファイルがある場合、最新ディレクトリにコピーします。
      sudo -u oozie hadoop fs -put /home1/sshuser/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /user/oozie/share/lib/lib_{timestamp}/sqoop/mysql-connector-java-8.0.26.jar
      

    b. Hueで MySQL 8バージョン connector設定

    1. /user/oozie/share/lib/lib_{timestamp}/sqoop パスに mysql-connector-java-8.0.26.jar ファイルがコピーされたか確認します。
      hadoop-vpc-28_hue3_ko
    2. Oozieの libraryをアップデートするためにエッジノードにアクセスして、以下のコマンドを実行します。
      sudo -u oozie oozie admin -oozie http://{その1のマスターノードのホスト名}:11000/oozie -sharelibupdate
      sudo -u oozie oozie admin -oozie http://{その2のマスターノードのホスト名}:11000/oozie -sharelibupdate
      
    参考

    Ambari UIの Hosts ページでホスト名を確認できます。Ambari UIに関する詳細は、Ambari UIガイドをご参照ください。
    chadoop-3-5-03_ko

    1. Ambariにアクセスしてから左メニューの [Oozie] > [ACTIONS] > [Restart All] ボタンをクリックして Oozieを再起動します。Ambariにアクセスする方法は、Ambari UIガイドをご参照ください。
      hadoop-vpc-28_hue4_ko

    2. MySQLテーブルの準備

    Hueで Oozieを使用した Workflowを作成するためにソースデータを持っている Source Tableと Hive Queryの実行結果を受け取る Target Tableを準備します。本ガイドでは、以下の SQLを通じて作成した SQOOP TEST1、SQOOP TEST2テーブルを使用します。

    CREATE TABLE SQOOP_TEST1
    (
        gp_sum INT PRIMARY KEY,
        player VARCHAR(30)
    );
    
    INSERT INTO SQOOP_TEST1(gp_sum, player)
    VALUES(1,'test_player');
    
    CREATE TABLE SQOOP_TEST2
    (
        gp_sum INT PRIMARY KEY,
        player VARCHAR(30)
    );
    

    3. ACG設定

    NAVERクラウドプラットフォームコンソールで MySQL Serverの ACG(Access Control Group)を設定する方法は、次の通りです。

    参考

    ここでは、ACGの設定方法を簡単に説明します。ACGの設定方法に関する詳細は、ACGご利用ガイドをご参照ください。

    1. アクセスする Cloud DB for MySQL(VPC)の ACGを選択した後、次の4つの情報を入力して2つの ACG Ruleを追加します。
      • プロトコル: TCP

      • アクセスソース: アクセスする Cloud Hadoop(VPC)の ACG名

      • 許可ポート: 3306

      • メモ(選択)

      • プロトコル: TCP

      • アクセスソース: アクセスするユーザー PCの IPアドレス( [myip] ボタンをクリック)

      • 許可ポート: 3306

      • メモ(選択)

    2. アクセスする Cloud Hadoop(VPC)の ACGを選択した後、次の4つの情報を入力して ACG Ruleを追加します。
      • プロトコル: TCP
      • アクセスソース: アクセスするユーザー PCの IPアドレス( [myip] ボタンをクリック)
      • 許可ポート: 1-65535
      • メモ(選択)

    事前タスクの完了後、以下の手順に従ってください。

    1. Sqoopにデータをインポートする

    1. Hue左メニューから [スケジューラ] > [Workflow] をクリックします。
      hadoop-vpc-28_hue5_ko
    2. [文書] > [タスク] をクリックします。
      hadoop-vpc-28_hue6_ko
    3. [Sqoop 1] ボタンをここにタスクを置く にドラッグします。
      hadoop-vpc-28_hue7_ko
    4. 以下の Sqoop commandを入力して [追加] ボタンをクリックします。
      sqoop import --connect jdbc:mysql://{Cloud DB for MySQL(VPC)Privateドメイン}/{DB名} --username {DBアカウント} --password "{DBアカウントパスワード}" --table SQOOP_TEST1 --hive-import --hive-database default --hive-table sqoop_test1 -m 1 --external-table-dir "{Object Storageバケット URI}/sqoop_test1"
      

    hadoop-vpc-28_hue8_ko

    1. 右上の [保存] ボタンをクリックして作成した Workflowを保存します。

    hadoop-vpc-28_hue9_ko

    2. Hive Queryで新しいテーブルを作成

    1. Hue左メニューから [エディタ] > [Hive] をクリックします。
      hadoop-vpc-28_hue10_ko

    2. 以下の例の Hive Queryを入力します。

      USE default;
      CREATE EXTERNAL TABLE sqoop_test2
      STORED AS TEXTFILE
      LOCATION 「{Object Storageバケット URI}/sqoop_test2」
      AS SELECT * FROM sqoop_test1;
      
    3. 右上の [保存] ボタンをクリックした後、名前を設定して作成した Hive Queryを保存します。
      hadoop-vpc-28_hue11_ko

      hadoop-vpc-28_hue12_ko

    4. Hueの左メニューから [スケジューラ] > [Workflow] をクリックして [文書] ボタンをクリックした後、上記で作成した Workflowを選択します。
      hadoop-vpc-28_hue5_ko

      hadoop-vpc-28_hue13_ko

    5. 右上の [修正] ボタンをクリックした後、[タスク] > [文書] ボタンをクリックします。
      hadoop-vpc-28_hue14_ko

      hadoop-vpc-28_hue15_ko

    6. [Hive Query] ボタンを Sqoop 1下のエリアにドラッグしてから文書検索.... をクリックして上記で作成した Hive Queryを選択した後、[追加] ボタンをクリックします。
      hadoop-vpc-28_hue16_ko

    hadoop-vpc-28_hue17_ko

    3. Sqoopddで Hiveデータを MySQLに配信

    1. [文書] > [タスク] をクリックします。

    2. [Sqoop 1] ボタンを Hiveの下のエリアにドラッグします。

    3. 以下の例の Sqoop commandを入力します。

      sqoop export --connect jdbc:mysql://{Cloud DB for MySQL(VPC)Privateドメイン}/{DB名} --username {DBアカウント} --password "{DBアカウントパスワード}" --table SQOOP_TEST2 --export-dir "{Object Storageバケット URI}/sqoop_test2" -m 1 --input-fields-terminated-by "\001"
      
    4. 右上の [保存] ボタンをクリックして作成した Workflowを保存した後、[開始する] ボタンをクリックして作成した Workflowを実行します。

    hadoop-vpc-28_hue18_ko

    4. Hiveと MySQLテーブルを確認

    1. Hiveを通じて、テーブルが正常に保存されているか確認します。
    SELECT * FROM SQOOP_TEST1;
    SELECT * FROM SQOOP_TEST2;
    

    hadoop-vpc-28_hue20_ko

    1. MySQLを通じて、テーブルが正常に保存されているか確認します。
    SELECT * FROM SQOOP_TEST1;
    SELECT * FROM SQOOP_TEST2;
    

    hadoop-vpc-28_hue21


    この記事は役に立ちましたか?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.