当前位置: 首页 > 知识库问答 >
问题:

Flume - 在 Linux 中将日志文件从 Windows 流式传输到 HDFS

笪成周
2023-03-14

如何将日志文件从Windows 7传输到Linux中的HDFS?

Windows中的水槽出现错误

我已经在Windows 7(节点1)上安装了“flume-node-0.9.3”。“flumenode”服务正在运行,localhost:35862可以访问
在Windows中,日志文件位于“C:/logs/Weblogic”。log'
CentOS Linux(节点2)中的Flume代理也在运行。

  1. 在 Windows 机器中,JAVA_HOME变量设置为“C:\Program Files\Java\jre7”
  2. Java.exe 文件位于 “C:\Program Files\Java\jre7\bin\java.exe”
  3. Flume 节点安装在“ C:\Program Files\Cloudera\Flume 0.9.3”

这是Windows 7(节点1)上Flume的“conf”文件夹中的flume-src.conf文件

source_agent.sources = weblogic_server
source_agent.sources.weblogic_server.type = exec
source_agent.sources.weblogic_server.command = tail -f C:/logs/Weblogic.log
source_agent.sources.weblogic_server.batchSize = 1
source_agent.sources.weblogic_server.channels = memoryChannel
source_agent.sources.weblogic_server.interceptors = itime ihost itype

source_agent.sources.weblogic_server.interceptors.itime.type = timestamp

source_agent.sources.weblogic_server.interceptors.ihost.type = host
source_agent.sources.weblogic_server.interceptors.ihost.useIP = false
source_agent.sources.weblogic_server.interceptors.ihost.hostHeader = host

source_agent.sources.weblogic_server.interceptors.itype.type = static
source_agent.sources.weblogic_server.interceptors.itype.key = log_type
source_agent.sources.weblogic_server.interceptors.itype.value = apache_access_combined

source_agent.channels = memoryChannel
source_agent.channels.memoryChannel.type = memory
source_agent.channels.memoryChannel.capacity = 100

source_agent.sinks = avro_sink
source_agent.sinks.avro_sink.type = avro
source_agent.sinks.avro_sink.channel = memoryChannel
source_agent.sinks.avro_sink.hostname = 10.10.201.40

source_agent.sinks.avro_sink.port = 41414

我尝试通过在 Flume 文件夹中执行以下命令来运行上述文件:

C:\Program Files\Cloudera\Flume 0.9.3>"C:\Program Files\Java\jre7\bin\java.exe" 
-Xmx20m -Dlog4j.configuration=file:///%CD%\conf\log4j.properties -cp "C:\Program Files\Cloudera\Flume 0.9.3\lib*" org.apache.flume.node.Application 
-f C:\Program Files\Cloudera\Flume 0.9.3\conf\flume-src.conf -n source_agent

但它给出了以下消息:

Error: Could not find or load main class Files\Cloudera\Flume

下面是CentOS(节点2)中运行的trg-node.conf文件。CentOS节点工作正常:

collector.sources = AvroIn
collector.sources.AvroIn.type = avro
collector.sources.AvroIn.bind = 0.0.0.0
collector.sources.AvroIn.port = 41414
collector.sources.AvroIn.channels = mc1 mc2

collector.channels = mc1 mc2
collector.channels.mc1.type = memory
collector.channels.mc1.capacity = 100
collector.channels.mc2.type = memory
collector.channels.mc2.capacity = 100

collector.sinks = HadoopOut
collector.sinks.HadoopOut.type = hdfs
collector.sinks.HadoopOut.channel = mc2
collector.sinks.HadoopOut.hdfs.path =/user/root
collector.sinks.HadoopOut.hdfs.callTimeout = 150000
collector.sinks.HadoopOut.hdfs.fileType = DataStream
collector.sinks.HadoopOut.hdfs.writeFormat = Text
collector.sinks.HadoopOut.hdfs.rollSize = 0
collector.sinks.HadoopOut.hdfs.rollCount = 10000
collector.sinks.HadoopOut.hdfs.rollInterval = 600

共有1个答案

百里业
2023-03-14

问题是由于此路径中的程序和文件之间存在空白:

C:**程序文件**\Cloudera\Flume 0.9.3

考虑将Flume安装在一个没有空格的路径上,它会像一个符咒一样工作。

 类似资料:
  • 我有一个在远程服务器(debian linux)上运行的Java应用程序。该应用程序将运行时信息记录到文件中。 偶尔,支持人员需要使用客户端工具(不是在服务器上运行,而是在支持人员的桌面上运行)分析日志。然后,该工具需要远程访问 < li >服务器上的旧日志文件 < li >当前日志文件(实时增长) 我正在搜索一种良好的(=标准,灵活,安全,调试良好等)方式将这些过去和现在的日志消息流式传输到我的

  • 在HDFS中写入日志文件的最佳方式是什么?我正在尝试配置Apache Flume,并尝试配置能够为我提供数据可靠性的源。我试图配置“exec”,后来也查看了“spooldir”,但flume.apache上的以下文档。org对我的意图表示怀疑- 执行来源: 最常请求的功能之一是像“tail -F file_name”这样的用例,其中应用程序写入磁盘上的日志文件,Flume 尾随文件,将每一行作为事

  • 问题内容: 我正在尝试使用WinSCP将文件从Windows传输到Linux实例。 我使用私钥为我的实例使用ec2-user登录到Amazon实例。但是ec2-user无权写入Linux实例 如何使用WinSCP或任何其他文件传输方法sudo su-访问根目录并写入linux框? 谢谢 问题答案: AFAIK,您不能那样做。 我在工作场所所做的工作是通过WinSCP 将文件传输到您的()文件夹(或

  • 问题内容: 我正在尝试将csv文件作为附件下载流式传输。CSV文件的大小已达到4MB或更大,我需要一种让用户主动下载文件的方法,而不必等待所有数据都先创建并提交到内存中。 我首先使用了我自己的基于Django类的文件包装器。那失败了。然后,我在这里看到了一种使用生成器流式传输响应的方法: 如何使用Django流式传输HttpResponse 当我在生成器中引发错误时,可以看到我正在使用该函数创建正

  • 问题内容: 这是从Google Cloud Storage下载文件的代码: 这行得通,但是这里的问题是,在流回此方法的客户端之前,它必须先缓冲所有字节。这会导致很多延迟,尤其是当存储在GCS中的文件很大时。 有没有一种方法可以从GCS获取文件并将 其直接流式传输到OutputStream ,这里的OutputStream是用于Servlet的。 问题答案: 只是为了澄清一下,您需要一个还是一个?一

  • 3)是否有任何方法告诉journald从特定文件中获取日志? 4)如果没有,有什么变通办法吗?