일반적인 문제 시스템이 수행하는 정렬 프로세스를 무엇이라고 합니까?

시스템이 수행하는 정렬 프로세스를 무엇이라고 합니까?

Apr 25, 2021 pm 05:10 PM
hadoop shuffle

MapReduce는 각 감속기의 입력이 키별로 정렬되도록 하며 시스템에서 수행되는 정렬 프로세스를 셔플이라고 합니다. 셔플 단계에는 주로 맵 단계의 결합, 그룹, 정렬, 분할, 리듀서 단계의 병합 정렬이 포함됩니다.

시스템이 수행하는 정렬 프로세스를 무엇이라고 합니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

MapReduce는 각 리듀서의 입력이 키별로 정렬되도록 하며 시스템에서 수행되는 정렬 프로세스를 셔플이라고 합니다. 맵이 출력을 생성하고 입력을 소화하여 줄이는 전체 프로젝트로 이해할 수 있습니다.

맵 측면: 각 mapperTask에는 맵 작업의 출력을 저장하는 데 사용되는 링 메모리 버퍼가 있습니다. 임계값에 도달하면 백그라운드 스레드는 쓰기 전에 디스크의 지정된 디렉터리에 새로 생성된 오버플로 쓰기 파일에 콘텐츠를 씁니다. 디스크로 이동하려면 파티션, 정렬, 결합기를 거쳐야 합니다. 마지막 레코드가 기록된 후 오버플로 기록된 모든 파일을 하나의 분할되고 정렬된 파일로 병합합니다.

Reduce 측: 복사 단계, 정렬 단계, 축소 단계로 나눌 수 있습니다.

Copy 단계: 맵 출력 파일은 맵 작업을 실행하는 작업 추적기의 로컬 디스크에 위치합니다. Reduce는 http를 통해 출력 파일의 파티션을 얻습니다. , tasktracker는 파티션 파일입니다. 축소 작업을 실행하면 매핑 작업이 완료되자마자 출력 복사가 시작됩니다.

정렬 단계: 정렬이 지도 쪽에서 수행되기 때문에 병합 단계라는 용어가 더 적절합니다. 이 단계에서는 지도 출력을 병합하고 순서를 유지하며 반복합니다.

마지막 단계는 축소 단계입니다. 정렬된 출력의 각 키에 대해 축소 기능이 호출됩니다. 이 단계의 출력은 일반적으로 HDFS인 출력 파일 시스템에 직접 기록됩니다. ,

셔플 단계 설명

셔플 단계에는 주로 맵 단계의 결합, 그룹, 정렬, 분할이 포함되고 리듀서 단계의 병합 정렬이 포함됩니다. Map 단계에서 섞은 후 출력 데이터는 축소 파티션에 따라 파일에 저장되고 파일 내용은 정의된 정렬에 따라 정렬됩니다. Map 단계가 완료된 후 ApplicationMaster에 통지되고, AM은 Reduce에 데이터를 가져오라고 알리고, 가져오는 과정에서 감소 측에서 셔플 프로세스를 수행합니다.

참고: Map 단계의 출력 데이터는 Map 노드를 실행하는 디스크에 저장되며, Reduce가 데이터를 가져온 후에는 임시 파일이 삭제됩니다. HDFS를 사용하면 저장 공간이 손실됩니다(3개의 복사본이 생성됨).

  • 사용자 정의 Combiner

    Combiner는 Map 단계에서 중간 출력 결과 수를 줄이고 네트워크 오버헤드를 줄일 수 있습니다. 기본적으로 Combiner는 없습니다. 사용자 정의 Combiner는 Map의 출력 와 Combiner의 출력 로 사용됩니다. 즉, Combiner의 입력과 출력은 동일해야 합니다.

    job.setCombinerClass를 통해 결합기 처리 클래스를 설정할 수 있습니다. MapReduce 프레임워크는 이 클래스의 메서드가 호출된다는 것을 보장하지 않습니다.

    참고: 축소의 입력과 출력이 동일하면 축소 클래스를 결합기로 직접 사용할 수 있습니다.

  • 사용자 정의 파티셔너

    파티셔너는 축소의 <키, 값> 지도 출력에 해당하는 처리 감속기는 무엇입니까? 기본 MapReduce 작업 감소 수는 1입니다. 이때 Partitioner는 실제로 아무런 효과가 없습니다. 그러나 감소 수를 여러 개로 변경하면 파티셔너는 키에 해당하는 감소의 노드 수를 결정합니다(0부터 시작). ).

    Job.setPartitionerClass 메서드를 통해 Partitioner 클래스를 지정할 수 있습니다. 기본적으로 HashPartitioner가 사용됩니다(기본적으로 key의 hashCode 메서드가 호출됩니다).

  • 사용자 정의 그룹

    GroupingComparator는 Map에서 출력한 를 직설적으로 말하면 로 그룹화하고 결합하는 데 사용되는 키 클래스입니다. key1과 key2가 동일한 그룹에 속하는지 확인하려면 맵의 출력 값을 결합하세요.

    자체 인터페이스 RawComparator를 구현하려면 사용자 정의 클래스가 필요하며, job.setGroupingComparatorClass 메소드를 통해 비교 클래스를 지정할 수 있습니다. 기본적으로 WritableComparator가 사용되지만 최종적으로 비교를 위해 키의 CompareTo 메서드가 호출됩니다.

  • 사용자 정의 정렬

    SortComparator는 Map에서 출력되는 그 사람이 뒤에 있어요.

    자체 인터페이스 RawComparator를 구현하려면 사용자 정의 클래스가 필요하며, job.setSortComparatorClass 메소드를 통해 비교 클래스를 지정할 수 있습니다. 기본적으로 WritableComparator가 사용되지만 최종적으로 비교를 위해 키의 CompareTo 메서드가 호출됩니다.

  • 사용자 정의 Reducer의 Shuffle

    리듀스 측이 맵의 출력 데이터를 가져오면 셔플(병합 정렬)이 수행됩니다. MapReduce 프레임워크는 플러그인 모드에서 사용자 정의된 방식을 제공합니다. ShuffleConsumerPlugin을 사용하고 mapreduce.job.reduce.shuffle.consumer.plugin.class 매개변수를 지정하여 사용자 정의 셔플 규칙을 지정하지만 일반적으로 기본 클래스인 org.apache.hadoop.mapreduce.task.reduce.Shuffle이 직접 사용됩니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 시스템이 수행하는 정렬 프로세스를 무엇이라고 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java 오류: Hadoop 오류, 처리 및 방지 방법 Java 오류: Hadoop 오류, 처리 및 방지 방법 Jun 24, 2023 pm 01:06 PM

Java 오류: Hadoop 오류, 처리 및 방지 방법 Hadoop을 사용하여 빅 데이터를 처리할 때 작업 실행에 영향을 미치고 데이터 처리 실패를 유발할 수 있는 Java 예외 오류가 자주 발생합니다. 이 기사에서는 몇 가지 일반적인 Hadoop 오류를 소개하고 이를 처리하고 방지하는 방법을 제공합니다. Java.lang.OutOfMemoryErrorOutOfMemoryError는 Java 가상 머신의 메모리 부족으로 인해 발생하는 오류입니다. 하둡이 있을 때

Jul 24, 2023 pm 10:25 PM

Java는 Collections 클래스의 shuffle() 함수를 사용하여 컬렉션의 요소 순서를 방해합니다. Java 프로그래밍 언어에서 Collections 클래스는 컬렉션을 작동하기 위한 다양한 정적 메서드를 제공하는 도구 클래스입니다. 그 중 하나는 컬렉션의 요소 순서를 섞는 데 사용할 수 있는 shuffle() 함수입니다. 이 문서에서는 이 함수를 사용하는 방법을 보여주고 해당 코드 예제를 제공합니다. 먼저 java.util 패키지에서 Collections 클래스를 가져와야 합니다.

빅 데이터 저장 및 쿼리를 위해 Beego에서 Hadoop 및 HBase 사용 빅 데이터 저장 및 쿼리를 위해 Beego에서 Hadoop 및 HBase 사용 Jun 22, 2023 am 10:21 AM

빅데이터 시대가 도래하면서 데이터의 처리와 저장이 더욱 중요해지고 있으며, 대용량 데이터를 어떻게 효율적으로 관리하고 분석할 것인가가 기업의 과제가 되었습니다. Apache Foundation의 두 가지 프로젝트인 Hadoop과 HBase는 빅데이터 저장 및 분석을 위한 솔루션을 제공합니다. 이 기사에서는 빅데이터 저장 및 쿼리를 위해 Beego에서 Hadoop 및 HBase를 사용하는 방법을 소개합니다. 1. Hadoop 및 HBase 소개 Hadoop은 오픈 소스 분산 스토리지 및 컴퓨팅 시스템입니다.

빅데이터 처리에 PHP와 Hadoop을 사용하는 방법 빅데이터 처리에 PHP와 Hadoop을 사용하는 방법 Jun 19, 2023 pm 02:24 PM

데이터의 양이 지속적으로 증가함에 따라 기존의 데이터 처리 방식으로는 더 이상 빅데이터 시대가 가져온 과제를 처리할 수 없습니다. 하둡(Hadoop)은 빅데이터 처리 시 단일 노드 서버로 인해 발생하는 성능 병목 현상을 분산 저장 및 대용량 데이터 처리를 통해 해결하는 오픈소스 분산 컴퓨팅 프레임워크이다. PHP는 웹 개발에 널리 사용되는 스크립팅 언어로 개발 속도가 빠르고 유지 관리가 쉽다는 장점이 있습니다. 이 글에서는 빅데이터 처리를 위해 PHP와 Hadoop을 사용하는 방법을 소개합니다. 하둡이란 무엇인가Hadoop이란

빅 데이터 분야에서 Java 적용 살펴보기: Hadoop, Spark, Kafka 및 기타 기술 스택에 대한 이해 빅 데이터 분야에서 Java 적용 살펴보기: Hadoop, Spark, Kafka 및 기타 기술 스택에 대한 이해 Dec 26, 2023 pm 02:57 PM

Java 빅데이터 기술 스택: Hadoop, Spark, Kafka 등 빅데이터 분야에서 Java의 응용을 이해합니다. 데이터의 양이 지속적으로 증가함에 따라 오늘날 인터넷 시대에 빅데이터 기술이 화두가 되고 있습니다. 빅데이터 분야에서 우리는 하둡(Hadoop), 스파크(Spark), 카프카(Kafka) 등의 기술 이름을 자주 듣습니다. 이러한 기술은 매우 중요한 역할을 하며, 널리 사용되는 프로그래밍 언어인 Java는 빅데이터 분야에서도 큰 역할을 합니다. 이 기사에서는 Java의 대규모 애플리케이션에 중점을 둘 것입니다.

리눅스에 하둡을 설치하는 방법 리눅스에 하둡을 설치하는 방법 May 18, 2023 pm 08:19 PM

1: JDK1을 설치합니다. 다음 명령을 실행하여 JDK1.8 설치 패키지를 다운로드합니다. wget--no-check-certificatehttps://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz2 다음 명령을 실행하여 다운로드한 JDK1.8 설치 패키지의 압축을 풉니다. . tar-zxvfjdk-8u151-linux-x64.tar.gz3. JDK 패키지를 이동하고 이름을 바꿉니다. mvjdk1.8.0_151//usr/java84. Java 환경 변수를 구성합니다. 에코'

배열을 무작위로 섞기 위해 PHP에서 어떤 함수가 사용됩니까? 배열을 무작위로 섞기 위해 PHP에서 어떤 함수가 사용됩니까? May 01, 2024 pm 10:15 PM

PHP에는 배열을 무작위로 섞을 수 있는 다음 함수가 있습니다. shuffle()은 배열 요소의 순서를 직접 변경합니다. array_rand()는 임의의 키를 반환하고 키를 기반으로 배열 순서를 재정렬할 수 있습니다.

PHP를 사용하여 Hadoop, Spark, Flink 등 대규모 데이터 처리를 수행합니다. PHP를 사용하여 Hadoop, Spark, Flink 등 대규모 데이터 처리를 수행합니다. May 11, 2023 pm 04:13 PM

데이터의 양이 지속적으로 증가함에 따라 대규모 데이터 처리는 기업이 직면하고 해결해야 할 문제가 되었습니다. 기존의 관계형 데이터베이스는 더 이상 이러한 요구를 충족할 수 없습니다. 대규모 데이터의 저장 및 분석을 위해서는 Hadoop, Spark 및 Flink와 같은 분산 컴퓨팅 플랫폼이 최선의 선택이 되었습니다. 데이터 처리 도구를 선택하는 과정에서 PHP는 개발 및 유지 관리가 쉬운 언어로 개발자들 사이에서 점점 인기를 얻고 있습니다. 이 기사에서는 대규모 데이터 처리에 PHP를 활용하는 방법과 방법을 살펴보겠습니다.