在传统的数据编程时代,我们今天听到过ETL(数据抽取、转换工具),可以用来从数据源提取数据,经过数据清洗后,放到数据仓库中,如熟知的Logstash, Flume。在大数据的时代,传统的RDBMS中的结构化数据如何倒向大数据的数据库如HBase中呢?这时侯,会用到Sqoop工具。
一、Sqoop工具名字很容易记忆。也就是SQL to hadoop,也就是当结构化数据倒入大数据的意思,当然这个倒入是双向的,hadoop也可以to SQL。
二、 Sqoop的工作流程也不难。
因Hadoop基于Java开发,而大部分关系型数据库都支撑JDBC数据访问接口,因此Sqoop一般采用JDBC连接RDMS数据库。
1、Sqoop使用者首先通过Sqoop命令行客户端输入导入命令,指定数据库的服务器地址、数据库名、表名等信息。
2、Sqoop客户端将数据表的元数据(字段)映射为Hadoop支持的数据类型。
3、根据元数据,Sqoop自动生成提取数据的类、具体的类方法。
4、Sqoop会自动将类下发到不同MapReduce集群服务器中,实现并行计算。MapReduce任务会根据数据库的关键字进行自动的任务分节点划分,例如某集群服务器1只读取1-999的记录。
5、集群服务器按Map任务进行数据的读取,最终以数据文本格式或二进制的格式存储HDFS或HBase中。
三、Hadoop向SQL的数据导出基本流程相同,不再详述
四、Sqoop后的数据可以被其它工具共享
存入HBase、HDFS中的数据,已经永久保存,可以被MapReduce任务,也可以通过Pig、Hive等脚本化的MapReduce任务进行二次的数据处理、分析。
对于一些对于数据时要求不高的大数据展示屏,实际上通过定期的Sqoop任务也能够将HBase中的数据通过UI界面进行数据的可视化展示。