flume HttpSource使用

昇腾910B+MindIE部署Qwen模型避坑指南:从镜像下载到推理测试全流程 本文详细介绍了在昇腾910B硬件环境中使用MindIE推理工具部署Qwen系列模型的全流程指南。从环境准备、镜像下载到模型部署与性能优化,提供一站式解决方案,帮助开发者高效完成AI模型推理任务。 阅读详情

HttpSource

httpsource允许是flume提供的能接收get和post的http请求,http请求会被HttpHandler接口实现类处理,从而将http请求转换为event从而提交到channel。
http适用于一些无法通过部署SDK接收日志的场景,例如游戏客户端。

HttpSource配置使用

HttpSource基本配置参数

配置参数默认值描述
type-http (org.apache.fluem.source.httpSource)或HttpSource
bind0.0.0.0绑定的IP地址或主机名
port-绑定的端口号
enableSSLfalse是否启用SSL
keystore-keystore文件的路径
keystorePassword-进入keystore的密码
handlerJSONHandlerHttpSource使用的处理程序类

配置文件示例:

#source
a1.sources = r1
a1.channels = c1
a1.sources.r1.type = http
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port = 5140
a1.sources.r1.channels = c1
a1.sources.r1.hadler=HTTPSourceXMLHandler
#channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=10000
a1.channels.c1.transactionCapacity=1000
#sink
a1.sinks.k1.type=logger
a1.sinks.k1.channel=c1

HttpHandler二次开发

实现HttpSourceHandler接口,实现getEvents方法,接收HttpServletRequest参数,返回生成的List集合

常见示例如下:

public class HTTPSourceXMLHandler implements HTTPSourceHandler {
    private final String ROOT = "events";
    private final String EVENT_TAG = "event";
    private final String HEADERS_TAG = "headers";
    private final String BODY_TAG = "body";

    private final String CONF_INSERT_TIMESTAMP = "insertTimestamp";
    private final String TIMESTAMP_HEADER = "timestamp";
    private final DocumentBuilderFactory documentBuilderFactory
            = DocumentBuilderFactory.newInstance();

    // Document builders are not thread-safe.
    // So make sure we have one for each thread.
    private final ThreadLocal<DocumentBuilder> docBuilder
            = new ThreadLocal<DocumentBuilder>();

    private boolean insertTimestamp;
    private static final Logger LOG = LoggerFactory.getLogger(HTTPSourceXMLHandler.class);


    public List<Event> getEvents(HttpServletRequest httpServletRequest) throws HTTPBadRequestException, Exception {
        if (docBuilder.get() == null) {
            docBuilder.set(documentBuilderFactory.newDocumentBuilder());
        }
        Document doc;
        final List<Event> events;
        try {
            doc = docBuilder.get().parse(httpServletRequest.getInputStream());            
            Element root = doc.getDocumentElement();        

            root.normalize();
            // Verify that the root element is "events"
            Preconditions.checkState(
                    ROOT.equalsIgnoreCase(root.getTagName()));

            NodeList nodes = root.getElementsByTagName(EVENT_TAG);
            LOG.info("get nodes={}",nodes);

            int eventCount = nodes.getLength();
            events = new ArrayList<Event>(eventCount);
            for (int i = 0; i < eventCount; i++) {
                Element event = (Element) nodes.item(i);
                // Get all headers. If there are multiple header sections,
                // combine them.
                NodeList headerNodes
                        = event.getElementsByTagName(HEADERS_TAG);
                Map<String, String> eventHeaders
                        = new HashMap<String, String>();
                for (int j = 0; j < headerNodes.getLength(); j++) {
                    Node headerNode = headerNodes.item(j);
                    NodeList headers = headerNode.getChildNodes();
                    for (int k = 0; k < headers.getLength(); k++) {
                        Node header = headers.item(k);

                        // Read only element nodes```
                        if (header.getNodeType() != Node.ELEMENT_NODE) {
                            continue;
                        }
                        // Make sure a header is inserted only once,
                        // else the event is malformed
                        Preconditions.checkState(
                                !eventHeaders.containsKey(header.getNodeName()),
                                "Header expected only once " + header.getNodeName());
                        eventHeaders.put(
                                header.getNodeName(), header.getTextContent());
                    }
                }
                Node body = event.getElementsByTagName(BODY_TAG).item(0);
                if (insertTimestamp) {
                    eventHeaders.put(TIMESTAMP_HEADER, String.valueOf(System
                            .currentTimeMillis()));
                }
                events.add(EventBuilder.withBody(
                        body.getTextContent().getBytes(
                                httpServletRequest.getCharacterEncoding()),
                        eventHeaders));
            }
        } catch (SAXException ex) {
            throw new HTTPBadRequestException(
                    "Request could not be parsed into valid XML", ex);
        } catch (Exception ex) {
            throw new HTTPBadRequestException(
                    "Request is not in expected format. " +
                            "Please refer documentation for expected format.", ex);
        }
        return events;
    }

    public void configure(Context context) {
        insertTimestamp = context.getBoolean(CONF_INSERT_TIMESTAMP,
                false);
    }
}

HttpSource异常

如果hanlder发生抛出异常,则http返回400状态码。

如果channel满了,或者无法将event发送到channel,返回503状态码

SAP ERP销售应收&成本科目确定 ERP作为业财一体软件,其中最核心的就是业务与财务模块的自动集成,无需财务进行手工做账,提高工作效率的同时降低人工操作产生的误差。今天浅浅的分享一下SD模块生成会计凭证时,借贷项确定的系统配置。一般项目上借贷项、科目都有FICO提供,但是具体的集成配置是在SD这边。 阅读详情

相关推荐

KLayout教程(二)编辑不同的形状

首先画一个基础的矩形,然后双击他可以定义他的坐标

集成光电子 1万+

flume使用之httpSource

flume自带很长多的source,如:exe、kafka...其中有一个非常简单的source——httpsource,使用httpSource,flume启动后会拉起一个web服务来监听指定的ip和port。常用的使用场景:对于有些应用环境中,不能部署Flume SDK及其依赖项,可以在代码中通过HTTP而不是Flume的PRC发送数据的情况,此时HTTP SOURCE可以用来将数据接收到Fl...

赶路人儿 1万+

解决Windows 10安装语言包时遇到的0x800F0954错误

在安装Windows 10操作系统的语言包时,如果遇到错误代码0x800F0954的提示,这无疑会让许多用户感到困惑和无助。这个错误通常意味着在安装过程中遇到了一些阻碍,导致无法正常完成语言包的安装。本文将为大家详细解析这个错误代码0x800F0954,并提供一系列有效的解决方法,帮助大家顺利安装所需的语言包。

nntxthml的博客 3793

大数据之Flume

Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚和传输的系统。Flume基于流式架构,灵活简单。 . Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。 Flume的优点 1.可以和任意存储进程集成。 2.输入的的数据速率大于写入目的存储的速率,flume会进行缓冲,减小hdfs的压力。 3.flume中的事务基于ch...

qq_45292079的博客 318

SDIO协议

SDIO协议1 概述  SDIO,全称:Secure Digital Input and Output ,即安全数字输入输出接口。2 特点①与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位(默认)、4位和8位。②与较早的多媒体卡系统规格版本全兼容(向前兼容)。③与SD存储卡规格版本2.0全兼容。④与SD I/O卡规格版本2.0全兼容:支持两种不同的数据总线模式:1位(默认)和4

Let the development board fly! 3万+

告别代码丢失!用Git+Gitee管理你的Keil5单片机项目(保姆级图文教程)

本文详细介绍了如何利用Git和Gitee高效管理Keil5单片机项目,解决嵌入式开发中的代码丢失问题。通过精准配置.gitignore文件、设计适合团队的协作流程以及搭建安全备份体系,开发者可以轻松实现版本控制,提升工作效率。特别针对Keil工程的特殊文件类型,提供了实用的过滤规则和操作技巧。

weixin_33686714的博客 470

flume配置文件--httpSource,kafkaChannel,hdfsSink

tier1.sources = httpSource tier1.channels = kafkaChannel tier1.sinks = hdfsSink tier1.sources.httpSource.channels = kafkaChannel tier1.sinks.hdfsSink.channels = kafkaChannel #--------httpSource----...

github_lzt的博客 621

100天精通Python(爬虫篇)——第114天:爬虫基础模块之requests基础入门

一、request模块大总结 1. 下载安装 2. 常用属性或方法 3. response.text和response.content的区别: 4. 发送带headers参数请求 5. 发送带参数请求 6. 在headers参数中携带cookie 7. 超时参数timeout的使用 8. proxies代理参数的使用 9. 发送post请求...............

努力让自己发光,对的人才能迎着光而来 11万+

Flume数据采集

flume自带很长多的source,如:exe、kafka...其中有一个非常简单的source——httpsource,使用httpSource,flume启动后会拉起一个web服务来监听指定的ip和port。常用的使用场景:对于有些应用环境中,不能部署Flume SDK及其依赖项,可以在代码中通过HTTP而不是Flume的PRC发送数据的情况,此时HTTP SOURCE可以用来将数据接收到Fl...

lzs_fan的博客 6872

【C2000系列DSP的双向DC-DC电源】基于TMS320F28034的DC-DC项目开发流程

理解DC-DC 双向电源(基于 TMS320F28034)的开发流程,需要从功能拆解、开发步骤、验证 / 测试项

昔时扬尘处 323

基于STM32的太阳能充电宝设计_资料编号31

系统硬件包括主控 STM32F103C8T6、0.96 OLED 显示屏、蜂鸣器、电源自锁开关、温度传感器 DS18B20、继电器、5 V DC 升压模块 、TB4056、18650锂电池、9 V太阳能板、稳压降压 5 V三极管。电源供应:锂电池为系统供电,9 伏太阳能板经 5 伏降压稳压三极管降压为 5 伏后传送到 TP4056,TP4056 为锂电池供电,因锂电池电压 3.7 伏,通过 5 伏 DC 升压模块升压到 5 伏为整个系统提供 5 伏电压。

嵌入式阿齐Archie 1万+

Apache-Flume日志收集+自定义HTTP Sink处理 测试用例搭建

Flume简介和安装 简介   Flume前身是cloudera 开发的实时日志收集系统,后来纳入Apache旗下。作为一个日志收集系统,他能很轻易的与log4j/logback结合并传输日志。可以用来收集各个子系统的日志做统一处理和查询。   常见的搭配是Flume+kafka消息队列+mongodb/hbase等nosql数据库。这里介绍一下用Flume收集子系统logback日志的...

青云小轩 4387

三菱FX5U-PLC建立CClink的IO通讯

最新需要用三菱的FX5U的PLC搭建一个CClink通讯,PLC做主站,控制CClink从站的IO,下面2个输入模块AJ65SBTB1-32D,两个输出模块AJ65SBTB1-32T。3、在右侧的部件,选择网络模块:FX5-CCL-MS,CC-link主站模块。依次把加入两个AJ65SBTB1-32D,两个AJ65SBTB1-32T。7、基本设置,网络配置设置,链路刷新设置,设置好下面参数,应用。6、基本设置,网络配置设置,CC-Link配置设置。8、部件选择,模块,右键,添加模块标签。

wzz418550729的博客 1001

flume组件HTTPSource解析

HTTPSource是flume的一个专门监听http请求的组件,主要负责在机器中打开某个端口,接收日志请求,并将日志发送到chanel中。

FengYeDeYanLei的博客 4916

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Flume 小记(三) HttpSource 存入本地

FileRollSink" style="margin:0px; padding:0px; font-size:16px; line-height:1.5; color:rgb(51,51,51); font-family:Arial,sans-serif"> HttpSource -> File Roll Sink   FileRollSink 可以将source中的数据存如本地,但Fi

苍穆的博客 4133

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

04_Flume之HTTPSource参数解析

Flume 1.9.0 版本的 HTTPSource 是一种数据源类型,可以用于接收通过 HTTP 协议传输的数据。这个版本中,HTTPSource 新增了许多参数,并且改进了性能和稳定性。

weixin_40727028的博客 505

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Flume HttpSource collects raw type data

使用Flume的httpsource实现raw类型的data采集

drydvbjgdc的博客 139

Flume HTTPSource 与 HTTP Sink 实践:构建实时数据接收网关与推送端点

本文详细介绍了如何使用 Apache Flume 的 HTTPSource 构建实时数据接收网关,以及如何使用 HTTP Sink 构建实时数据推送端点。通过实际案例和配置示例,展示了这两种组件在高性能数据采集与分发场景中的应用方法,帮助读者快速上手并实现实时数据流处理系统。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1016

修改flume源码,使其HTTPSource具备访问路径功能

修改flume源码,使其HTTPSource具备访问路径功能 目前有一个需求,就是Flume可以作为一个类似于tomcat的服务器,可以通过post请求进行访问,并且路径需要:ip:port/contextPath格式。 经过一些资料获悉,httpSource只是httpSource的一个玩具工具,可以说毛坯版,目前仅仅支持的是按照ip:po...

weixin_33813128的博客 210

flume到kafka httpsource

flume到kafka httpsource flume到kafka httpsource 定义一直出错,这边是以接口的形式采集数据推到kafka 但是 这边给的接口是需要拼接。这种的接口形式的如何实现flume采集数据到kafka。下面是获得数据的方式 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181214091744477.png?x-oss在这...

weixin_44095284的博客 469

Flume 小记(二) HttpSource 存入Hive

HDFSSink" style="margin:0px; padding:0px; font-size:16px; line-height:1.5; color:rgb(51,51,51); font-family:Arial,sans-serif"> HttpSource -> HDFS Sink 这里采用了直接存入HDFS,并在在Hive 建外部表 映射到同一地址的方法间接存入

苍穆的博客 1277

flume http source windows 中文乱码

flume HTTPSource默认的是utf-8的编码,flume服务用在linux机器上都是没问题的,但当把flume服务部署在windows机器上的时候,会出现乱码问题。从源码检查乱码出现在那里: 1.在刚接收到请求的时候,打印requestBody里的内容是正常的,数据正常。 2.数据存到event里之后,打印event里的内容,出现乱码。 源码里有个JSONHandler的类处理...

wen‘s blog 1223

Flume 小记(一) 入门、小结、注意事项

一. 入门:安装、部署、及简单案例   Flume 的安装,介绍,特性,核心概念等在这就不再赘述,请参考 http://www.aboutyun.com/thread-8917-1-1.html ,作者的介绍和案例都比较详细 二. HttpSource 使用小结   这次主要拿 Flume 的HttpSource 做案例,用到了 File Roll Sink , HDFS Sin

苍穆的博客 942

flume http source示例讲解

一、介绍 flume自带的Http Source可以通过Http Post接收事件。 场景:对于有些应用程序环境,它可能不能部署Flume SDK及其依赖项,或客户端代码倾向于通过HTTP而不是Flume的PRC发送数据的情况,此时HTTP SOURCE可以用来将数据接收到Flume中。 从客户端的角度看,HTTP SOURCE表现的像web服务器一样能接收flume...

weixin_30239339的博客 313

flume源码分析-source

flume的source用于收集日志,父类为AbstractSource,下图中的其他类都继承于AbstractSource     AvroSource    lifecycleAware 会调用start方法启动avroSource。avroSource主要启动了一个NettyServer用于接收数据,然后交由avroSource处理。 @Override public...

fannk的博客 614

Flume入门、小结、注意事项

一. 入门:安装、部署、及简单案例   Flume 的安装,介绍,特性,核心概念等在这就不再赘述,请参考 http://www.aboutyun.com/thread-8917-1-1.html ,作者的介绍和案例都比较详细 二. HttpSource 使用小结   这次主要拿 Flume 的HttpSource 做案例,用到了 File Roll Sink , HDFS Sin

语不惊人死不休 813
上一篇: Hive分桶使用
下一篇: Avro使用详解
SW_LCC
博客等级 码龄11年 4粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值