2010-12-15 4 views
2

많은 양의 파일 (파일 당 평균 2MB 크기의 수천 개의 다른 파일)을 동시에 처리해야합니다.많은 파일을 동시에 처리 - NFS를 통해 파일을 복사하거나 NFS를 통해 읽습니다.

모든 정보는 하나의 (1.5TB) 네트워크 하드 드라이브에 저장되며 약 30 대의 다른 컴퓨터에서 처리됩니다. 효율성을 위해 각 시스템은 서로 다른 파일을 읽고 (처리하는) 수천 개의 파일이 처리됩니다.

1.5TB 하드 드라이브의 '들어오는'폴더에서 파일을 읽은 모든 컴퓨터는 정보를 처리하고 처리 된 정보를 '처리 된'폴더로 다시 출력 할 준비가됩니다. 1.5TB 드라이브. 모든 파일에 대해 처리 된 정보는 입력 파일과 대략 동일한 평균 크기입니다 (파일 당 약 2MB).

(1) 모든 가공 기계 M, 다음의 로컬 하드 드라이브에 M에 의해 처리 될 모든 파일을 복사를 들어 읽기 & 프로세스 :

이 할 수있는 더 좋은 것은 무엇입니까 컴퓨터에 로컬로 파일을 M.

(2) 모든 컴퓨터에 파일을 복사하는 대신 모든 컴퓨터는 NFS를 사용하여 직접 '들어오는'폴더에 액세스하고 거기에서 파일을 읽고 로컬로 처리합니다.

어떤 아이디어가 더 좋습니까? 그런 일을 할 때 어떤 'do'와 'donts'가 있습니까?

30 대의 컴퓨터를 가지고 있거나 동시에 동일한 네트워크 드라이브에 정보를 읽거나 쓰는 것이 문제라면 대부분 궁금합니다.

(참고 : 기존 파일은 추가/기록되지 않으며 새 파일은 처음부터 만들어 지므로 같은 파일에 여러 번 액세스 할 수있는 문제는 없습니다 ...). 기대해야 할 병목 현상이 있습니까?

(I는 10.04 LTS 모든 시스템이 경우 모든 문제에 리눅스, 우분투를 사용 오전)

답변

2

나는 확실히 # 2를 할 것 - 다음과 같이 내가 할 것 :

실행 아파치를 메인 서버에 모든 파일들. (또는 정말로 원하는 경우 다른 HTTP 서버). 몇 가지 이유가 있습니다.이 방법은 다음과 같습니다.

  1. HTTP는 기본적으로 순수한 TCP입니다 (헤더가 일부 있음). 요청이 보내지면 매우 "일방적 인"프로토콜입니다. 낮은 오버 헤드, 수줍음없는. 높은 성능과 효율성 - 낮은 오버 헤드.

  2. 사용자가 (어떤 이유로 든) 이동하거나 확장해야한다고 결정한 경우 (예 : 서비스를 사용하여) HTTP는 NFS보다 열린 인터넷에서 데이터를 이동하는 훨씬 더 좋은 방법입니다. 필요한 경우 SSL을 사용할 수 있습니다. 방화벽을 통과 할 수 있습니다 (필요한 경우). 쉽게/빠른 단지 할 수있는 하나의 네트워크 작업입니다 - - etc..etc..etc ...

  3. 이 파일의 액세스 패턴에 따라, 그리고 전체 파일을 가정을 읽을 수 필요합니다 및 당겨 더 작은 파일을 읽을 때마다 네트워크를 통해 지속적으로 I/O를 요청하는 것이 아니라 전체 파일을 한 번에 처리 할 수 ​​있습니다.

  4. 이 모든 것을 수행하는 응용 프로그램을 배포하고 실행할 수 있으며 네트워크 마운트의 존재 여부에 의존하지 않는 특정 파일 경로 등이 있습니다. 파일에 대한 URL이 있으면 클라이언트는 다음을 수행 할 수 있습니다. 그 일을해라. 마운트, 하드 디렉토리를 구축 할 필요가 없으며 그러한 마운트를 설정하기 위해 루트가 될 필요는 없습니다.

  5. NFS 연결 문제가있는 경우 - 마운트에 액세스하려고 시도 할 때 전체 시스템이 괴롭 히거나 중단 될 수 있습니다. 사용자 공간 컨텍스트에서 HTTP를 실행하면 시간 초과 오류가 발생하고 응용 프로그램은 사용자가 선택한 작업 (예 : 사용자 오류 등)을 취할 수 있습니다.

+0

Brad. – user3262424

관련 문제