1つは、Sqoopの概要です
Sqoopはオープンソースのビッグデータコンポーネントであり、主にHadoop(Hive、HBaseなど)と従来のデータベース(mysql、postgresql、oracleなど)の間でデータを転送するために使用されます。
通常、データ処理コンポーネントの基本機能:インポートとエクスポート。
Sqoopはビッグデータテクノロジーシステムのコンポーネントであるため、リレーショナルデータベースをHadoopストレージシステムにインポートすることをインポートと呼びます。その逆も同様です。
Sqoopは、インポートまたはエクスポートコマンドをmapreduceプログラムに変換するコマンドラインコンポーネントツールです。mapreduceの主な目的は、inputformatとoutputformatをカスタマイズすることです。
2、環境展開
Sqoopコンポーネントをテストする場合、少なくともHadoopシリーズ、リレーショナルデータ、JDKなどの基本的な環境が必要です。
Sqoopがツールコンポーネントであることを考えると、単一ノードのインストールで十分です。
1.インストールパッケージをアップロードします
インストールパッケージとバージョン:sqoop-1.4.6
[root@hop01 opt]# tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
[root@hop01 opt]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop1.4.6
2.構成ファイルを変更します
ファイルの場所:sqoop1.4.6/conf
[root@hop01 conf]# pwd
/opt/sqoop1.4.6/conf
[root@hop01 conf]# mv sqoop-env-template.sh sqoop-env.sh
構成コンテンツ:hadoopシリーズの共通コンポーネントとスケジューリングコンポーネントzookeeperを含みます。
[root@hop01 conf]# vim sqoop-env.sh
# 配置内容
export HADOOP_COMMON_HOME=/opt/hadoop2.7
export HADOOP_MAPRED_HOME=/opt/hadoop2.7
export HIVE_HOME=/opt/hive1.2
export HBASE_HOME=/opt/hbase-1.3.1
export ZOOKEEPER_HOME=/opt/zookeeper3.4
export ZOOCFGDIR=/opt/zookeeper3.4
3.環境変数を構成します
[root@hop01 opt]# vim /etc/profile
export SQOOP_HOME=/opt/sqoop1.4.6
export PATH=$PATH:$SQOOP_HOME/bin
[root@hop01 opt]# source /etc/profile
4.MySQLドライバーを紹介します
[root@hop01 opt]# cp mysql-connector-java-5.1.27-bin.jar sqoop1.4.6/lib/
5.環境検査
キーポイント:インポートとエクスポート
ヘルプコマンドを表示し、バージョンごとにバージョン番号を表示します。Sqoopはコマンドライン操作に基づくツールであるため、ここでのコマンドは以下で使用されます。
6.関連する環境
この時点で、基本的にクラスターモードであるsqoopデプロイメントノードの関連環境を確認します。
7.MySQL接続をテストします
sqoop list-databases --connect jdbc:mysql://hop01:3306/ --username root --password 123456
図に示すように、MySQLデータベースを表示するコマンドは次のとおりです。結果は正しく出力されます。
3、データインポートの場合
1.MySQLデータスクリプト
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (1, 'spring');
INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (2, 'c++');
INSERT INTO `sq_import`.`tb_user`(`id`, `user_name`) VALUES (3, 'java');
2.Sqoopインポートスクリプト
データベースのテーブルを指定し、すべてのテーブルをHadoopシステムにインポートします。Hadoopサービスはここで開始する必要があることに注意してください。
sqoop import
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--table tb_user \
--target-dir /hopdir/user/tbuser0 \
-m 1
3.Hadoopクエリ
[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbuser0/part-m-00000
4.列と条件を指定します
WHERE \ $ CONDITIONSは、クエリSQLステートメントに含める必要があります。
sqoop import
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--target-dir /hopdir/user/tbname0 \
--num-mappers 1 \
--query 'select user_name from tb_user where 1=1 and $CONDITIONS;'
エクスポート結果を表示します。
[root@hop01 ~]# hadoop fs -cat /hopdir/user/tbname0/part-m-00000
5.Hiveコンポーネントをインポートします
ハイブが使用するデータベースを指定しない場合、デフォルトのライブラリがデフォルトでインポートされ、テーブル名が自動的に作成されます。
sqoop import
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--table tb_user \
--hive-import \
-m 1
実行プロセス中、ここでsqoopの実行ログに注意してください。
ステップ1:MySQLデータをHDFSのデフォルトパスにインポートします。
手順2:一時ディレクトリのデータをハイブテーブルに移行します。
6.HBaseコンポーネントをインポートします
hbaseの現在のクラスターバージョンは1.3です。データのインポートを正常に実行する前に、テーブルを作成する必要があります。
sqoop import
--connect jdbc:mysql://hop01:3306/sq_import \
--username root \
--password 123456 \
--table tb_user \
--columns "id,user_name" \
--column-family "info" \
--hbase-table tb_user \
--hbase-row-key id \
--split-by id
HBaseでテーブルデータを表示します。
4、データエクスポートの場合
新しいMySQLデータベースとテーブルを作成し、HDFSのデータをMySQLにエクスポートします。ここでは、最初のインポートスクリプトによって生成されたデータを使用できます。
sqoop export
--connect jdbc:mysql://hop01:3306/sq_export \
--username root \
--password 123456 \
--table tb_user \
--num-mappers 1 \
--export-dir /hopdir/user/tbuser0/part-m-00000 \
--num-mappers 1 \
--input-fields-terminated-by ","
MySQLでデータを再度表示すると、レコードが完全にエクスポートされます。これ,
が各データフィールド間の区切り文字であり、文法規則をスクリプト-HDFSデータクエリの結果と比較できます。
5、ソースコードアドレス
GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent
ラベルを読む
[ Java Foundation ] [デザインパターン] [構造とアルゴリズム] [ Linuxシステム] [データベース]
[分散アーキテクチャ] [マイクロサービス] [ビッグデータコンポーネント] [ SpringBoot Advanced ] [ Spring&Boot Foundation ]