Spark 입문

7297 단어 Spark입문 하 다
1.Spark 소개
  • 2009 년 에 스파크 는 버클 리 대학의 AMPLAB 실험실 에서 태 어 났 다.가장 우수한 스파크 는 실험 적 인 프로젝트 일 뿐 코드 양 이 매우 적 고 경량급 의 프레임 워 크 에 속한다.
  • 2010 년 에 버클 리 대학 은 Spark 프로젝트 를 정식으로 시작 했다.
  • 2013 년 6 월 에 스파크 는 아파 치 재단 의 프로젝트 가 되 어 고속 발전기 에 들 어 갔다.제3자 개발 자 는 대량의 코드 를 기 여 했 고 활약 도가 매우 높 습 니 다
  • 2014 년 2 월 에 Spark 는 빠 른 속도 로 Apache 의 톱 프로젝트 라 고 불 렀 고 빅 데이터 회사 Cloudera 는 MapReduce
  • 대신 Spark 프레임 워 크 의 투 자 를 확대 하 겠 다 고 발표 했다.
  • 2014 년 4 월 빅 데이터 회사 MapR 이 스파크 진영 에 투 입 됐 고,Apache Mahout 은 MapReduce 를 포기 하고 스파크 를 컴 퓨 팅 엔진 으로 사용 했다.
  • 2014 년 5 월 스파크 1.0.0 이 발표 됐다.
  • 2015 년~Spark 는 국내 IT 업계 에서 더욱 뜨 거 워 졌 습 니 다.점점 더 많은 회사 들 이 MR2,Hive,Storm 등 전통 적 인 빅 데이터 병행 컴 퓨 팅 프레임 워 크 를 대체 하기 위해 Spark 를 중점적으로 배치 하거나 사용 하기 시 작 했 습 니 다
  • 2.스파크 는 무엇 입 니까?
  • Apache Spark™ is a unified analytics engine for large-scale data processing.
  • 대규모 데이터 세트 의 통일 분석 엔진
  • Spark 는 메모리 기반 의 유 니 버 설 병렬 계산 프레임 워 크 로 데이터 분석 을 더욱 빠르게 하 는 데 목적 을 둔다.
  • Spark 는 빅 데이터 분야 에서 흔히 볼 수 있 는 각종 계산 프레임 워 크 를 포함한다.
  • spark core(오프라인 계산)
  • sparksql(대화 형 조회)
  • spark streaming(실시 간 계산)
  • Spark MLlib(기계 학습)
  • Spark Graph X(그림 계산)
  • 3.스파크 가 hadop 을 대체 할 수 있 을 까?
    불완전 하 다
    mr 대신 spark core 를 사용 하여 오프라인 계산 을 할 수 밖 에 없 기 때문에 데이터 저장 은 hdfs 에 의존 해 야 합 니 다.
    Spark+Hadoop 의 조합 이 야 말로 미래 빅 데이터 분야 에서 가장 핫 한 조합 이자 가장 전망 적 인 조합 입 니 다!​
    4.Spark 의 특징
    스피드
  • 메모리 계산 은 속도 상 mr 보다 100 배 이상 빠르다
  • 디스크 계산 은 속도 상 mr 보다 10 배 이상 빠르다
  • 사용 하기 쉽다
  • 자바 scala python R 언어의 api 인터페이스
  • 을 제공 합 니 다.
    원 스 톱 솔 루 션
  • spark core(오프라인 계산)
  • spark sql(대화 형 조회)
  • spark streaming(실시 간 계산)
  • .....
  • 임의의 플랫폼 에서 실행 할 수 있 습 니 다.
  • yarn
  • Mesos
  • standalone
  • 5.스파크 의 단점
    JVM 의 메모리 오 버 헤드 가 너무 커서 1G 의 데 이 터 는 보통 5G 의 메모 리 를 소모 해 야 합 니 다(Project Tungsten 은 이 문 제 를 해결 하려 고 노력 하고 있 습 니 다)
    서로 다른 spark app 사이 에 효과 적 인 공유 메모리 메커니즘 이 부족 합 니 다.(Project Tachyon 은 분포 식 메모리 관 리 를 도입 하려 고 합 니 다.이렇게 서로 다른 spark app 은 캐 시 데 이 터 를 공유 할 수 있 습 니 다)
    6. Spark vs MR
    6.1 mr 의 한계 성
  • 추상 적 인 차원 이 낮 아서 수 동 으로 코드 를 작성 해 야 하기 때문에 사용 하기 어렵다
  • 은 두 가지 조작 만 제공 하고 Map 과 Reduce 는 표 현 력 이 부족 합 니 다
  • 개의 Job 은 Map 과 Reduce 두 단계(Phase)만 있 고 복잡 한 계산 은 대량의 Job 이 완성 되 어야 합 니 다.Job 간 의 의존 관 계 는 개발 자가 스스로 관리 하 는
  • 입 니 다.
  • 중간 결과(reduce 의 출력 결과)도 HDFS 파일 시스템 에
  • 지연 이 높 고 Batch 데이터 처리 만 적용 되 며 상호작용 데이터 처리 에 있어 실시 간 데이터 처리 지원 이
  • 에 부족 합 니 다.
  • 교체 식 데이터 처리 성능 이 비교적 떨어진다
  • 6.2 Spark 가 mr 의 그 문제 들 을 해 결 했 습 니까?
    추상 적 인 차원 이 낮 아서 수 동 으로 코드 를 작성 해 야 하기 때문에 사용 하기 어렵다
  • spark 의 RDD(Resilient distributed datasets)를 통 해 추상 적 인
  • 을 진행 합 니 다.
    두 가지 조작 만 제공 하고 맵 과 Reduce 는 표 현 력 이 부족 합 니 다.
  • spark 에서 여러 가지 계산 자 를 제공 하 였 습 니 다
  • 하나의 Job 은 Map 과 Reduce 두 단계 밖 에 없어 요.
  • spark 에서 여러 단계(stage)
  • 중간 결과 도 HDFS 파일 시스템 에 놓 습 니 다(속도 가 느 립 니 다)
  • 중간 결 과 를 메모리 에 넣 으 면 HDFS
  • 이 아 닌 로 컬 디스크 에 기록 할 수 있 습 니 다.
    지연 이 높 고 Batch 데이터 처리 만 적용 되 며 상호작용 데이터 처리 에 대한 실시 간 데이터 처리 지원 이 부족 합 니 다.
  • sparksql 과 sparkstreaming 은 상기 문 제 를 해결 했다.
  • 교체 식 데이터 처리 성능 이 비교적 떨어진다.
  • 메모리 에 데 이 터 를 캐 시 하여 교체 식 컴 퓨 팅 의 성능 을 향상 시 킵 니 다
  • ==따라서 Hadoop MapReduce 는 차세 대 빅 데이터 처리 플랫폼 으로 대체 되 는 것 이 기술 발전 추세 이 고,차세 대 빅 데이터 처리 플랫폼 에 서 는 스파크 가 현재 가장 광범 위 하 게 인 정 받 고 지원 되 고 있 습 니 다==
    7.스파크 버 전
  • spark 1.6.3:scala 버 전 2.10.5
  • spark 2.2.0:scala 버 전 2.11.8(새 프로젝트 는 spark 2.x 버 전 을 사용 하 는 것 을 권장 합 니 다)
  • hadoop2.7.5
  • 8.Spark 단판 설치
    패키지 spark-2.2.0-bin-hadop 2.7.tgz 설치 준비
    
    tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz -C /opt/
    mv spark-2.2.0-bin-hadoop2.7/ spark
    spark-env.sh 수정
    
    export JAVA_HOME=/opt/jdk
    export SPARK_MASTER_IP=uplooking01
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=4
    export SPARK_WORKER_INSTANCES=1
    export SPARK_WORKER_MEMORY=2g
    export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
    
    환경 변수 설정
    
    #  Spark     
    export SPARK_HOME=/opt/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
    
    단일 컴퓨터 spark 시작
    
    start-all-spark.sh
    
    시작 보기
    http://uplooking01:8080
    9.Spark 분산 클 러 스 터 설치
    spark-env.sh 설정
    
    [root@uplooking01 /opt/spark/conf] 
      export JAVA_HOME=/opt/jdk
      #  master   
      export SPARK_MASTER_IP=uplooking01
      #  master       
      export SPARK_MASTER_PORT=7077
      #  spark   worker    cpu  
      export SPARK_WORKER_CORES=4
      #         worker
      export SPARK_WORKER_INSTANCES=1
      #worker      2gb
      export SPARK_WORKER_MEMORY=2g
      #hadoop         
      export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
    
    슬 레이 브 설정
    
    [root@uplooking01 /opt/spark/conf]
      uplooking03
      uplooking04
      uplooking05
    
    spark 배포
    
    [root@uplooking01 /opt/spark/conf] 
      scp -r /opt/spark uplooking02:/opt/
      scp -r /opt/spark uplooking03:/opt/
      scp -r /opt/spark uplooking04:/opt/
      scp -r /opt/spark uplooking05:/opt/
    
    uplooking 01 에 설 정 된 환경 변 수 를 나 누 어 줍 니 다.
    
    [root@uplooking01 /] 
      scp -r /etc/profile uplooking02:/etc/
      scp -r /etc/profile uplooking03:/etc/
      scp -r /etc/profile uplooking04:/etc/
      scp -r /etc/profile uplooking05:/etc/
    
    시작 spark
    
    [root@uplooking01 /] 
     start-all-spark.sh
    
    10.Spark 고가 용 집단
    실행 중인 spark 군집 을 먼저 중단 합 니 다.
    spark-env.sh 수정
    
    #         
    #export SPARK_MASTER_IP=uplooking01
    #export SPARK_MASTER_PORT=7077
    
    내용 추가
    
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=uplooking03:2181,uplooking04:2181,uplooking05:2181 -Dspark.deploy.zookeeper.dir=/spark"
    
    수 정 된[설정 배포]
    
    scp /opt/spark/conf/spark-env.sh uplooking02:/opt/spark/conf
    scp /opt/spark/conf/spark-env.sh uplooking03:/opt/spark/conf
    scp /opt/spark/conf/spark-env.sh uplooking04:/opt/spark/conf
    scp /opt/spark/conf/spark-env.sh uplooking05:/opt/spark/conf
    
    시작 클 러 스 터
    
    [root@uplooking01 /]
     start-all-spark.sh
    [root@uplooking02 /]
     start-master.sh
    
    11.첫 번 째 Spark-Shell 프로그램
    
    spark-shell --master spark://uplooking01:7077 
    #spark-shell        spark-shell  application     (   ,  work      )
    spark-shell --master spark://uplooking01:7077 --total-executor-cores 6 --executor-memory 1g
    
    #            worker      ,   worker  1g  
    
    
    sc.textFile("hdfs://ns1/sparktest/").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).collect
    
    12.스파크 의 캐릭터
    Master
  • 제출 한 작업 을 받 아 달 라 는 요청
  • master 에서 자원 관리 담당(woker 에서 CoarseGrained Executor Backend 시작)
  • Worker
  • worker 중의 executor 는 task
  • 을 수행 합 니 다.
    Spark-Submitter ===> Driver
  • spark 응용 프로그램 을 master
  • 에 제출 합 니 다.
    13.Spark 제출 작업 의 대체 절차

    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기