2009-08-02 4 views
11

MapReduce 접근법을 사용하여 HTTP를 통해 액세스되는 연속적인 데이터 스트림을 분석하고 싶습니다. 따라서 Apache Hadoop을 살펴 보았습니다. 안타깝게도 Hadoop은 새로운 데이터를 도착한 소비자에게 전달할 수있는 것보다 고정 된 크기의 입력 파일을 사용하여 작업을 시작하려고합니다. 이게 사실인가요? 아니면 제가 빠진 것이 있습니까? 열린 소켓에서 데이터를 읽는 다른 MapReduce 도구가 있습니까? 여기서는 확장 성이 문제이므로 MapReducer에서 지저분한 병렬 처리 작업을 처리하도록하는 것이 좋습니다.스트리밍 데이터 및 Hadoop? (Hadoop Streaming이 아님)

Cascading으로 놀았으며 HTTP를 통해 액세스하는 정적 파일에서 작업을 실행할 수 있었지만 실제로이 문제는 해결되지 않았습니다. 컬을 중간 단계로 사용하여 Hadoop 파일 시스템의 어딘가에서 데이터를 덤프하고 새 작업을 시작할 때마다 새로운 작업을 시작하는 워치 독을 작성할 수 있습니다.하지만 이는 더러운 해킹입니다. 이것을하기위한 좀 더 우아한 방법이 있어야합니다. 어떤 아이디어?

답변

10

당신이 설명하는 해킹은 일을하는 표준 방법입니다. 하둡은 근본적으로 일괄 처리 시스템입니다 (한 가지만, 데이터가 끝나지 않으면 Reducers를 시작할 수 없습니다. 그들은지도 단계가 끝난 후 시작해야합니다).

로그를 회전합니다. 회전 시키면 HDFS로 덤프됩니다. 워치 독 프로세스 (ZooKeeper를 사용하여 조정 된 분산 된 프로세스 일 수도 있음)가 덤프 지점을 모니터링하고 새로운 처리 작업을 시작하십시오. 작업이 오버 헤드를 보장 할만큼 충분히 큰 입력에서 실행되는지 확인해야합니다.

Hbase는 연속적인 삽입 스트림을 허용하므로 사용자에게 흥미로운 하프 생태계의 BigTable 클론입니다. 그러나 배치 모드에서 분석 쿼리를 실행해야합니다.

2

저는 Esper CEP (http://esper.codehaus.org/)를 살펴보아야한다고 생각합니다.

+0

저는이 분야에 익숙하지 않지만, 처음에는 ActiveInsight (CPAL 라이센스 - 속성이 필요함)도 좋아했습니다. –

0

사용 사례는 Hadoop을 사용하여 웹 크롤러를 작성하는 것과 유사하게 들립니다. HTTP를 통해 원격 페이지를 가져 오기 위해 열린 소켓에서 데이터 스트림이 천천히 되돌아옵니다.

그렇다면 Why fetching web pages doesn't map well to map-reduce을 참조하십시오. 그리고 Bixo에서 FetcherBuffer 클래스를 확인해보십시오.이 클래스는이 유형의 문제를 해결하기 위해 감속기 (Cascading을 통해)에 스레드 접근 방식을 구현합니다.

6

http://s4.io/입니다. 스트리밍 데이터를 처리하기 위해 만들어졌습니다.

업데이트

새로운 제품이 증가하고있다 : Storm - 분산 및 내결함성 실시간 계산 : 스트림 처리, 연속 계산, 분산 된 RPC 등

+1

이것이 S4의 올바른 URL이라고 생각합니다. http://incubator.apache.org/s4/ – Bklyn

1

트위터의 Storm 당신이 시도해 볼 수있는 것입니다!

0

스트림 마이닝에서 사용하기위한 Hadoop의 주요 문제점은 첫째로 디스크 인 HFDS를 사용하고 디스크 작업이 대기 시간을 가져 와서 스트림에 데이터가 누락된다는 사실입니다. 둘째, 파이프 라인이 병렬이 아니기 때문입니다. Map-reduce는 일반적으로 스트림 데이터의 경우와 같이 인스턴스가 아닌 데이터의 일괄 처리에 대해 작동합니다.

최근에 HDFS를 무시하고 객체 데이터베이스에서 메모리 내 계산을 수행하여 첫 번째 문제를 해결 한 M3에 대한 기사를 읽었습니다. 두 번째 문제는 더 이상 일괄 적으로 수행되지 않는 증분 학습자를 사용하고 있습니다. 가치가 그것을 밖으로 검사 할 가치가있다 M3 : Stream Processing on Main-Memory MapReduce. 이 M3의 소스 코드 나 API를 어디에서 발견 할 수 없었습니다. 누군가가 링크를 공유하고 싶다면 여기를 클릭하십시오. 그러나 그것은 충분하지 않습니다, Hadoop Online

그러나, Apache Storm 문제의 핵심 솔루션입니다 :

또한, 하둡 온라인은 M3가하는 것과 같은 문제를 해결하기 위해 시도한다 다른 프로토 타입입니다. map-reduce 권리를 필요로하는 일부 사용자는 SAMOA 라이브러리가 필요합니다. 실제로는 mahout이 부족한 온라인 학습을위한 훌륭한 알고리즘을 가지고 있습니다.

1

여기에는 여러 옵션이 있습니다. 해결책으로 Kafka와 Storm + (Hadoop 또는 NoSql)의 조합을 제안합니다. 우리는 이미 오픈 소스 도구를 사용하여 빅 데이터 플랫폼을 구축했으며 매우 잘 작동합니다.

0

여러 성숙 스트림 처리 프레임 워크 및 제품을 시중에서 구할 수 있습니다. 오픈 소스 프레임 워크는 예를 들어. Apache Storm 또는 Apache Spark (둘 다 Hadoop에서 실행 가능) IBM InfoSphere Streams 또는 TIBCO StreamBase와 같은 제품을 사용할 수도 있습니다.

스트림 처리 및이 모든 프레임 워크와 제품에 대해 자세히 설명하는 InfoQ 기사 (Real Time Stream Processing/Streaming Analytics in Combination with Hadoop)를 살펴보십시오. 이 기사에서는 Hadoop을 보완하는 방법에 대해서도 설명합니다.

그런데 Oracle이나 TIBCO와 같은 많은 소프트웨어 공급 업체는 일괄 처리 대신 실시간으로 처리해야하는 것처럼이 스트림 처리/스트리밍 분석 방식을 "큰 데이터"대신 "빠른 데이터"라고합니다.

+0

좀 더 많은 정보를 추가하기 만하면됩니다. 제품] [1]. 요약하면 ** 이러한 도구를 사용하여 동작 중에 데이터를 처리 할 수 ​​있습니다 **. 그럼에도 불구하고 어딘가에 보관할 수 있습니다. 따라서 이러한 프레임 워크와 제품을 Apache Hadoop과 결합 할 수도 있습니다 (저장소 용 또는 Hadoop에서 프레임 워크 중 하나를 실행하여 처리하기 위해). 슬라이드에서도이 점에 대해 자세히 설명합니다. [1] : http://www.kai-waehner.de/blog/2015/10/25/comparison-of-stream-processing-frameworks-and-products/ –

0

Apache Spark Streaming을 사용해보십시오. 그것은 당신의 목적을 위해 잘 작동해야합니다.