2017-12-15 2 views
1

그래서 hdfs의/var/log/...에있는 로그 파일은 압축되지 않았거나 압축되어있을 수 있습니다.Hadoop HDFS compress place in

만약 그들이 .snappy으로 끝나지 않는다면 나는 그것을 압축하고 끝으로 이름을 짓고 싶습니다. 그러나 나는 이것을 데이터 - 지역성으로하고 싶다.

나는 하프 스트리밍 방식을 시도했다.

HAD=/usr/lib/hadoop 
$HAD/bin/hadoop jar $HAD/hadoop-streaming.jar \ 
-D mapred.output.compress=true \ 
-D madred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec \ 
-D mapred.reduce.tasks=0 \ 
-input /var/log/… -output /user/hadoop/working \ 
-mapper org.apache.hadoop.mapred.lib.IdentityMapper 

하지만 그건 일부 파일의 무리를주는 것 것

은 선으로 가지 라인을 수행합니다. 그것은 또한 어떤 이유로 수축을 선택합니다. 그래서 나는 part-00000.deflate 등과 같은 파일을 얻습니다. 입력은 app_123456789_0123_1과 같습니다. 나는 app_123456789_0123_1.snappy을 좋아했을 것이다.하지만이 부분은 심지어 전체 파일에 맵핑되지도 않았고 멋진 코덱도 아니었다.

FAQ says 파일 이름의 입력 파일을 생성 한 다음 각 이름에 대해 작업을 수행 할 수 있습니다. 하지만 단순한 압축기 도구는 없습니다. 다른 옵션은 더 좋을 것 같습니다 (비록 내가 항아리를 만들 필요가 없다고 생각하지만, 나는 할 수 있다고 생각합니다). 그러나 이름이 보존되지 않을 것이라고 말합니다. 나는 그것이 나에게 도움이되지 않을 것이라고 생각한다.

HDFS에서 파일을 가져 와서 로컬에서 작업하고 다시 가져 오는 작업과 관련이없는 방법이 있습니까? 그리고 어떤 파일 이름을 처리합니까?

답변

1

로그 파일이 계속 생성되므로 Hadoop 스트리밍을 사용하여 읽는 것이 바람직하지 않은 이유는 이것이 한 번 동작이므로 다시 실행하면 읽은 파일을 보존하지 않기 때문입니다.

또한 원하는 파일이 application_1234 인 경우 Hadoop 구성에서 YARN 로그 압축을 사용하면 YARN 로그 만 HDFS로 업로드 할 수 있습니다.

로그를 지속적으로 압축하여 HDFS에 업로드하려면, 주요 Hadoop 배포에 포함 된 Flume을 사용하는 것이 좋습니다.

다른 소프트웨어를 설치하는 것이 쉬운 경우 로그 수집을 위해 Fluentd 또는 Filebeat를보고 적절한 압축 형식으로 적절한 파일 크기로 HDFS로 전송하는 NiFi를 선택하십시오. 카프카는 로그 수집기와 NiFi간에 사용될 수도 있습니다. 이러한 옵션을 사용하면 파일 이름을 잘 제어 할 수 있으며 Solr 또는 Elasticsearch와 같은 적절한 검색 플랫폼에 로그를 전달할 수 있습니다.

+0

이들은 스파크 로그이며 Spark 앱은 로그 파일의 이름을'.inprogress'로 지정합니다 작성한 다음 완료되면 최종 이름으로 바꿉니다. 압축되지 않은 완료된 응용 프로그램 만 압축하는 것을보고있었습니다. 우리는 여기에 여러 사용자가 있고 일부는 개발 중에 로그를 읽기가 더 어렵 기 때문에 압축하지 않는 곳에 자신의 spark config을 사용합니다. 그런 다음 그들은 그것을 그렇게 설정합니다. Flume을 살펴 봅시다. – dlamblin