2017-04-27 5 views
2

나는 Apache Crunch documentation을 읽고 있던 나는 다음과 같은 문장을 발견"스트리밍 방식"으로 읽은 데이터의 의미는 무엇입니까?

데이터 스트리밍 방식으로 파일 시스템에서 읽어을, 그래서 는 메모리 에 맞게 PCollection의 내용에 대한 요구 사항은 없다 그것은 materialization을 사용하여 클라이언트로 읽어들입니다.

나는 어떤 의미인지 알고 싶습니다. 누군가가 데이터를 읽는 다른 종류의 방법과 다른 점이 무엇인지 말해 줄 수 있다면 정말 고맙겠습니다.

이 개념은 Spark와 같은 다른 도구에도 적용됩니다.

답변

2

파일 시스템에 영어로 된 파일을 독일어로 번역해야한다고 가정 해 봅시다. 기본적으로 두 가지 선택이 있습니다. 전체 영어 파일을 하나의 빅 배치로 메모리에로드하고 전체 배치를 한 번에 번역 한 다음 새 독일어 배치를 다시 파일 시스템에 쓸 수 있습니다.

줄 단위로 지정할 수 있습니다. 영어로 된 첫 번째 줄을 읽으십시오. 독일어로 번역하고 새 파일에 쓰십시오; 영어로 두 번째 줄을 읽고 독일어로 번역하고 새 파일에 추가하십시오. 등등.

후자의 방법은 Apache Crunch 문서에 설명 된 스트리밍 방식과 유사합니다.

PCollectionRDD이 스파크 (Spark)에 대해 무엇을 할 것인가? 프레임 워크의 기본 분산 데이터 추상화이지만, Crunch는 높은 추상화 수준에서 작동합니다. 그것은 기술 전반에 걸쳐 데이터 파이프 라인을위한 훌륭한 API를 제공하고자합니다.

예를 들어 신뢰할 수있는 쿼리가있는 하이브에 데이터가있을 수 있습니다. 이러한 쿼리의 출력은 HBase의 데이터를 저장하는 기존 MapReduce 작업의 입력으로 사용됩니다. 이러한 데이터는 Spark의 MLLib 기계 학습 라이브러리에 의해 분석되며 결과는 궁극적으로 Cassandra로 이동합니다. Crunch는 모든 것을 함께 추상화하여 PCollection 추상화를 시도하지만 스트리밍 방식은 다음 작업이 시작되기 전에 하나의 작업이 완료 될 때까지 기다릴 필요가 없음을 의미합니다. 한 줄씩 파일을 변환하는 것과 마찬가지로 한 번에 조금씩 처리하고 각 비트를 파이프 라인의 각 단계로 이동합니다. 모든 작업을 일괄 적으로 수행하는 것과 반대입니다.

스트리밍 개념은 Spark (가장 명확하게 Spark Streaming)와 같은 도구에 적용되지만, 앞서 언급 한 것처럼 Spark는 Crunch보다 낮은 추상화 수준에서 작동합니다. 스파크 작업은 크런치 파이프 라인의 한 부분 일 수 있습니다. 그러나 스트리밍은 실제로 강력한 패러다임입니다. Nathan Marz (이전의 Twitter)가 고안 한 배치 기반 Lambda Architecture에 대한보다 단순하지만보다 강력한 대안으로 Jay Kreps (이전의 LinkedIn 및 지금은 Confluent, Apache Kafka)가 고안 한 Kappa Architecture의 기초입니다.

마지막으로 선택은 추상화 수준 (스파크보다 크런치)과 한 번에 하나의 배치 또는 비트별로 작동하는 것 사이입니다.