복붙노트

[HADOOP] 지도 축소에 대한 유일한 장점을 캐싱하고 있습니까?

HADOOP

지도 축소에 대한 유일한 장점을 캐싱하고 있습니까?

나는 Apache Spark에 대해 배우기 시작했고 프레임 워크에 깊은 인상을 받았습니다. 스파크 프리젠 테이션에서 Spark가 RDD를 캐시하는 방법에 대해 이야기하고 있기 때문에 동일한 데이터를 필요로하는 여러 작업이 Map Reduce와 같은 다른 접근 방식보다 빠릅니다.

그래서 내가 가진 질문은 이것이 사실이라면 Yarn / Hadoop과 같은 MR 프레임 워크 안에 캐싱 엔진을 추가하는 것입니다.

왜 새로운 프레임 워크를 만들지?

나는 여기서 뭔가를 놓치고 있고 스파크에 대해 더 많이 가르쳐주는 몇 가지 문서를 가르쳐 줄 수있을 것이라고 확신합니다.

해결법

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

    1.캐싱 + 메모리 계산에서 확실히 큰 일이 스파크, 그러나 다른 것들이 있습니다.

    캐싱 + 메모리 계산에서 확실히 큰 일이 스파크, 그러나 다른 것들이 있습니다.

    RDD (Resilient Distributed Data set) : RDD는 스파크의 주요 추상화입니다. 또한 DAG의 재 계산을 통해 실패한 노드를 복구하는 동시에 검사 점을 통해 Hadoop과 유사한 복구 스타일을 지원하여 RDD의 종속성을 줄입니다. DAG에 스파크 작업을 저장하면 RDD를 지연 계산할 수 있으며 스파크 최적화 엔진이 성능에 큰 영향을 미치는 방식으로 흐름을 예약 할 수 있습니다.

    Spark API : Hadoop MapReduce는 매우 융통성이없는 매우 엄격한 API를 가지고 있습니다. spark은 많은 낮은 수준의 세부 사항을 추상화하므로 생산성을 높일 수 있습니다. 또한 방송 변수 및 누적 기와 같은 것들은 DistributedCache 및 카운터 IMO보다 훨씬 다양합니다.

    스파크 스트리밍 : 스파크 스트리밍은 마이크로 배치를 사용하여 스트림에서 창 계산을 수행하기위한 새로운 모델을 제안하는 Discretized Streams를 기반으로합니다. Hadoop은 이와 같은 것을 지원하지 않습니다.

    메모리 계산의 결과로서, 그것은 자신의 흐름 스케줄러 인 것처럼 행동합니다. 표준 MR의 경우 Azkaban 또는 Oozie와 같은 외부 작업 스케줄러가 복잡한 흐름을 예약해야합니다.

    hadoop 프로젝트는 MapReduce, YARN, commons 및 HDFS로 구성됩니다. 그러나 스파크는 기계 학습, 그래프 처리, 스트리밍, 다중 SQL 형식 라이브러리를위한 라이브러리 (동일한 repo에서)를 사용하여 하나의 통합 된 대용량 데이터 플랫폼을 만들려고 시도하고 있으며 깊은 학습 라이브러리가 초기 단계에 있다고 생각합니다. 이것이 스파크의 특징 인 것은 아니지만 스파크의 컴퓨팅 모델의 산물입니다. Tachyon과 BlinkDB는 스파크를 중심으로 구축 된 두 가지 기술입니다.

  2. ==============================

    2.그래서 캐싱 그 이상입니다. Aaronman은 많은 것을 다루었으므로 그가 놓친 것을 추가하십시오.

    그래서 캐싱 그 이상입니다. Aaronman은 많은 것을 다루었으므로 그가 놓친 것을 추가하십시오.

    일반적으로 더 효율적이고 잘 정립 된 프레임 워크로 인해 캐싱을 사용하지 않는 원시 성능은 2-10 배 빠릅니다. 예 : akka 스레드가있는 노드 당 1 개의 jvm이 각 태스크의 전체 프로세스를 포킹하는 것보다 낫습니다.

    Scala API. Scala는 Scalable Language의 약자이며 병렬 처리를 위해 선택할 수있는 최상의 언어입니다. Scala는 코드를 2 ~ 5 배 줄였습니다.하지만 다른 언어, 특히 Java MapRduce 코드의 리팩토링 코드 경험은 10 ~ 100 배 적은 코드입니다. 진심으로 나는 자바에서 LOC 100을 Scala / Spark의 소수로 리팩토링했다. 읽기 쉽고 추론하기가 훨씬 쉽습니다. Spark는 돼지 & 하이브와 같은 Hadoop 추상화 도구보다 훨씬 간결하고 사용하기 쉽고 Scalding보다 훨씬 뛰어납니다.

    스파크는 repl / shell을 가지고 있습니다. 간단한 작업을 실행하기 위해 컴파일 - 배포주기가 필요하지 않습니다. Bash를 사용하여 시스템을 둘러싼 것처럼 대화식으로 데이터를 재생할 수 있습니다.

    마지막으로 염두에 두어야 할 점은 cassandra와 hbase와 같은 Big Table DB와의 통합이 쉽다는 것입니다. 테이블에서 몇 가지 분석을하기 위해 테이블을 읽는 캐쉬에서

    sc.cassandraTable[MyType](tableName).select(myCols).where(someCQL)
    

    HBase에 대해서도 비슷한 일이 예상됩니다. 이제 다른 MPP 프레임 워크에서 시도해보십시오 !!

    UPDATE는 이것이 Spark의 장점 일 뿐이라고 지적했습니다. 위에 유용한 것들이 많이 있습니다. 예 : 그래프 처리를위한 GraphX, 쉬운 기계 학습을위한 MLLib, BI를위한 Spark SQL, 미친 빠른 apprx 쿼리를위한 BlinkDB, 그리고 Spark Streaming

  3. ==============================

    3.많은 것들이 애론 맨과 샘 테스트에 의해 보호 받았다. 몇 가지 더 요점이 있습니다.

    많은 것들이 애론 맨과 샘 테스트에 의해 보호 받았다. 몇 가지 더 요점이 있습니다.

  4. ==============================

    4.희망이 도움이됩니다.

    희망이 도움이됩니다.

  5. ==============================

    5.나는 세 가지 주요 이유가 있다고 생각한다.

    나는 세 가지 주요 이유가 있다고 생각한다.

    주된 두 가지 이유는 일반적으로 하나의 MapReduce 작업을 실행하지 않고 순서대로 일련의 작업을 실행한다는 사실에서 비롯됩니다.

    마지막으로 언급 할 가치가있는 흔한 오해는 MapReduce가 그렇지 않은 동안 Spark이 메모리에서 완전히 실행된다는 것입니다. 이것은 단순히 사실이 아닙니다. Spark의 셔플 구현은 MapReduce와 매우 비슷하게 작동합니다. 각 레코드는지도 ​​측에서 디스크에 직렬화 및 기록 된 다음 축소면에서 페치 및 비 직렬화됩니다.

  6. from https://stackoverflow.com/questions/24705724/is-caching-the-only-advantage-of-spark-over-map-reduce by cc-by-sa and MIT license