HDFS 의 여러 파일 을 병행 하여 grep 작업 을 수행 합 니 다.

1569 단어 Shell
HDFS 에는 압축 된 로그 파일 이 대량으로 저장 되 어 있 으 며, 가끔 위 에 가서 정 보 를 조회 해 야 한다.
hadop fs 는 ls, cat 등 을 실행 할 수 있 지만 grep 작업 을 직접 수행 할 수 없습니다.map reduce 프로그램 을 써 서 실행 합 니 다. 가능 하지만 좀 번 거 로 워 서 셸 명령 을 직접 사용 하지 않 았 습 니 다.조회 와 시 도 를 거 쳐 마침내 방법 을 찾 았 다.
예 를 들 어 10 개의 프로 세 스 를 사용 하여 2016 년 1 월 11 일 19 시 와 20 시 사이 에 abcdefg 를 포함 하 는 로그 기록 을 조회 합 니 다.
hadoop fs -ls /path-to-log-dir/ | \
grep '2016011119' | awk '{print $8}' | \
xargs -n 1 -I {} -P 10 bash -c "hadoop fs -cat {} | zgrep 'abcdefg'"

설명:
  • hadop fs ls: 디 렉 터 리 에 있 는 모든 파일 목록 을 보 여 줍 니 다.
  • grep: 파일 이름 의 시간 에 따라 시간 에 맞 는 파일 목록 을 걸 러 냅 니 다.
  • awk: 파일 목록 의 파일 이름 을 추출 하여 파일 이름 목록 을 얻 습 니 다.
  • xargs: 파일 이름 목록 의 모든 파일 이름 에 대해 다음 에 지정 한 구체 적 인 작업 을 수행 합 니 다.
  • bash - c: 구체 적 인 조작 내용 을 지정 합 니 다.
  • hadop fs cat: 출력 파일 내용;
  • zgrep: 압축 된 파일 내용 을 필터 합 니 다.
  • 좋은 웹페이지 즐겨찾기