복붙노트

[HADOOP] 수로 : 데이터가 서버로 전송

HADOOP

수로 : 데이터가 서버로 전송

나는 수로-ng에 새로운 오전. 나는 다른 프로그램 (에이전트)에 텍스트 파일을 전송할 수있는 프로그램을 작성해야합니다. 나는 우리가 에이전트 즉, 호스트 IP, 포트 번호 등 그런 다음 소스에 대해 알고 있어야합니다 알고 싱크 및 채널이 정의되어야한다. 난 그냥 서버에 로그 파일을 전송합니다. 다음과 같이 내 클라이언트 코드입니다. 공용 클래스 MyRpcClientFacade {

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();
      }
}

위의 코드 지정된 프로세스 만 문자열 데이터를 보낼 수 있습니다. 하지만 난 파일을 보낼 수 있습니다. 또한 나 소스, 채널 및 싱크가 서버에 기록되는 여부 것을 기쁘게 말해? 그리고 만약 그렇다면, 어떻게 구성하고이 세 가지를 작성합니다. 제발 도와주세요. 소스, 싱크 및 채널의 작은 샘플을 제공

해결법

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

    1.사실 당신은 각 노드에 수로 클라이언트를 얻을 수 있습니다. 그럼 당신은 자신의 행동에 대한 정보를 제공하는 설정 파일을 제공합니다. 예를 들어 노드가 파일을 읽을 경우, (각각의 새로운 라인을 읽고 이벤트 채널로서 보내), 파일 내용은 RPC 소켓 물마루 보냅니다. 귀하의 구성은 같은 모양 :

    사실 당신은 각 노드에 수로 클라이언트를 얻을 수 있습니다. 그럼 당신은 자신의 행동에 대한 정보를 제공하는 설정 파일을 제공합니다. 예를 들어 노드가 파일을 읽을 경우, (각각의 새로운 라인을 읽고 이벤트 채널로서 보내), 파일 내용은 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>
    

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

  2. from https://stackoverflow.com/questions/19112465/flume-data-transferring-to-server by cc-by-sa and MIT license