将非结构化数据导入 hadoop

Importing unstructured data into hadoop

如何在Hadoop中导入非结构化和半结构化数据?导入结构化数据很容易,因为我可以使用 Sqoop 直接从 MySQL 导入它。但是如果是非结构化数据怎么办?

您只需通过文件系统将其上传到 HDFS API

例如hadoop fs -put something.ext /tmp

其他块存储也是如此。它没有任何不同。 HDFS 唯一添加的是你需要考虑在数据节点之间拆分文件后如何解析文件

有多种方法可以将非结构化数据导入 Hadoop,具体取决于您 案例。

  1. 使用 HDFS shell 命令(例如 put 或 copyFromLocal)将平面文件移动到 HDFS。详情请见文件系统Shell指南

  2. 使用 WebHDFS REST API 进行应用程序集成。 WebHDFS REST API

  3. 使用 Apache Flume。它是一个分布式、可靠且可用的系统,用于有效地收集、聚合大量数据并将其从许多不同的来源移动到集中式数据存储,例如 HDFS。尽管历史上 Flume 的很多用例都涉及日志数据 collection/aggregation,但 Flume 可以与 Kafka 一起使用,并将其自身转变为实时事件处理管道。

  4. 使用通用事件处理系统 Storm。在由螺栓和喷口组成的拓扑中,它可用于将基于事件的非结构化数据摄取到 Hadoop

  5. Spark 的流组件提供了另一种将实时非结构化数据引入 HDFS 的替代方法。但它的处理模型与 Storm 有很大不同。 Strom 一次只处理一个传入的事件,而 Spark 流实际上会在处理它们之前对短时间内到达的事件进行批处理 window。它被称为小批量。当然,Spark Streaming 运行在 Spark Core 计算引擎之上,据称它在内存中比 MapReduce 快 100 倍,在磁盘上快 10 倍。