문제

한동안 MapReduce를 살펴봤는데 내결함성 분산 컴퓨팅을 구현하는 데 아주 좋은 방법인 것 같습니다.저는 해당 주제에 관한 많은 논문과 기사를 읽었고, 여러 가상 머신에 Hadoop을 설치했으며, 몇 가지 매우 흥미로운 테스트를 수행했습니다.나는 Map 및 Reduce 단계를 정말로 이해하고 있다고 생각합니다.

하지만 내 문제는 다음과 같습니다. http 서버 로그 분석에 어떻게 도움이 될 수 있는지 알 수 없습니다.

내가 이해하는 바는 대기업(예: Facebook)이 http 로그를 계산할 목적으로 MapReduce를 사용하여 여기에서 청중 통계를 추출하는 프로세스의 속도를 높이는 것입니다.제가 일하는 회사는 Facebook보다 작지만 매일 계산해야 할 웹 로그의 양이 많습니다(100Go는 매달 5~10%씩 성장합니다).현재 우리는 단일 서버에서 이러한 로그를 처리하고 있으며 잘 작동합니다.그러나 컴퓨팅 작업 분산은 곧 유용한 최적화로 즉시 떠오릅니다.

다음은 제가 지금 답변할 수 없는 질문입니다. 어떤 도움이라도 주시면 감사하겠습니다.

  • MapReduce 개념이 실제로 웹로그 분석에 적용될 수 있습니까?
  • MapReduce가 이를 수행하는 가장 영리한 방법입니까?
  • 다양한 컴퓨팅 인스턴스 간에 웹 로그 파일을 어떻게 분할하시겠습니까?

감사합니다.
니콜라스

도움이 되었습니까?

해결책

MapReduce 개념이 실제로 웹 로그 분석에 적용될 수 있습니까?

예.

헤지 로그 파일을 10,000 또는 1,000,000 줄의 덩어리로 나눌 수 있습니다 (로그 파일 유형에 적합한 덩어리가 무엇이든 - 더 많은 숫자로 갈 Apache 로그 파일의 경우) 특정 것을 추출하는 맵퍼에게 공급할 수 있습니다. 브라우저, IP 주소, ..., Username, ...)와 마찬가지로 각 로그 라인에서 각각이 나타난 횟수를 계산하여 (단순화) :

  192.168.1.1,FireFox x.x,username1
  192.168.1.1,FireFox x.x,username1
  192.168.1.2,FireFox y.y,username1
  192.168.1.7,IE 7.0,username1

맵 조작을 사용하여 버전을 무시하고 브라우저를 추출 하여이 목록을 얻을 수 있습니다.

FireFox
FireFox
FireFox
IE

그런 다음 이것을 얻기 위해 줄입니다 : Firefox, 3, 즉 1

MapReduce가 가장 영리한 방법입니까?

그것은 영리하지만, 어떤 혜택을 얻으려면 ... 로그의 페타 바이트를 나누기 위해서는 매우 커야합니다.

이런 종류의 작업을 수행하려면 메시지 대기열과 일관된 스토리지 엔진 (데이터베이스와 같은)을 사용하는 것이 선호하며, 큐에서 작업을 당기고 작업을 수행하며 결과를 다른 큐로 푸시하는 클라이언트를 처리합니다. 다른 시간대에 실행되면 다른 기간이 처리 될 수 있습니다. 이 고객은 특정한 일을하는 작은 프로그램이 될 것입니다.

클라이언트 1 명으로 시작하여 1000으로 확장 할 수 있습니다 ... LAN의 모든 PC에서 스크린 세이버로 실행되는 클라이언트가있을 수도 있고 8 코어 서버에서 8 개의 클라이언트를 실행할 수도 있습니다. ...

풀 : 100 개 또는 10 개의 클라이언트가 작동 할 수 있으며, 멀티 코어 머신은 여러 클라이언트를 실행할 수 있으며 다음 단계에서 클라이언트 마감을 사용할 수 있습니다. 작업을 수행하기 위해 해싱이나 과제를 수행 할 필요가 없습니다. 100% 역학입니다.

http://img355.imageshack.us/img355/7355/mqlogs.png

다양한 컴퓨팅 인스턴스간에 웹 로그 파일을 어떻게 분할 하시겠습니까?

텍스트 기반 로그 파일 인 경우 요소 또는 줄의 수에 따라

MapReduce를 테스트하기 위해 Hadoop과 함께 연주 할 것을 제안하고 싶습니다.

다른 팁

  • MapReduce 개념이 실제로 웹로그 분석에 적용될 수 있습니까?

확신하는.어떤 종류의 데이터를 저장하고 있나요?

  • MapReduce가 이를 수행하는 가장 영리한 방법입니까?

이를 통해 한 번에 여러 상용 시스템에 걸쳐 쿼리할 수 있으므로 유용할 수 있습니다.또는 시도해 볼 수도 있습니다. 샤딩.

  • 다양한 컴퓨팅 인스턴스 간에 웹 로그 파일을 어떻게 분할하시겠습니까?

일반적으로 다음을 사용하여 데이터를 배포합니다. 일관된 해싱 알고리즘, 나중에 쉽게 인스턴스를 추가할 수 있습니다.일반 데이터베이스의 기본 키가 무엇이든 해시해야 합니다.사용자 ID, IP 주소, 리퍼러, 페이지, 광고가 될 수 있습니다.로깅 주제가 무엇이든 간에요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top