Sqoop2从Mysql导入Hdfs (hadoop-2.7.1,Sqoop 1.99.6)

一、环境搭建

1.Hadoop

http://my.oschina.net/u/204498/blog/519789

2.Sqoop2.x

http://my.oschina.net/u/204498/blog/518941

3. mysql

二、从mysql导入hdfs

1.创建mysql数据库、表、以及测试数据

xxxxxxxx$  mysql -uroot -p
Enter password: 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

test  => 是新建的数据库

mysql> use test;

mysql> show tables;
+----------------------+
| Tables_in_test       |
+----------------------+               |
| test                 |
+----------------------+
1 rows in set (0.00 sec)

test => 是新增的表

mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(45) | YES  |     | NULL    |                |
| age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> select * from test;
+----+------+------+
| id | name | age  |
+----+------+------+
|  7 | a    |    1 |
|  8 | b    |    2 |
|  9 | c    |    3 |
+----+------+------+
3 rows in set (0.00 sec)

2. 为各个用户授权

注意:sqoop提交job后,各个节点在map阶段会访问数据库,所以需事先授权

mysql> grant [all | select | ...] on {db}.{table} to {user}@{host} identified by {passwd};
mysql> flush privileges;

#我给特定的hostname授权 username:root passwd:root 访问db:test 中任意table,权限是all
mysql> grant all on test.* to ‘root‘@{host} identified by ‘root‘;

3.启动sqoop2-server

[[email protected] sqoop-1.99.6-bin-hadoop200]$ pwd
/home/hadoop/sqoop-1.99.6-bin-hadoop200

[[email protected] sqoop-1.99.6-bin-hadoop200]$ ./bin/sqoop2-server start
...
...

webui可以访问校验,也可以查看log

4.启动sqoop2-shell

[[email protected] sqoop-1.99.6-bin-hadoop200]$ pwd
/home/hadoop/sqoop-1.99.6-bin-hadoop200

[[email protected] sqoop-1.99.6-bin-hadoop200]$ ./bin/sqoop2-shell 
...
...

sqoop:000> show version
...
...

sqoop:000> show connector
+----+------------------------+---------+------------------------------------------------------+----------------------+
| Id |          Name          | Version |                        Class                         | Supported Directions |
+----+------------------------+---------+------------------------------------------------------+----------------------+
| 1  | generic-jdbc-connector | 1.99.6  | org.apache.sqoop.connector.jdbc.GenericJdbcConnector | FROM/TO              |
| 2  | kite-connector         | 1.99.6  | org.apache.sqoop.connector.kite.KiteConnector        | FROM/TO              |
| 3  | hdfs-connector         | 1.99.6  | org.apache.sqoop.connector.hdfs.HdfsConnector        | FROM/TO              |
| 4  | kafka-connector        | 1.99.6  | org.apache.sqoop.connector.kafka.KafkaConnector      | TO                   |
+----+------------------------+---------+------------------------------------------------------+----------------------+

根据你的connector创建connector
sqoop:000> create link -c 1      => 先创建jdbc
会填写name、jdbc-driver、url、username、passwd等等

sqoop:000> create link -c 3      => 创建hdfs
会填写name、hdfs url、等等

sqoop:000> show link
+----+-------------+--------------+------------------------+---------+
| Id |    Name     | Connector Id |     Connector Name     | Enabled |
+----+-------------+--------------+------------------------+---------+
| 3  | 10-21_jdbc1 | 1            | generic-jdbc-connector | true    |
| 4  | 10-21_hdfs1 | 3            | hdfs-connector         | true    |
+----+-------------+--------------+------------------------+---------+

创建job -f=> from  -t to 即从哪些导入到哪里
sqoop:000> create job -f 3 -t 4
会填写,相应的table信息。还有hdfs信息

sqoop:000> show job             
+----+---------------+----------------+--------------+---------+
| Id |     Name      | From Connector | To Connector | Enabled |
+----+---------------+----------------+--------------+---------+
| 1  | 10-20_sqoopy2 | 1              | 3            | true    |
+----+---------------+----------------+--------------+---------+

#启动job
sqoop:000> start job -j 2
...
...
...

可以再webui上访问到,查看进度,也可以使用
sqoop:000> status job -j 2

sqoop的guide

http://sqoop.apache.org/

5.troubleshooting

多看日志,慢慢的排查

时间: 2024-10-12 07:57:10

Sqoop2从Mysql导入Hdfs (hadoop-2.7.1,Sqoop 1.99.6)的相关文章

sqoop命令,mysql导入到hdfs、hbase、hive

1.测试MySQL连接 bin/sqoop list-databases --connect jdbc:mysql://192.168.1.187:3306/trade_dev --username 'mysql' --password '111111' 2.检验SQL语句 bin/sqoop eval --connect jdbc:mysql://192.168.1.187:3306/trade_dev --username 'mysql' --password '111111' --quer

mysql导入到hdfs中常见问题

mysql导入到hdfs中命令:sqoop import --connect jdbc:mysql://192.168.0.161:3306/angel --username anqi -password anqi --table test2 --fields-terminated-by '\t' -m 1 常见问题1:Warning: /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/bin/../lib/sqoop/../accumulo

mysql数据与Hadoop之间导入导出之Sqoop实例

前面介绍了sqoop1.4.6的 如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令. 显示mysql数据库的信息,一般sqoop安装测试用 sqoop list-databases --connect jdbc:mysql://192.168.2.101:3306/ --username root --password root 显示数据库里所有表: sqoop list-tables --connectjdbc:mysql://192.168.2.

Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)

sqoop2-1.99.4和sqoop2-1.99.3版本操作略有不同:新版本中使用link代替了老版本的connection,其他使用类似. sqoop2-1.99.4环境搭建参见:Sqoop2环境搭建 sqoop2-1.99.3版本实现参见:Sqoop2入门之导入关系型数据库数据到HDFS上 启动sqoop2-1.99.4版本客户端: $SQOOP2_HOME/bin/sqoop.sh client set server --host hadoop000 --port 12000 --web

Sqoop2入门之导入关系型数据库数据到HDFS上

需求:将hive数据库中的TBLS表导出到HDFS之上: $SQOOP2_HOME/bin/sqoop.sh client sqoop:000> set server --host hadoop000 --port 12000 --webapp sqoop Server is set successfully 创建connection: sqoop:000> create connection --cid 1 Creating connection for connector with id

Sqoop MySQL 导入到HDFS

从MySQL数据库phx中读取tree表到HDFS 执行命令: sqoop import --connect jdbc:mysql://node1:3306/phx \--username root --table tree --m 1 命令行输出: Warning: /csh/link/sqoop/../hcatalog does not exist! HCatalog jobs will fail. Please set $HCAT_HOME to the root of your HCat

sqoop从mysql导入到hdfs

1.mysql -- 创建数据库 create database logs; -- 使用 use logs; -- 创建表 create table weblogs(  md5 varchar(32),  url varchar(64),  request_date date,  request_time time,  ip varchar(15) ); -- 从外部文本文件加载数据 load data infile '/path/weblogs_entries.txt' into table

sqoop Mysql 导入到hdfs、hive

sqoop是一个用于在Hadoop和关系型数据库(Oracle,Mysql...)间数据传递的开源工具.下面以mysql.sqlserver为例,介绍使用sqoop将数据从mysql.sqlserver导入到Hadoop中(HDFS.Hive) #导入命令及参数介绍 通用参数 参数名 参数说明 --connect <jdbc-uri> JDBC连接字符串 --username <username> 数据库用户名 --password <password> 数据库密码 -

使用sqoop将mysql数据导入到hadoop

hadoop的安装配置这里就不讲了. Sqoop的安装也很简单. 完成sqoop的安装后,可以这样测试是否可以连接到mysql(注意:mysql的jar包要放到 SQOOP_HOME/lib 下): sqoop list-databases --connect jdbc:mysql://192.168.1.109:3306/ --username root --password 19891231 结果如下 即说明sqoop已经可以正常使用了. 下面,要将mysql中的数据导入到hadoop中.