클라우드 컴퓨팅은 인터넷을 통해 온디맨드 자원 또는 서비스를 제공 하도록 설계 되었습니다, 일반적으로 크기와 데이터 센터의 신뢰성에 따라. MapReduce 작업을 독립 작업의 컬렉션 나누어 대량의 데이터를 병렬로 처리 하기 위해 설계 된 프로그래밍 모델입니다. 그것은 병렬 프로그래밍, (예: Google의 BigTable, Hadoop, 및 분야) 기능, 주문형 클라우드 지원.
이 문서에서는 부하 분산 알고리즘을 무작위로 유체역학 부하 분산 기술, 아래에 자세히 설명 된 준수 사용 합니다. 비용 및 실제 서버;의 실제 수를 줄이기 위해 가상화를 활용 하 여 가상화를 사용 하 여 효율적인 물리적 컴퓨터 CPU 사용률을 달성 하는 더 중요 한 것은.
이 문서 대부분을, 클라우드 컴퓨팅 개념, 무작위 유체역학 부하 분산 기술, 그리고 Hadoop의 MapReduce 프로그래밍 모델의 일반적인 생각을 해야 합니다. 그것은 최고의 동시 프로그래밍에 대 한 기본적인 이해를가지고 그리고 Java™ 또는 다른 객체 지향 언어의 프로그래밍 지식을 이해 하는 데 도움이 됩니다.
이 기사에서는 MapReduce 알고리즘을 구현 하는 시스템 갖추어야 다음 소프트웨어:
1입니다. 0.20.1 둡입니다.
2. 이클립스 IDE 3.0 이상 (또는 합리적인 응용 프로그램 개발자 7.1).
3입니다. 우분투 8.2 보다 더입니다.
전에 우리는 MapReduce 알고리즘으로 다이빙, 우리 거 야 기본 클라우드 아키텍처, 로드 밸런싱, MapReduce, 빌드하고 병렬 프로그래밍에서 적어도이 기사에 대 한.
클라우드 아키텍처: 기본 내용
그림 1 플랫폼, 소프트웨어, 및이 문서에 대 한 목표를 설정 달성 하기 위해 그들을 사용 하는 방법을 포함 하 여 완전 한 시스템 정보를 보여 줍니다.
그림 1입니다. 클라우드 아키텍처
당신이 볼 수 있듯이, 우리 우분투 9.04를 사용 하 여 및 운영 체제, 플랫폼으로 8.2 Hadoop 0.20.1, 이클립스 3.3.1, 및 썬 자바 6; 프로그래밍 언어 자바를 사용 이며 HTML, JSP, XML을 사용 하는 스크립팅 언어.
클라우드 스키마 마스터 노드와 하위 노드가 있다. 이 구현에서 주 서버를 유지 하 고 클라이언트 요청을 얻은 처리 요청의 종류에 따라.
그림 2에서 볼 수 있습니다, 검색 요청은 Hadoop Namenode에 전달 됩니다. 그런 다음 Hadoop Namenode는 검색 및 인덱싱 작업, 많은 맵과 Reduce 프로세스를 시작 합니다. 특정 검색 키워드 MapReduce 작업 완료 후 Namenode 서버에 출력 값을 반환 하 고 클라이언트를 제공 합니다.
그림 2입니다. 검색 및 인덱싱 지도 및 감소 기능 수행
특정 소프트웨어를 요청 하는 경우에 특정 소프트웨어 및 소프트웨어 임대 기간을 사용 하는 고객 테 넌 트 ID, 결제 수수료, 자격 기준 확인 단계 완료 됩니다. 서버는 다음 요청을 제공 하 고 사용자 소프트웨어의 특정 조합을 사용할 수 있습니다.
이 하나의 소프트웨어 인스턴스 여러 임차인을 검색할 수 있습니다 SaaS의 멀티 테 넌 트 기능을 제공 합니다. 이 방법에서는, 소프트웨어 이미지의 동일한 집합 거주자 ID에 따라 다른 인스턴스 빌드 생성
이러한 서비스는 클라이언트가 Hadoop, 이클립스, 그리고 파일을 검색할 때 사용 되는 운영 체제 또는 특정 소프트웨어를 사용 하 여 같은 플랫폼을 사용 합니다 의미 합니다. 또한, 데이터 (데이터베이스 또는 파일)를 저장 하기 위해 클라이언트는 클라우드에서 데이터 센터 (IaaS) 메모리 공간을 차지 해야 합니다. 모든이의 최종 사용자에 게 투명 합니다.
유체역학 부하 분산 무작위: 기본 내용
부하 분산은 다른 리소스를 사용 하 여 기존 리소스 유휴 하지는 보장 하기 위해 사용 됩니다. 부하 분배 균형, 상대적으로 가벼운 로드 대상 노드 (초과 작업)와 소스 노드에서 부하를 마이그레이션할 수 있습니다.
실행 시 부하 분산을 적용 하는 경우 동적 이라고 실행 노드 선택에 따라 직접적 또는 반복적으로 로드 균형 조정이 구현할 수 있습니다:
1. 반복적인 접근 방식을 최종 대상 노드가 여러 반복 단계를 결정합니다.
2. 직접적인 방법 1 단계에서 최종 대상 노드를 선택합니다.
이 종이 무작위 유체역학 부하 분산 방법, 둘 다 직접 및 반복 방법을 이용 하는 하이브리드 방법 사용 합니다.
MapReduce: 기본 내용
MapReduce 프로그램은 많은 양의 데이터를 병렬로 계산 하는 데 사용 됩니다. 여러 컴퓨터 간에 분산 작업을 해야 합니다. Hadoop이 프로그래밍 패러다임을 구현 하는 체계적인 방법을 제공 합니다.
계산 출력 키/값 쌍의 집합을 생성 하는 키/값 쌍의 집합을 입력 해야 합니다. 관련 된 두 가지 기본 작업 계산: 지도 및 감소.
사용자가 작성 한 지도 작업 입력을 요구 하 고 중간 키/값 쌍의 집합을 생성. MapReduce 라이브러리 같은 중간 key # 1와 관련 된 모든 중간 값을 결합 하 고 감소 기능에 그들을 전달 합니다.
또한 사용자 작성 된 Reduce 함수는 #1 중간 키와 해당 키에 대 한 값 집합을 허용합니다. 그것은 잠재적으로 더 작은 값으로이 값을 병합합니다. 일반적으로, 하나는 0 또는 1의 값을 출력에 각각에 대 한 생성 호출을 줄이기 위해. 중간 값은 반복자 (프로그래머가 특정 구현을 무시 하 고 컬렉션의 모든 요소를 통과 허용 하는 개체)를 통해 감소 함수에 의해 사용자에 게 제공 됩니다. 이 목록을 메모리에 맞게 너무 큰 값을 처리할 수 있습니다.
예를 들어 WordCount 문제를 가져가 라. 즉, 큰 파일 집합에서 각 단어의 발생 수를 계산 됩니다. 매퍼 및 감속 기 함수 코드 목록 1에에서 표시 됩니다.
1을 목록입니다. 지도 및 WordCount 문제 해결에 대 한 감소
매퍼 (파일 이름, 파일 내용):
파일 내용에 각 단어:
(단어, 1)을 방출
감속 기 (단어, 값):
합계 = 0
값 각 값에 대 한:
합계 = 합계 + 값
방출 (단어, 합계)
MAP 함수는 각 단어의 관련된 항목을 내보냅니다. Reduce 함수는 방출 특정 단어 수를 합계 한다. 이 기본 기능을 클러스터에 내장 하는 경우 쉽게 변환할 수 있습니다 고속 병렬 처리 시스템으로.
이전에 완료 된 데이터를 분산된 환경에서 일반적으로의 많은 수에 계산을 수행합니다. Hadoop은 간단한 프로그래밍 모델을 사용 하면 신속 하 게 작성 하 고 분산된 시스템 테스트 사용자에 고유-데이터와 컴퓨터, 그로 인하여 처리는 효율적이 고, 자동 할당 CPU 커널의 기본 병렬 처리를 활용 하 고.
우리의 생각 밖으로 정렬 보자. 앞에서 설명 했 듯이 Hadoop 클러스터에는 다음과 같은 노드가 있습니다.
1. NameNode (클라우드 마스터 노드)
2. DataNodes (하위 노드)
클러스터에서 노드는 로컬 입력된 파일이 사전 로드 된다. MapReduce 프로세스를 시작할 때 Namenode는 Jobtracker 프로세스를 사용 하 여 tasktracker 과정을 통해 datanodes에 의해 수행 되어야 하는 작업을 할당. 여러 지도 프로세스 각 datanode에서 실행 되 고 중간 결과 (WordCount 문제)에서 컴퓨터에 있는 파일의 단어 수를 생성 하는 링커 프로세스에 제공 됩니다. 값은 중단 하 고 감소 프로세스에 전송 다음 대상 문제의 최종 출력이 생성 됩니다.
부하 분산을 사용 하는 방법
부하 분산 노드 로드 임계값 수준을 초과 하는 경우 유휴 노드에서 부하를 균등 하 게 분산 하는 데 도움이 됩니다. MapReduce 알고리즘을 실행 하는 경우 부하 균형 중요 하지 않습니다, 비록 대형 파일 처리 및 하드웨어 리소스 사용률을 중요 하 게 필수적 이다. 주목할 만한 역할 하드웨어 사용률을 증가 하 고 리소스 제약 조건으로 성능을 향상 시킬 것입니다.
일부 데이터 노드는 전체 또는 새로운 빈 노드가 클러스터에 가입, 모듈은 Hadoop 분산 파일 시스템 클러스터에 디스크 공간 사용량의 균형을 구현 됩니다. 임계값에 도달 하면 분산 장치 (클래스 분산 도구) 시작,이 매개 변수는 0至100%, 분수 고 기본값은 10%. 이 옵션 클러스터 균형 균형 클러스터; 작은 임계값, 더 그리고 더 이상 분산 실행 목표를 설정 합니다. (참고: 임계값 응용 프로그램 작성 하 고 동시에 파일을 삭제할 수 있기 때문에 클러스터의 상태를 균형 수 없습니다 그래서 작은 수)
각 데이터 노드에 대 한 전체 용량 (라는 노드 사용률) 공간의 비율 전체 공간 (클러스터의 사용률) 클러스터의 사용 공간의 비율이 다른 임계값을 초과 하지 않는 경우 클러스터 균형으로 간주 됩니다.
모듈 낮은 활용도, 노드를 높은 사용률 데이터 노드의 데이터 블록을 이동 하 고 각 반복에서 노드 이동 하거나 반복 당 20 분 더 이상 용량을 초과 하지 않는 임계값 규모를 받을.
이 구현에서는 노드는 높은 사용률, 평균 사용률로 분류 하 고 미달. 부하 균형 각 노드에 의해 이용 금액에 따라 클러스터 노드 간에 이동 됩니다. 모듈은 다음과 같은 방법으로 작동합니다.
1. 선호, 그것은 인접 노드 정보를 가져옵니다.
1. Datanode 부하 임계값 수준에 추가 될 때에 Namenode는 요청을 보냅니다.
2. Namenode 특정 datanode의 가장 인접 노드에 대 한 부하 수준 정보를 가져옵니다.
3. Namenode는 부하를 비교 하 고 특정 datanode를 가장 유휴 이웃 노드에 대 한 자세한 정보를 보냅니다.
2. 다음, Datanodes 작업을 시작:
1. 각 datanode 자체 부하의 가까운 노드의 부하의 합계를 비교합니다.
2. 경우 Datanode 부하 레벨의 인접 노드 보다 크면 로드 대상 노드 (직접 인접 노드 및 기타 노드) 무작위로 선택 것입니다.
3. 그런 다음 대상 노드를 노드 요청을 보냅니다.
3. 마지막으로, 요청을 받고:
1. 각 노드는 로드 요청을 받을 버퍼에 유지 됩니다.
2. 메시지 전달 인터페이스 (MPI)이이 버퍼를 관리합니다.
3. 주요 스레드 버퍼 큐에 수신 고 수신 요청을 처리 합니다.
4. 노드 로드밸런싱 실행 단계에 들어간다.
성능 평가
입력된 파일을 각각 다른 크기의 다른 세트를 제공 하 고 단일 노드 2 노드 클러스터에서 MapReduce 작업을 수행 합니다. 해당 실행 시간을 측정, 우리는, 지금까지 많은 수의 입력된 파일을 처리 하는 더욱 효율적인 방법은 클러스터에서 MapReduce를 실행 가정할 수 있습니다.
그림 3의 다이어그램에서는 우리가 각 노드에서 실행 되는 성능 결과를 보여 줍니다.
그림 3입니다. MapReduce 로드 균형 조정 클러스터에서 더 효과적 이다
결론
우리의 Hadoop MapReduce 및 로드 균형 조정 실험 2 결과 결론을 얻을 수 있습니다.
1. 클라우드 환경에서 MapReduce 구조는 큰 데이터 집합의 처리 효율을 향상 시킵니다. 대신, 당신은 반드시 이러한 처리량 증가 비 클라우드 시스템에 표시 되지 않습니다.
2. 때 dataset은 작은, MapReduce 및 로드 균형 조정 필요가 없습니다 상당한 영향 클라우드 시스템 처리량에서 증가에.
따라서 클라우드 시스템에서 대용량의 데이터 처리를 계획할 때 MapReduce 스타일 병렬 처리의 조합을 고려 하 고 부하 분산.
"독서 권장": 1. Hadoop 시스템 기반 MapReduce 데이터 흐름 최적화
2. 하 둡 기술 센터