将数据输入Hadoop的方法:Hadoop客户端,Sqoop,Flume

Volume,Velocity和Variety是大数据的3个定义属性。不仅3 V定义大数据,而且也是处理大数据的最大挑战,特别是在将其引入Hadoop生态系统时。

Variety并不值得关注,因为与许多其他数据库不同,Hadoop在存储数据时不需要定义结构。在HDFS中,数据以文件的形式存储。数据的数量和速度令人担忧。

Hadoop可以存储几乎无限量的数据,但我们如何将这些数据提供给HDFS。我们如何才能将数据传输到比任何磁盘上所能容纳的数据大得多的HDFS?另一个值得关注的原因是高速数据,可能来自sensor,信息的速度可能会对单个处理器系统构成挑战。

Hadoop本身不受任何这些因素的限制,但数据源可能会影响您使用的数据导入工具的选择。有许多工具可用于此目的,如Sqoop,Flume,Hadoop客户端等。其中一些是Hadoop安装的一部分,其他可以插入。

Hadoop客户端:

Hadoop Client是一个通用命令行工具,提供了一系列控制hdfs的工具。它包含一组命令来管理HDFS中与其他文件系统类似的文件和文件夹。它还提供HDFS特定的操作,如更改复制因子(默认为3)。

Apache Sqoop:

Sqoop是一个用来导入和导出数据的工具。Sqoop更常用来连接Oracle、Microsoft、Postgres、Teradata数据库。它有一个简单的命令语法,并且非常适合导入整个表。

这是一个简单的scoop脚本的例子。

$ sqoop import \

--connect jdbc:mysql://localhost/userdb \

--username root \

--table emp_add \

--target-dir /queryresult

在幕后,Sqoop将创建一个查询来从源数据库读取数据。“connect”行告诉Sqoop如何访问数据库。然后我们指定了用于登录到源数据库的“用户名”,要导入的表以及“target”HDFS目录来导入结果。在Sqoop中还有其他选项,并且可以参考Sqoop文档获取更多信息。有一个类似的从HDFS导出到数据库的命令。

Sqoop在群集上作为可配置的Map端作业运行,以便将数据写入HDFS,并利用Hadoop的并行特性,并使用多个连接将数据写入目标数据库。开发人员可以配置要使用的连接数量和地图作业数量。Sqoop是一个命令行工具,可以编写脚本在Oozie的生产环境中进行安排。

Flume:

Flume是一种工具,可用于将高容量和高速度的数据从外部源输入到HDFS中。数据通过flume代理流到HDFS中,数据可以是logs、sensor data和来自twitter的社交媒体feed。

将数据输入Hadoop的方法:Hadoop客户端,Sqoop,Flume

Flume数据流模型定义了一个源和接收器。源接收来自外部数据源的数据流单元,称为事件。当源接收到一个事件时,它将它存储在一个通道中,通常是一个内存块,它保存数据,直到它被接收器消耗。sink从通道中移除事件,并将其存储在HDFS中。这个体系结构允许源和接收器异步执行,而通道充当它们之间的缓冲区。

Flume代理可以包含多个通道、源和接收器,并且可以一个接一个地链接。或者可以并行运行。可以将多个flume代理组合到另一个flume源上。可以利用flume的这个属性来交付复杂的数据输入架构。

当然,对于导入和导出数据,实际上有一个非详尽的工具列表,但是这些工具只是其中的一部分,可以让您了解其中的可能性。


分享到:


相關文章: