zookeeper与sqoop

1.ZooKeeper是hadoop的分布式协调服务,提供一组工具,使在构建分布式应用时能够对部分失败进行正确的处理。
2.Sqoop的导入:能将数据从关系型数据库抽取到hadoop中,供MR程序应用或者hive应用。
Sqoop的导出:将HDFS数据移到关系型数据库。(将一张表从HDFS导出到数据库时,我们必须在数据库中先创建一张用于接收数据的目标表)
3.实战:
%mysql -u root -p
mysql> create database hadoopguide;
mysql>grant all privileges on hadoopguide.* to'%'@'localhost';
mysql>grant all privileges on hadoopguide.* to ' '@'localhost';(允许本地用户查看和修改hadoopguide模式的内容)
mysql>quit;
mysql>mysql hadoopguide
mysql>create table widget(id int not primary keyauto_increment,name DECIMAL(10,2));
mysql>insert into widget values(12,0.25);
mysql>quit;
将这个表导入到HDFS:
%sqoop import --connect jdbc:mysql://localhost/hadoopguide \
>--table widget -m 1
(-m 1代表只是用一个map)
Sqoop能够根据源数据的表来生成一个hive表
%sqoop create-hive -table --connectjdbc:mysql://localhost/hadoopguide \
>--table widget --fields-terminated-by ','
hive>load data inpath 'widget' into table widget;
三个步骤数据导入、创建hive表、将HDFS数据导入hive合为一个步骤的语句:
%sqoop import --connect jdbc:mysql://localhost/hadoopguide \
>--table widget -m 1 --hive-import
导出:
%mysql hadoopguide
mysql> create table sales(vol decimal(8,2),zipinteger);
%sqoop export --connectjdbc:mysql://localhost/hadoopguide -m 1 \
>--table sales --export-dir/user/hive/warehouse/zip_project \
>--input-fields-terminated-by '\0001'


**总结一些常用命令:
1)列出mysql数据库中的所有数据库
sqoop list-databases --connect jdbc:mysql://localhost/ --usernameroot --password 123456
2)连接mysql并列出数据库中的表
sqoop list-tables --connect jdbc:mysql://localhost/hive --usernameroot --password 123456
命令中的hive为mysql数据库中的数据库名称 username password分别为mysql数据库的用户密码
3)将关系型数据的表结构复制到hive中,只是复制表的结构,表中的内容没有复制过去。
 sqoopcreate-hive-table --connect jdbc:mysql://localhost/hive --table test1--username root --password 123456 --hive-table testjiegou
其中 --table test1为mysql中的数据库test中的表 --hive-table testjiegou 为hive中新建的表名称
4)从关系数据库导入文件到hive中
sqoop import --connect jdbc:mysql://localhost/hive --username root--password 123456 --table test1 --hive-import --hive-table sqoop_test1 -m 1
5)将hive中的表数据导入到mysql中,在进行导入之前,mysql中的表fromhive必须已经提起创建好了。
hadoop@cw-virtual-machine:/usr/local/sqoop$ bin/sqoop export--connect jdbc:mysql://localhost/hive -m 1 --username root --password 123456--table fromhive --export-dir /user/hive/warehouse/tosqoop--input-fields-terminated-by ' '(此处指定了分隔符,有时是'\0001')
6)从数据库导出表的数据到HDFS上文件
 sqoopimport --connect jdbc:mysql://localhost/hive --username root --password 123456--table hive_test -m 1(表在/user/hadoop/目录下面)

实战练习:
mysql -u root -p在mysql的test数据库中建立表:

create table students (id int not nullprimary key,name varchar(20),age int);

insert into studentsvalues('10001','liyang',29);

insert into studentsvalues('10002','lion',28);

insert into studentsvalues('10003','leon',26);

master测试sqoop能否成功连接宿主机器上的mysql

sqoop list-tables --connectjdbc:mysql://localhost/test --usernameroot --password 123456

 

以root进入mysql

赋予root权限:

mysql> GRANT ALL PRIVILEGES ON*.* TO 'root'@'localhost'  IDENTIFIED BY'some_pass' WITH GRANT OPTION;

//本地操作的权限

mysql> GRANT ALL PRIVILEGES ON*.* TO ' root '@'%' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

//远程操作的权限

 

将mysql中sqoop表空间的students表的三行数据导入HDFS:

sqoop import --connectjdbc:mysql://192.168.66.209:3306/test --username root --password 123456 --tablestudents -m 1

运行 hadoop dfs -cat/user/root/students/part-m-00000 就能看到该文件已经包含mysqlstudents表的三行数据:

10001,liyang,29

10002,lion,28

10003,leon,26

 

将HDFS中的数据导入Mysql的students表中:

在hive database中建立一个表students,将上面的表内容导入到此表中

sqoop export --connectjdbc:mysql://192.168.66.209:3306/hive --usernameroot --password 123456 --table students --export-dir hdfs://master:9000/user/root/students/part-m-00000

 

mysql的数据导入hbase的命令格式为:

sqoop import --connectjdbc:mysql://mysqlserver_IP/databaseName --username --password password --tabledatatable --hbase-create-table --hbase-table hbase_tablename --column-familycol_fam_name --hbase-row-key key_col_name

其中 ,databaseName datatablemysql的数据库和表名,hbase_tablename是要导成hbase的表名,key_col_name可以指定datatable中哪一列作为hbase新表的rowkeycol_fam_name是除rowkey之外的所有列的列族名

 

例如:可通过如下命令将Mysql中的students表导入到Hbase中:

sqoop import --connect jdbc:mysql://192.168.66.209/test --username root --password 123456 --tablestudents --hbase-create-table --hbase-table students --column-family stuinfo--hbase-row-key id

 

hbase(main):004:0> scan 'students'

ROWCOLUMN+CELL

10001column=stuinfo:age, timestamp=1371268556329, value=29

10001column=stuinfo:name, timestamp=1371268556329, value=liyang

10002column=stuinfo:age, timestamp=1371268565436, value=28

10002column=stuinfo:name, timestamp=1371268565436, value=lion

10003column=stuinfo:age, timestamp=1371268556330, value=26

10003column=stuinfo:name, timestamp=1371268556330, value=leon

3row(s) in 0.3160 seconds

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值