2013-10-01 5 views
0

Flume-ng를 처음 사용했습니다. 텍스트 파일을 다른 프로그램 (에이전트)으로 전송할 수있는 프로그램을 작성해야합니다. 우리는 에이전트, 즉 호스트 -IP, 포트 번호 등을 알아야한다는 것을 알고 있습니다. 그런 다음 소스, 싱크 및 채널을 정의해야합니다. 난 그냥 로그 파일을 서버로 전송하고 싶다. 내 클라이언트 코드는 다음과 같습니다. 공용 클래스 MyRpcClientFacade {코드 위Flume : 서버로 데이터 전송

public class MyClient{ 

    private RpcClient client; 
    private String hostname; 
    private int port; 

    public void init(String hostname, int port) { 
     this.hostname = hostname; 
     this.port = port; 
     this.client = RpcClientFactory.getDefaultInstance(hostname, port); 

     } 

     public void sendDataToFlume(String data) { 
     Event event = EventBuilder.withBody(data, Charset.forName("UTF-8")); 
     try { 
      client.append(event); 
     } catch (EventDeliveryException e) { 
      client.close(); 
      client = null; 
      client = RpcClientFactory.getDefaultInstance(hostname, port); 
     } 
     } 

     public void cleanUp() { 
     client.close(); 
     } 
} 

는 지정된 프로세스 만 String 데이터를 보낼 수 있습니다. 하지만 파일을 보내야 해. 또한 Source,Channel and Sink이 서버에 기록되어야하는지 여부를 알려주십시오. 그렇다면이 세 가지를 구성하고 작성하는 방법. 도와주세요. Source,Sink And Channel

답변

0

실제로 각 노드에서 flume 클라이언트를 가져와야합니다. 그런 다음 자신의 행동에 대한 정보를 제공하는 설정 파일을 제공합니다. 예를 들어, 노드가 파일을 읽었을 때 (새로운 줄을 읽어서 채널로 이벤트로 보내면), 파일 내용을 RPC 소켓을 통해 보냅니다.

# sources/sinks/channels list 
    <Agent>.sources = <Name Source1> 
    <Agent>.sinks = <Name Sink1> 
    <Agent>.channels = <Name Channel1> 
    # Channel attribution to a source 
    <Agent>.sources.<Name Source1>.channels = <Name Channel1> 
    # Channel attribution to sink 
    <Agent>.sinks.<Name Sink1>.channels = <Name Channel1> 
    # Configuration (sources,channels and sinks) 
    # Source properties : <Name Source1> 
    <Agent>.sources.<Name Source1>.type = exec 
    <Agent>.sources.<Name Source1>.command = tail -F test 
    <Agent>.sources.<Name Source1>.channels = <Name Channel1> 
    # Channel properties : <Name Channel1> 
    <Agent>.channels.<Name Channel1>.type = memory 
    <Agent>.channels.<Name Channel1>.capacity = 1000 
    <Agent>.channels.<Name Channel1>.transactionCapacity = 1000 
    # Sink properties : <Name Sink1> 
    <Agent>.sinks.<Nom Sink1>.type = avro 
    <Agent>.sinks.<Nom Sink1>.channel = <Nom Channel1> 
    <Agent>.sinks.<Nom Sink1>.hostname = <HOST NAME or IP> 
    <Agent>.sinks.<Nom Sink1>.port = <PORT NUMBER> 

이 그럼 당신은 같은 포트에 브로 소스에서 읽을 이벤트를 당신이 그들을 저장하기 원하는 방식으로 처리 할 에이전트를 설정해야합니다 : 같은 구성은 볼 것이다. 도움이되기를 바랍니다.)

관련 문제