복붙노트

[HADOOP] Apache Spark의 맥락에서 메모리 내 데이터 저장은 무엇을 의미합니까?

HADOOP

Apache Spark의 맥락에서 메모리 내 데이터 저장은 무엇을 의미합니까?

나는 아파치 스파크가 데이터를 메모리에 저장한다는 것을 읽었다. 그러나 Apache Spark는 방대한 양의 데이터 (대용량 데이터 분석 등)를 분석하기위한 것입니다. 이러한 맥락에서, 메모리 내 데이터 스토리지는 실제로 무엇을 의미합니까? RAM에 저장 가능한 데이터가 제한되어 있습니까? 데이터 저장소는 HDFS를 사용하는 Apache Hadoop과 어떻게 비교됩니까?

해결법

  1. ==============================

    1.Hadoop에서는 데이터가 단계간에 디스크에 유지되므로 일반적인 다단계 작업은 다음과 같이 끝납니다.

    Hadoop에서는 데이터가 단계간에 디스크에 유지되므로 일반적인 다단계 작업은 다음과 같이 끝납니다.

    hdfs -> read & map -> persist -> read & reduce -> hdfs -> read & map -> persist -> read and reduce -> hdfs
    

    이는 탁월한 디자인이며 map-reduce 패턴에 잘 맞는 파일을 배치 처리 할 때 사용하는 것이 좋습니다. 그러나 일부 작업 부하의 경우 이것은 매우 느릴 수 있습니다. 반복 알고리즘은 특히 부정적인 영향을받습니다. 몇 가지 데이터 구조 (예를 들어 그래프)를 만드는 데 시간을 소비 했으므로 각 단계에서 수행하려는 작업은 점수를 업데이트하는 것입니다. 전체 그래프를 디스크에 유지하거나 디스크에서 읽는 것은 작업 속도를 늦 춥니 다.

    스파크는주기적인 데이터 흐름을 지원하는 좀 더 일반적인 엔진을 사용하며, 작업 단계 사이에서 물건을 메모리에 유지하려고합니다. 이것이 의미하는 바는 데이터 구조와 파티션 분할 전략을 만들면 데이터가 작업의 각 단계 사이에서 뒤섞이지 않고 효율적으로 업데이트 할 수 있습니다. 그것이 스파크가 논리적 회귀에서 100 배의 속도 향상을 보여주는 차트를 그들의 첫 페이지에서 얻은 이유입니다.

    데이터 세트의 각 입력 행에서 값을 계산하고 디스크에 다시 기록하는 Spark 작업을 작성하면 Hadoop과 Spark는 성능 측면에서 거의 동일합니다 (시작 시간은 Spark에서 더 빠르지 만 한 번에 데이터를 처리하는 데 몇 시간을 소비 할 때 거의 문제가되지 않습니다.)

    Spark이 단계들 사이의 메모리에 RDD를 저장할 수 없다면 Hadoop처럼 디스크에 디스크를 쏟아 붓습니다. 하지만 스파크는 은하가 아니므로 Spark의 메모리 부족으로 인해 OutOfMemory 문제가 발생하는 경우가 있습니다. Hadoop은 모든 것을 디스크에 기록합니다.

    저는 개인적으로 이렇게 생각하고 싶습니다. 500 대의 64GB 머신 클러스터에서 Hadoop은 디스크 읽기와 쓰기를 분산시킴으로써 500TB 작업을보다 효율적으로 일괄 처리하도록 만들어졌습니다. Spark은 500 * 64GB = 32TB 상당의 메모리가 전체적으로 메모리에있는 다른 문제 중 상당수를 해결할 수 있다는 사실을 이용합니다!

  2. from https://stackoverflow.com/questions/25334598/what-does-in-memory-data-storage-mean-in-the-context-of-apache-spark by cc-by-sa and MIT license