하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

소개

Meow가 Xiaobai에게 HDFS에 대한 이야기를 말한 이후로 Xiaobai의 생각은 여전히 ​​충분하지 않았고, Meow가 Hadoop 프레임 워크에서 또 다른 중요한 MapReduce 컴퓨팅 프레임 워크에 대해 계속 이야기하기를 원하면서 하루 종일 Meow를 괴롭 혔습니다.

목차

  1. MapReduce 란?
  2. MapReduce의 원리

1 MapReduce 란?

씨 옹은 말했다. "맵리 듀스는 하둡의 계산 프레임 워크입니다 퉁명스럽게 말하면, HDFS 스토리지에 대한 책임이 다른 통계 및 계산과 같은 그런 일들이지도 과정으로 나누어 할 맵리 듀스에 넘겨 및 공정을 줄일 수 있습니다..
지도 과정 예를 들어 빨간 차 한 대가 일군의 일군이 부품으로 분해 해 버렸어요. 이것이 바로지도입니다. "

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

Reduce 프로세스는 하나의 조합입니다. 자동차 부품과 기타 장치 부품이 많이 있습니다. 트랜스포머로 조립합니다. 이것이 Reduce입니다.

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

Xiaobai는 "너무 생생하게 들리므로 구체적인지도 프로세스와 축소 프로세스는 무엇입니까?"
"천천히 설명하겠습니다 " 라고 Meow 씨는 삼켰습니다.

2 MapReduce의 원칙

Mr. Meow는 "먼저, 다음 데이터-학생 정보 기록지를 보자"라고 말했습니다.

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

  1. 성별이 1 인 데이터를 필터링 할 수 있습니다.
  2. 성별 필드에서 1을 남성으로, 0을 여성으로 변환 할 수 있습니다.
  3. 필드 주소를 확장 할 수도 있습니다.

위의 프로세스는 맵 : 하나의 레코드 단위로 매핑 (필터링 / 변환 / 확장)

Xiaobai는 "지도의 원리가 mysql의 문법과 비슷하다고 느낍니다. 학생에서 *를 선택하십시오. 여기서 sex = 1은 데이터를 하나씩 처리합니다."
Meow 씨 : "음, 우리는 방법을 가르쳐 드릴 수 있습니다. 축소 과정을 계속 살펴 보겠습니다. 각 전공의 총 학생 수를 계산하려면 python, java, c를 그룹화하고이 그룹을 하나의 단위로 사용하여 통계 계산을 수행해야합니다. "

위의 프로세스가 감소합니다. 계산이 그룹으로 수행됩니다.

Xiaobai는 "이것이 mysql의 group by 원칙이 아닌가? 통계는 그룹을 기반으로한다"고
덧붙였다. "이 아이디어는 mysql의 group by 아이디어와 유사하다"

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

마지막 씨 옹 결론 계속 "입력 데이터가 데이터 유닛의 맵핑 (맵 방식)에 따라 수행되고, 그 후 출력 Kv 값 쌍은 그룹의 입력 부로 산출 된 최종 출력을 감소시킨다."
흰색 알아 계속해서 질문하십시오 : "음, mapreduce의 일반적인 프로세스를 이해합니다. hdfs에서 데이터를 가져 오는 방법과 상호 작용하는 방법은 무엇입니까?"
Mr. Meow : "예, Xiaobai, 당신은 꽤 고급 인 것 같습니다. mapreduce 상호 작용 다이어그램을 살펴 보겠습니다. mapreduce는 4 단계로 나뉩니다. "

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

4 단계로 나뉩니다.

  1. 맵 태스크는 분할을 사용하여 hdfs에서 데이터를 가져오고 분할은 맵 방법에 해당하며 키, 값 및 파티션 형식 데이터를 출력합니다.
  2. 맵 작업은 검색된 데이터를 메모리, 파티션에 넣고 정렬합니다.
  3. 축소 작업은 이제 키가있는 파티션을 알고 해당 파일 파티션 (dfs)에서 데이터를 가져옵니다.
  4. 그리고 최종 출력 데이터를 계산합니다.

"왜지도가 hdfs에서 데이터를 직접 가져 오지 않는데 분할을 사용하여 가져와야합니까?"Xiaobai가 고개를 긁적이며
Meow 씨를 바라 보았습니다. Meow 씨는 고개를 끄덕이며 Xiaobai에게 말했습니다. "이 질문은 매우 좋습니다. 분할의 기본 크기는 hdfs와 같습니다. 블록 블록 중 하나는 약 64M이지만 분할 크기는 다양한 계산 유형을 처리하도록 조정할 수 있습니다.
CPU 바운드 (계산 집약적)를 실행할 때 분할을 더 작게 설정할 수 있으며 다중 분할은 1 블록에 해당합니다. 이것은 계산 속도를 높일 수 있습니다

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

IO 바인딩 (IO 집약적)을 실행하면 분할을 조금 더 크게 설정할 수 있으며 1 분할은 N 블록 블록에 해당하므로 IO 읽기 및 쓰기의 효율성을 향상시킬 수 있습니다.

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

CPU-bound(计算密集型):
假设有一道数学题,题干只有一行字,
读题花费1秒,解题需要1个月才能解出来,
这样就是CPU-bound。(CPU利用率几乎100%)。
IO bound(IO密集型):
假设有一道数学题,题干有史记那么厚,
读完花费2个月,问题只是让你回答1+1=?,
这样就是I/O-bound。(CPU IDLE状态)。

Xiaobai는 다음과 같이 결론을 내 렸습니다. "분할은 맵의 병렬 처리를 제어 할 수 있으며 활성화되는 맵 작업 수, 하나의 맵 방법에 대해 하나의 분할 및 출력 k, v, p 키-값 쌍을 결정합니다."
"여기서 kv 키를 출력하려는 ​​이유는 무엇입니까? 값 쌍은 메모리에 배치됩니다. 메모리 속도가 하드 디스크의 데이터가 최종적으로 디스크에 기록됩니다 10 시간이지만.하지 않습니다이 평균 복용 바지 끄고 방 귀? "Xiaobai가 걱정스럽게 물었다,
"음, 단어 대략적인 아이디어는 대략적이지 않습니다. 여기서 맵에서 출력 한 kv 키-값 쌍을 100M 메모리에 넣습니다. 중요한 작업도 수행됩니다. k, v, p 데이터를 정렬하고 파티션 p 아래에 데이터를 정렬하는 것입니다. 그것들을 합치면 동일한 파티션의 k가 정렬되어 병합 정렬에 다음 감소가 사용됩니다. "Meow가 설명했습니다.
"천천히, 너무 헷갈려요. 예를 하나 들어
보겠습니다. " "다음 예를보고 java \ python \ mysql의 발생 횟수를 세어 보겠습니다."Meow 씨는 빠르게 그림을 그렸습니다.

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

Imput 단계 : java, python 및 mysql의 저장 파일 위치가
hdfs 블록 저장됩니다 . Split 단계 : split을 사용하여 hdfs에서 파일을 자르고 그중 파일 파티션은 0, 2, 3, 15, 16, 17, 205입니다.
저장 의 내용을 자바 \ 파이썬 \ MySQL을 상기 지도 단계 : 출력 자바 \ 파이썬 \ MySQL의 예 KVP 키 - 값 쌍의 출력에 대한 각 파티션 정보를 포함하는 데이터 : 자바, 1,0 수단 자바 파티션 0에 저장된 정보 1
셔플 단계 : 메모리에서 동일한 데이터 세트를 정렬합니다. 예 : java가 파티션 0, 3, 15 및 205에 표시됨,
단계 감소 : 최종 감소 작업이 지정된 파일 파티션에 대한 셔플 단계의 출력에 따라 정렬됩니다. 해당 파일 가져 오기
"놀랍습니다. 메모리 정렬이 정말 중요한 것 같습니다. 파일 읽기 수를 효과적으로 줄입니다. 한 번에 여러 번 읽으면 해당 처리 속도가 빨라집니다."Xiaobai는 갑자기 깨달았습니다.

"또 다른 질문이 있습니다. 위의 예에서 키의 수는 3 (java \ python \ mysql)이고 감소 작업의 수도 3입니다. 키의 수가 감소의 수와 같습니까?"라고 Xiaobai가 물었습니다. 타오,

"관찰은 매우 조심 스럽습니다. 감소의 수는 프로그래머의 코드에 의해 제어되지만 키의 수는 감소의 수와 완전히 동일하지 않습니다. 키가 100,000 개이면 어떻게합니까? 그러면 감소의 수에는 100,000이 필요합니다. 확실히 리소스가 그리 많지 않기 때문에 일반적으로 특정 서버 리소스의 축소 실행기 수에 따라 결정됩니다. "라고 Meow는 덧붙였습니다.

"또한 키의 데이터 볼륨이 균등하게 분포되지 않으면 데이터 스큐 문제가 발생할 수 있습니다. 키 2 개-남성 1 개, 여성 1 개이면 남성 데이터 볼륨은 10T, 여성 데이터 볼륨은 10T입니다. 데이터는 1G에 불과합니다.이 경우 시스템이 동일한 키를 처리하기 위해 reduce를 따르는 경우 동일한 키가 동일한 감소 실행기에 할당 된 다음 하나의 감소 실행기가 10T의 데이터를 처리하고 다른 하나는 감소가 실행됩니다. 프로세서는 1G 데이터를 처리하며 이는 데이터 기울기가됩니다.”Meow는 계속해서 덧붙였습니다.

"해결 방법, 데이터가 왜곡되어 있습니다"라고 Xiaobai가 물었습니다.
"그럼 다음 주문에 대해 말씀 드리겠습니다 ~"

WeChat 공개 계정에 더 많은 건조 제품이 있습니다. [Data Ape Wen Da]

시계는 공식 확실한 가이드를 하둡 수

하드 코어 맵리 듀스 원리 분석, 그냥 읽어보세요

추천

출처blog.51cto.com/14974545/2543122