Sqoopのインストールと使用の詳細教程


本論文では非常に便利なデータ転送ツールを紹介します。Sqoopは、主にHadoopと従来のデータベースとの間でデータを転送するためのオープンソースツールであり、関係型データベース(例えば、MySQL、Oracle、Postgresなど)のデータをHadoopのHFSに導くことができ、また、HFSのデータを関係型データベースに導くことができる。Sqoopプロジェクトは2009年に始まりました。最初はHadoopの第三者モジュールとして存在していました。その後、利用者が素早く配置できるように、開発者がより速い反復開発ができるように、Sqoopは独立してApacheプロジェクトになりました。コラム「破繭成蝶――ビッグデータ編」に注目して、より多くの関連内容を調べてみましょう。
一、Sqoopのインストール
1.1アップロードインストールパッケージをダウンロードする
1、まずインストールパッケージをダウンロードし、ここでダウンロードしますをクリックします。

2、ダウンロードしたインストールパッケージをクラスタにアップロードし、関連ディレクトリを解凍し、名前を変更する。

tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C ../modules/

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

1.2プロファイルの変更
1、まずsqoop-env-template.shファイルの名前を変更します。

[root@master conf]# mv sqoop-env-template.sh sqoop-env.sh
2、sqoop-env.shに各コンポーネントを追加する経路

export HADOOP_COMMON_HOME=/opt/modules/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/modules/hadoop-2.7.2
export HIVE_HOME=/opt/modules/hive
export ZOOKEEPER_HOME=/opt/modules/zookeeper-3.4.10
export ZOOCFGDIR=/opt/modules/zookeeper-3.4.10
export HBASE_HOME=/opt/modules/hbase
1.3 JDBCドライバをコピーする
MySQLのドライババックをSqoopのlibディレクトリにコピーします。

[root@master software]# cp ./mysql-connector-java-5.1.47.jar /opt/modules/sqoop/lib/
1.4 Sqoopがインストールされたかどうかを確認する

bin/sqoop help

上の図の内容が出ました。インストールが成功しました。
二、Sqoopの導入とエクスポート
2.1接続データベースをテストする

bin/sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password p@ssw0rd

2.2 MySQLデータをHFSに導入する
1、まずMySQLデータベース(xzw)にpeopleテーブルを新たに作成します。以下の通りです。

create table people(id int(4) primary key not null auto_increment, name varchar(255), sex varchar(255));
insert into people(name, sex) values('xzw', 'Male');
insert into people(name, sex) values('fq', 'FeMale');

2、全量導入

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--table people \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by ","
以下のコマンドを使用してインポートの結果を確認します。

3、クエリーの導入

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "," \
--query 'select name,sex from people where id <=1 and $CONDITIONS;'
インポートの結果を表示:

ここで注意したいのは、query後にダブルクォーテーションマークを使用すると、$CONDITIONSの前には変換符を付けなければならず、shellが自分の変数として認識されるのを防ぐためである。シングルクォーテーションマークを使うなら、プラスは必要ありません。
4、指定列の導入

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "," \
--columns id,sex \
--table people
表示結果:

ここで注意したいのは、columnsに複数の列が含まれている場合は、コンマで区切られ、分離時にスペースを追加しないことです。
5、sqoopキーワードを使って、導入データをフィルタで調べます。

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--target-dir /user/sqoop/people \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "," \
--table people \
--where "id=1"
表示結果:

2.3 MySQLデータをHiveに導入する

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--table people \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table hive_people

このプロセスは2ステップに分けられ、第1ステップはデータをHFSに導入し、第2ステップはHFSに導入されたデータをHive倉庫に移行する。ここで注意したいのは、Hiveの表は事前に作成する必要がなく、Sqoopはデータを導く過程で自動的に表を作成します。
2.4 MySQLデータをHBaseに導入する

bin/sqoop import \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--table people \
--columns "id,name,sex" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "hbase_people" \
--num-mappers 1 \
--split-by id
ここで注意したいのは、HBase表を事前に作成する必要があります。

create 'hbase_people','info'

2.5 HFSはMySQLにデータをエクスポートします。

bin/sqoop export \
--connect jdbc:mysql://master:3306/xzw \
--username root \
--password p@ssw0rd \
--table people \
--num-mappers 1 \
--export-dir /user/sqoop/people \
--input-fields-terminated-by ","

ここで注意したいのは、MySQLに表がないと自動的に作成されません。つまり、エクスポートを実行する前にMySQLに良いテーブルを作成する必要があります。
三、Sqoopスクリプトパッケージ
私たちはopt形式のファイルを使ってSqoopコマンドを包装して実行します。具体的には以下の通りです。
まずSqoopのインストールディレクトリでディレクトリoptを新規作成し、スクリプトを作成します。

export
--connect
jdbc:mysql://master:3306/xzw
--username
root
--password
p@ssw0rd
--table
people
--num-mappers
1
--export-dir
/user/sqoop/people
--input-fields-terminated-by
","

次に次のコマンドでスクリプトを実行します。

bin/sqoop --options-file opt/HDFSToMySQL.opt
このページではSqoopのインストールと使用についての詳細な教程の記事を紹介します。Sqoopのインストールと使用内容については以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
このページではSqoopのインストールと使用についての詳細な教程の記事を紹介します。Sqoopのインストールと使用内容については以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。