현재 회사에서는 각 노드 서버에서 업로드한 로그를 저장하기 위해 HDFS를 사용하고 있습니다. 역사적 문제로 인해 로그가 상당히 혼합되어 있습니다. 즉, 모든 종류의 데이터가 로그에 저장됩니다. 로그 파일은 약 200MB입니다. 때로는 일부 콘텐츠를 필터링하려면 타임스탬프를 기반으로 HDFS의 cat 명령을 사용한 다음 키워드를 grep해야 합니다. 그런 다음 stdin을 통해 Python 스크립트에 입력하여 관련 데이터에 대한 일부 처리를 수행합니다.
이제 쿼리할 시간, 노드, 키워드, 매칭 모델을 입력하고 한 단계로 작업을 완료할 수 있도록 만들고 싶습니다. 이런 방식으로 이 가젯은 매번 쿼리하기 위해 운영 및 유지 관리를 요청하는 대신 데이터가 필요한 모든 사람에게 푸시될 수 있습니다.
그래서 저는 Python 관련 모듈을 공부하기 시작했습니다. 이 hdfs는 업로드 및 다운로드가 가능하고, 디렉토리 파일의 내용을 쿼리할 수 있습니다. 그런데 이 부분을 읽어보면 더 난감해진다.
client.read(hdfs_path=....., 기타 매개변수)를 리더로 사용:
이 방법은 한 번에 일치시킬 수 있는 콘텐츠가 너무 많아서(아마도 수 기가바이트의 데이터일 수 있으며) 모두 읽고 처리하는 것이 단순히 불가능하기 때문에 실현 가능하지 않습니다. 읽는 과정에서 필터링하고 처리해야 합니다
내용을 줄로 입력해 보았지만 내용이 일치하지 않았습니다.
이 문제를 해결하는 방법은 무엇입니까? Python을 사용하여 조건에 맞는 파일 경로를 기록한 다음 HDFS 명령을 실행하고 일치하는 데이터를 Python으로 전송할 수 있습니까? 너무 귀찮은 것 같고, 안정성도 확실히 좋지 않네요
나중에 살펴보니 hdfs 모듈은 클라이언트 생성 시 hadoop 50070의 웹 관리 페이지와 연결되어 있었습니다. 곰곰히 생각해 보니 이 모듈 자체가 데이터 분석에 사용되는 것은 아닌가? 나에게 도움을 줄 수 있기를 바랍니다
멀티스레딩과 병렬 컴퓨팅은 어떻습니까? 한 번에 여러 Gb를 읽는 것은 당연히 느립니다. hadoop 프레임워크이므로 mapreduce를 잘 활용하면 충분할 것입니다. 이것은 아마도 속도를 위해 설계되지 않았을 것입니다.