我是Flume和Hadoop的新手。我们正在开发一个BI模块,可以在其中存储来自HDFS中不同服务器的所有日志。
为此,我正在使用Flume。我刚刚开始尝试。成功创建了一个节点,但现在我愿意设置HTTP源和接收器,以将通过HTTP的传入请求写入本地文件。
有什么建议吗?
提前致谢/
希望这可以帮助您入门。我在我的机器上测试它时遇到了一些问题,现在没有时间完全对其进行故障排除,但是我会解决的…
假设您现在已经启动并运行了Flume,这应该是您的flume.conf文件看起来像使用HTTP
POST源和本地文件接收器的样子(注意:这转到本地文件,而不是HDFS)
########## NEW AGENT ##########
# flume-ng agent -f /etc/flume/conf/flume.httptest.conf -n httpagent
#
# slagent = SysLogAgent
###############################
httpagent.sources = http-source
httpagent.sinks = local-file-sink
httpagent.channels = ch3
# Define / Configure Source (multiport seems to support newer "stuff")
###############################
httpagent.sources.http-source.type = org.apache.flume.source.http.HTTPSource
httpagent.sources.http-source.channels = ch3
httpagent.sources.http-source.port = 81
# Local File Sink
###############################
httpagent.sinks.local-file-sink.type = file_roll
httpagent.sinks.local-file-sink.channel = ch3
httpagent.sinks.local-file-sink.sink.directory = /root/Desktop/http_test
httpagent.sinks.local-file-sink.rollInterval = 5
# Channels
###############################
httpagent.channels.ch3.type = memory
httpagent.channels.ch3.capacity = 1000
用第二行上的命令启动Flume。根据您的需要进行调整(特别是port,sink.directory和rollInterval)。这是一个基本的最低配置文件,还有更多可用的选项,请查看Flume用户指南。现在,就目前而言,该代理启动并对我而言运行正常。
这是我没有时间测试的东西。默认情况下,HTTP代理接受JSON格式的数据。您应该能够通过发送带有以下形式的cURL请求来测试此代理:
curl -X POST -H 'Content-Type: application/json; charset=UTF-8' -d '{"username":"xyz","password":"123"}' http://yourdomain.com:81/
-X将请求设置为POST,-H发送标头,-d发送数据(有效json),然后选择host:port。对我来说,问题是出现错误:
WARN http.HTTPSource: Received bad request from client. org.apache.flume.source.http.HTTPBadRequestException: Request has invalid JSON Syntax.
在我的Flume客户端中,无效的JSON?因此出现错误。尽管弹出错误,表明Flume源正在接收数据。无论您拥有哪种格式,只要格式有效,POST都可以正常工作。
HTTP 通道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80)。这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接时使用。 注意:只限于 MySQL、PostgreSQL、SQLite 和 MariaDB。 上传通道脚本 若要使用此连接方法,首先需要做的就是上传通道脚本到服务器位于的网络服务器。 注意:ntunnel_mysql
HTTP 隧道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80)。这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接时使用。 【注意】仅适用于 MySQL、PostgreSQL、SQLite 和 MariaDB。 上传隧道脚本 若要使用此连接方法,首先需要做的就是上传隧道脚本到你的服务器位于的网络服务器。 【注意】点击“导出隧道脚
HTTP 隧道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80)。这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接时使用。 【注意】仅适用于 MySQL、PostgreSQL、SQLite 和 MariaDB。 上传隧道脚本 若要使用此连接方法,首先需要做的就是上传隧道脚本到你的服务器位于的网络服务器。 【注意】“ntunnel
HTTP 隧道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80)。这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接时使用。 【注意】仅适用于 MySQL、PostgreSQL、SQLite 和 MariaDB。 上传隧道脚本 若要使用此连接方法,首先需要做的就是上传隧道脚本到你的服务器位于的网络服务器。 【注意】“ntunnel
HTTP 隧道是一种连接到服务器的方法,使用与网络服务器相同的通讯协定(http://)和相同的端口(端口 80)。这是当你的互联网服务供应商不允许直接连接,但允许创建 HTTP 连接时使用。 【注意】仅适用于 MySQL、PostgreSQL、SQLite 和 MariaDB。 上传隧道脚本 若要使用此连接方法,首先需要做的就是上传隧道脚本到你的服务器位于的网络服务器。 【注意】点击“导出隧道脚