2017-10-05 2 views
0

나는 작은 파일이 덩어리의 작은 숫자, 아마 한 구성되어 Google File Systems Paper작은 파일로 인해 Google 파일 시스템에서 핫 스폿이 생성되는 이유는 무엇입니까?

에서이 문제를 이해하지 않습니다. 이러한 청크를 저장하는 chunkserver는 많은 클라이언트 이 동일한 파일에 액세스하는 경우 핫 스폿이 될 수 있습니다.

작은 파일로는 어떤 차이가 있습니까? 많은 클라이언트가 액세스하는 대용량 파일이 문제를 일으킬 가능성이 있습니까?

나는/다음을 읽고 생각했습니다 : -

  • 나는 큰 파일의 덩어리가되어 부하를 분산 다른 chunkservers에 저장되어있는 것을 (내가 틀렸다면 정정 해줘) 가정합니다. 이러한 시나리오에서는 1000 개의 클라이언트가 각 chunkserver에서 파일의 1/100에 액세스한다고합니다. 따라서 각 chunkserver는 필연적으로 1000 개의 요청을 받게됩니다. (1000 개의 클라이언트가 하나의 작은 파일에 액세스하는 것과 같지 않습니다. 서버는 작은 파일에 대해 1000 개의 요청을 받거나 큰 파일의 일부에 대해 1000 개의 요청을받습니다.)
  • 나는 스파 스 파일에 대해 약간 읽었습니다. 종이에 따라 작은 파일은 청크 또는 여러 청크를 채 웁니다. 그래서 내 이해에 작은 파일을 재구성하지 않으며 따라서 나는 핫스팟에 대한 가능한 원인으로 이것을 제거했습니다.
+1

"이러한 시나리오에서는 1000 개의 클라이언트가 각 chunkserver의 파일 중 1/100에 액세스하므로 각 chunkserver는 필연적으로 1000 개의 요청을 받게됩니다." 여기서 더 많은 생각을 펼칠 수 있습니까? 클라이언트가 파일의 1/100th에 액세스하는 경우 클라이언트 당 1/100th 청크 서버 만 연결됩니다. 종이가 얻고있는 아이디어는 대용량 파일의 경우 액세스 패턴이 사실상 모든 덩어리를 통해 무작위로 배포된다는 것입니다. – GManNickG

+0

@GManNickG 큰 파일은 100 개의 청크 서버에 저장됩니다. 1000 클라이언트가 특정 파일을 필요로합니다. 그들 모두는 결국 100 개의 chunkservers로부터의 데이터를 필요로 할 것입니다. 따라서 각 chunkserver는 항상 1,000 개의 클라이언트를 제공하게됩니다. 무작위로 배포 된 경우에도 작은 파일에서 생성 된로드와 동일한 요청을 각 파일에서 한 번씩하지 않습니까? 다른 chunkservers에 저장된 큰 파일의 일부가 더 중요합니까? –

+1

Gotcha. 시나리오에서 모든 chunkservers는 결국 1000 번 청크를 제공하지만 예기치 않은 부하가 적습니다. 한 번에 하나의 서버에 데이터를 요청하는 1000 개의 클라이언트가 핫 스폿이며, 100 개의 청크 서버보다 1000 개 많은 클라이언트가 클라이언트가 모든 청크 서버에 동시에 접속하는 것은 아니라고 가정 할 때 모든 서버의 순간 부하가 낮다는 것을 의미합니다. 그러나 실제로 필자가 의도 한 해석은 실용적인 애플리케이션에서는 모든 클라이언트가 파일 전체를 읽지 못하게되는 경우가 있는데,이 경우 청크 서버가 하나의 요청 만 처리한다는 것입니다. – GManNickG

답변

1

후속 텍스트의 일부는 도움이 될 수 있습니다 명확히 : GFS 먼저 일괄 큐 시스템에 의해 을 사용하는 경우

그러나, 핫스팟 개발했다 : 실행은 하나 같이 GFS 에 기록 된 -chunkfile을 실행하고 수백 대의 컴퓨터에서 동시에 시작합니다. 이 실행 파일을 저장하는 몇 개의 chunkservers는 수백 개의 동시 요청으로 인해 과부하가 걸렸습니다. 이 문제는 더 높은 복제 계수를 가진 과 같은 실행 파일을 저장하고 batchqueue를 시스템 스 태거 애플리케이션 시작 시간으로 설정함으로써 해결되었습니다. 잠재적 인 장기 해결책은 클라이언트가 다른 상황에서 다른 클라이언트로부터 데이터를 읽을 수 있도록하는 것입니다.

1000 명의 클라이언트가 동시에 작은 파일을 읽으려는 경우, 유일한 청크를 보유한 N 개의 chunkservers는 1000/N 동시 요청을 수신합니다. 이 갑작스런로드는 핫스팟의 의미입니다.

대용량 파일은 지정된 클라이언트에서 한 번에 모두 읽히지 않습니다 (결국 크기가 큽니다). 대신 파일의 일부분을로드하고 작업하고 다음 부분으로 이동합니다.

sharding (MapReduce, Hadoop) 시나리오에서 작업자는 동일한 청크를 전혀 읽지 않을 수도 있습니다. N 중 하나의 클라이언트는 파일의 1/N 청크를 다른 클라이언트와 구별합니다.

실제로 비 샤딩 시나리오에서도 클라이언트는 완전히 동기화되지 않습니다. 모두가 전체 파일을 읽지 만 랜덤 액세스 패턴으로 인해 통계적으로 핫스팟이 없습니다. 또는 순차적으로 읽는다면 워크로드의 차이 때문에 동기화되지 않을 것입니다 (의도적으로 클라이언트를 동기화하지 않는 한 ....).

많은 클라이언트의 경우에도 대용량 파일이 수반하는 작업 특성으로 인해 대용량 파일의 핫 스포팅이 적습니다.으로 보장되지는 않습니다. 귀하의 질문에 귀하가 말하고있는 것이지만 실제로는 분산 된 클라이언트가 다중 청크 파일의 모든 청크에서 일하지 않습니다.

+0

많은 수의 클라이언트가 동일한 서버에서 다른 파일에 액세스한다고하면 핫 스폿이됩니까? (하드 디스크의 동일한 영역에 대한 액세스가 문제를 일으키는 지 아니면 부하가 증가했는지를 본질적으로 알고 싶습니다.) –

+0

정식으로 정의 된 적이 없지만 일반적으로 핫 스폿이라는 용어는 높은 하중. 그래서 "이 파일/덩어리/바나나/신발은 핫스팟입니다"라는 말은 "이 문제는 보통 부하보다 높습니다."를 의미합니다. 따라서 동일한 청크 서버에있는 청크가있는 여러 파일은 핫스팟으로 간주되지 않을뿐만 아니라 시스템에 대한 일반 부하 일뿐입니다. – GManNickG

+1

핫스팟 문제는 반드시 한 가지 일 필요는 없습니다. 기계의 네트워크 인터페이스에 과부하가 걸릴 수 있습니다. 컴퓨터의 대역폭이 요청 등을 따라 잡지 못하는 경우가 있습니다.이 청크 서버는 청크가 필요한 모든 클라이언트간에 공유되므로 핫 스폿 화는 단순히 "이 청크 일 수 있습니다 을 다른 청크 액세스에서 너무 많이 가져옵니다. " – GManNickG

관련 문제