일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- しまじろう
- 토익
- 스테이크
- paypay
- fish
- 시마지로
- 영단어
- 점심
- 코라쿠엔
- 일본
- one tab buy
- 돼지갈비
- Sekai Entertainment
- TOY
- 신쥬쿠
- 원탭바이
- 칸칸
- 돈까스
- 사이타마
- 리눅스
- 여름
- 전철
- 米沢、팽이
- Shimajirou
- youtuber
- 라면
- 자동차
- 시스템관리
- 명령어
- 동경 모터쇼
- Today
- Total
IT Japan
Flume, Fluentd의 Name node HA 지원 본문
로그 수집 제품의 대상이 Hadoop HDFS의 경우 최근 HA 구성하는 케이스도 많을 것이다. 클라이언트 측에서 보면 Name node가 하나 인 경우에 특히 막히는 것도 아니지만, HA되면 "어 여기 어떻게하는 거지"라고되기도하기 때문에 Flume / Fluentd에서 각각의 설정 예를 적는다.
Flume
HDFS에 전송은 기본적으로 사용할 수있다. sink 유형을 hdfs한다. 이하, sink 정의의 예만을 기재. namenode-cluser-name은 HDFS의 논리 클러스터 이름을 지정한다.
agent.sinks.h1.channel = c1 agent.sinks.h1.type = hdfs agent.sinks.h1.path = hdfs://namenode-cluser-name/path/to/sink-dir agent.sinks.h1.hdfs.fileType = DataStream # sink先でのファイル形式指定。デフォルトはSequenceFile。 agent.sinks.h1.hdfs.filePrefix = AppData # sink先ファイルのプレフィックス。指定がないと"Flume"になる。 agent.sinks.h1.hdfs.batchSize = 1000 |
Flume의 경우 Append (추 기형)이 아니므로 지정된 디렉토리에 미세한 파일이 많이 생성된다. 디렉토리 경로를 동적으로 날짜 / 시간 등의 단위로 할 수도있을 것 같지만, 자세한 것은 잊어 .... 이 경우라고 파일 이름은 AppData [UNIX timestamp]가된다. Name node 자원 관리 비용 및 I / O 부하를 생각하면 당연히 효율이 나쁘기 때문에, 그것은 Flume의 불리. HDFS find 정기적으로 청소하거나 병합하거나, 그 근처의 구현이 필요하다.
그리고, namenode-cluser-name 클러스터를 짜고있는 호스트 정보는 어떻게 인식 되는가하면, core-site.xml, hdfs-site.xml을 불러 들이면 해결하는 것. 구체적으로는 / etc / flume-ng / conf이 두 파일을 배치한다. 이 근처는 과연 Hadoop 제품군이므로 친 화성이 높다. 반대로 말하면, Hadoop 클러스터에서이 두 가지 설정에 변경이 발생하면 Flume Aggregator 노드 측도 변경 적용되므로주의 (영향이없는 부분도 공통으로 유지해 두는 것이 뭐 근육에 있을 것이다 때문).
Fluentd
그런 Fluentd는 어떻게 될까.
webhdfs 용 플러그인을 설치 한 후, td-agent.conf을 다음과 같이 설정합니다.
<match appdata.**> type webhdfs namenode namenode1:50070 standby_namenode namenode2:50070 path /path/to/appdata.%Y%m%d_%H.log flush_interval 10s </match> |
역시 과연 논리적 클러스터 이름은 인식 할 수 없으므로 호스트 이름을 나누어 설명하게 될 것이다군요. 대상 파일은 Fluentd의 경우 기본적으로 Append된다. 세세한 파일로 나누어하려면 어딘가에 방식이 써 있었다 생각이 들지만, 그것도 자세한 것은 잊어 .... 아무튼, 특정 경우를 제외하고 일부러 그렇게 할 필요는 없을 것이다.