복붙노트

[HADOOP] Flume 설정을 테스트하기 위해 HTTP 소스를 설정하는 방법은 무엇입니까?

HADOOP

Flume 설정을 테스트하기 위해 HTTP 소스를 설정하는 방법은 무엇입니까?

나는 Flume과 Hadoop의 초보자입니다. 우리는 다른 서버의 모든 로그를 HDFS에 저장할 수있는 BI 모듈을 개발 중입니다.

이것을 위해 저는 Flume을 사용하고 있습니다. 방금 시작 했어. 노드를 성공적으로 만들었지 만 이제는 HTTP 소스와 싱크를 설정하여 HTTP를 통해 로컬 파일에 들어오는 요청을 작성합니다.

어떤 제안?

미리 감사드립니다 /

해결법

  1. ==============================

    1.바라기를 이것은 당신이 시작하는 것을 돕는다. 내 컴퓨터에서이 문제를 테스트하는 데 몇 가지 문제가 있으며 지금 당장은 문제를 완전히 해결할 시간이 없지만 그 문제는 ...

    바라기를 이것은 당신이 시작하는 것을 돕는다. 내 컴퓨터에서이 문제를 테스트하는 데 몇 가지 문제가 있으며 지금 당장은 문제를 완전히 해결할 시간이 없지만 그 문제는 ...

    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 User Guide를 확인하십시오. 자, 이제까지는 에이전트가 시작되어 나를 위해 잘 실행됩니다 ....

    여기 내가 시험 할 시간이 없다. 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 : 포트를 보냅니다. 나를위한 문제는 내가 오류가 발생합니다 :

    WARN http.HTTPSource: Received bad request from client. org.apache.flume.source.http.HTTPBadRequestException: Request has invalid JSON Syntax.
    

    내 Flume 클라이언트에서 잘못된 JSON? 그래서 뭔가 잘못 전달되고 있습니다. Flume 소스가 데이터를 수신하고 있음을 보여 주지만 오류가 나타나고 있다는 사실. 당신이 가지고있는 것은 무엇이든 그것은 유효한 형식으로되어있는 한 게시해야합니다.

  2. ==============================

    2.질문이 말한 방식에서 원하는 것을 정확히 말하기는 다소 어렵지만, HTTP POST 요청을 사용하여 Flume에 JSON을 보내고 Flume이 JSON 이벤트를 HDFS로 덤프하려고한다는 가정하에 작동하고 있습니다 (Not 로컬 파일 시스템). 그것이 당신이하고 싶은 일이라면, 이것은 당신이해야 할 일입니다.

    질문이 말한 방식에서 원하는 것을 정확히 말하기는 다소 어렵지만, HTTP POST 요청을 사용하여 Flume에 JSON을 보내고 Flume이 JSON 이벤트를 HDFS로 덤프하려고한다는 가정하에 작동하고 있습니다 (Not 로컬 파일 시스템). 그것이 당신이하고 싶은 일이라면, 이것은 당신이해야 할 일입니다.

  3. ==============================

    3.이 시도 :

    이 시도 :

    curl -X POST -H 'Content-Type : application / json; charset = UTF-8 '-d'[{ "username": "xrqwrqwryzas", "password": "12124sfsfsfas123"}] 'http://yourdomain.com:81/

  4. from https://stackoverflow.com/questions/18657548/how-to-setup-a-http-source-for-testing-flume-setup by cc-by-sa and MIT license