我想知道我可以通过哪些不同的方式将数据导入HDFS。
我是一个新手Hadoop和java web开发人员,直到这个时候。我想知道如果我有一个正在创建日志文件的web应用程序,我如何将日志文件导入HDFS。
如何将数据摄取到HDFS有很多方法,让我在这里试着说明它们:
-
hdfs dfs -put
-从本地文件系统插入文件到HDFS的简单方法 HDFS Java API - Sqoop -用于将数据导入/从数据库
- Flume -流文件,日志
- Kafka -分布式队列,主要用于近实时流处理
- Nifi - Apache的孵化项目,用于将数据移动到HDFS而无需进行大量更改
将web应用日志带到HDFS的最佳解决方案是通过Flume。
我们有三种不同类型的数据-结构化(基于模式的系统,如Oracle/MySQL等),非结构化(图像,weblogs等)和半结构化数据(XML等)
结构化数据可以存储在数据库SQL中的表中,其中包含行和列
半结构化数据是不存在于关系数据库中的信息,但它确实具有一些使其更易于分析的组织属性。通过一些进程,你可以将它们存储在关系数据库中(例如XML)
非结构化数据通常包括文本和多媒体内容。例子包括电子邮件、文字处理文档、视频、照片、音频文件、演示文稿、网页和许多其他类型的商业文档。
根据您的数据类型,您将选择将数据导入HDFS的工具。
贵公司可能使用CRM、ERP工具。但我们并不确切地知道这些数据是如何组织起来的。结构化的。
如果我们留下简单的HDFS命令,如put, copyFromLocal等,将数据加载到HDFS兼容的格式,下面是将数据加载到HDFS的主要工具
Apache Sqoop(TM)是一个用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具。数据来自MySQL, SQL Server &Oracle表可以通过这个工具加载到HDFS。
Apache Flume是一个分布式的、可靠的、可用的服务,用于高效地收集、聚合和移动大量的日志数据。它具有基于流数据流的简单灵活的架构。它具有健壮性和容错性,具有可调的可靠性机制和许多故障转移和恢复机制。
其他工具包括Chukwa,Storm和Kafka
但另一个重要的技术,它变得非常流行的是Spark。它是一个朋友。for Hadoop.
Spark正在成为Hadoop的一个很好的实时数据处理替代品,它可能使用HDFS作为数据源,也可能不使用HDFS。