将 csv 日志文件从 windows 服务器转储到 ubuntu VirtualBox/hadoop/hdfs

Posted

技术标签:

【中文标题】将 csv 日志文件从 windows 服务器转储到 ubuntu VirtualBox/hadoop/hdfs【英文标题】:Dumping csv logs files from windows server to ubuntu VirtualBox/hadoop/hdfs 【发布时间】:2016-11-30 18:13:03 【问题描述】:

我们每天都从应用程序获取新文件,以 csv 的形式存储在 Windows 服务器中,例如 c:/program files(x86)/webapps/apachetomcat/.csv 每个文件中都有不同的数据,所以有任何 hadoop将文件从 Windows 服务器传输到 hadoop hdfs 的组件,我遇到了水槽,kafka 但没有得到正确的例子,任何人都可以在这里遮光。

所以每个文件都有单独的名称,大小可达 10-20mb,每日文件数超过 200 个文件,一旦文件添加到 windows 服务器,flume/kafka 应该能够将这些文件放入 hadoop,以后的文件是从spark处理的HDFS导入并移动到处理后的文件到HDFS中的另一个文件夹

【问题讨论】:

请提供更多详细信息,文件大小?您希望如何处理这些数据? 【参考方案1】:

Flume 是最佳选择。需要配置一个水槽代理(进程)。水槽代理有 3 个部分:

Flume 源 - Flume 寻找新文件的地方。 c:/program files(x86)/webapps/apachetomcat/.csv 在你的情况下。

Flume sink - flume 发送文件的地方。在您的情况下是 HDFS 位置。

Flume 通道 - 文件在发送到接收器之前的临时位置。您需要为您的案例使用“文件通道”。

点击here查看示例。

【讨论】:

感谢 Akash,所以我也需要在 windows 和 linux 上使用水槽??你能给我详细的解释吗?和示例示例 是的,您需要运行 2 个代理,如此处所示 docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.4.3/…。如果你能以某种方式将日志发送到本地 HDFS 节点,那将是非常棒的,但如果那不可能,那么列出了一些解决方法***.com/questions/26168820/…。【参考方案2】:

根据我的评论,更多细节将有助于缩小可能性,首先想到的示例,将文件移动到服务器,然后创建一个 bash 脚本并使用 cron 进行调度。

put

Usage: hdfs dfs -put <localsrc> ... <dst>

Copy single src, or multiple srcs from local file system to the destination file system. Also reads input from stdin and writes to destination file system.

hdfs dfs -put localfile /user/hadoop/hadoopfile
hdfs dfs -put localfile1 localfile2 /user/hadoop/hadoopdir
hdfs dfs  -put localfile hdfs://nn.example.com/hadoop/hadoopfile
hdfs dfs  -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.
Exit Code:

Returns 0 on success and -1 on error.

【讨论】:

以上是关于将 csv 日志文件从 windows 服务器转储到 ubuntu VirtualBox/hadoop/hdfs的主要内容,如果未能解决你的问题,请参考以下文章

从一个非常大的 MySQL 转储文件中以 csv 格式获取数据

将稀疏矩阵转储到文件中

如何使用 angular 和 nodejs 将 csv 数据转储到 mongoDB

python 获取从了解CPRI格式的示波器转储的文件作为输入。文件应为csv,每行具有时间和数据值

从命令行将 mysql 数据库转储到纯文本 (CSV) 备份

通过python将弹性数据转储到csv或任何NOSQL中