Hadoop 프레임 감지

5147 단어 Hadoop선반감지
배경
최근 에 예전 에 배 웠 던 빅 데이터 관련 지식 을 정리 하고 있 습 니 다. 오늘 은 Hadoop 의 프레임 감지 부터 Hadoop 프레임 감지 실현 은 두 가지 방식 이 있 습 니 다. 1) 자바 인터페이스 DNS ToSwitchMapping 을 실현 한 다음 에 core - site. xml 설정 파일 에 net. topology. node. switch. mapping. impl 을 설정 합 니 다. 그 값 은 DNS ToSwitchMapping 을 실현 하 는 모든 경로 입 니 다. 예 를 들 어:

             net.topology.node.switch.mapping.impl
             com.inspur.rackawar.test.MyDNSToSwitchMapping
 

2) 대부분의 설 치 는 새로운 인 터 페 이 스 를 추가 로 실현 할 필요 가 없습니다. 기본 적 인 ScriptBasedMapping 을 사용 하면 됩 니 다. 사용자 가 정의 하 는 스 크 립 트 를 실행 하여 매 핑 관 계 를 설명 합 니 다.스 크 립 트 의 저장 경 로 는 core - site. xml 파일 의 설정 항목 topology. script. file. name 을 통 해 제어 합 니 다.매우 복잡 한 업무 가 아니라면 저 는 개인 적 으로 두 번 째 방식 을 사용 하 는 것 을 추천 합 니 다. 유연 하고 간단 합 니 다.Hadoop 의 분포 식 클 러 스 터 는 보통 매우 많은 서버 를 포함 합 니 다. 프레임 슬롯 위치 와 교환기 망 의 제한 을 받 아 보통 대형 분포 식 클 러 스 터 는 여러 개의 프레임 을 뛰 어 넘 고 여러 프레임 의 서버 가 공동으로 분포 식 클 러 스 터 를 구성 합 니 다.프레임 안의 서버 간 의 네트워크 속 도 는 보통 크로스 프레임 서버 간 의 네트워크 속도 보다 높 고 프레임 간 서버 의 네트워크 통신 은 상층 교환기 간 네트워크 대역 폭 의 제한 을 받는다.구체 적 으로 Hadoop 클 러 스 터 에 대해 hadop 의 HDFS 가 데이터 파일 에 대한 분포 식 저장 은 블록 블록 블록 에 따라 저장 되 기 때문에 각 block 은 여러 개의 복사 본 (기본 값 은 3) 이 있 고 데이터 의 안전 과 효율 을 위해 hadop 은 기본적으로 3 개의 복사 본 에 대한 저장 전략 은 첫 번 째 block 복사 본 을 client 가 있 는 node 에 두 는 것 입 니 다.(client 가 클 러 스 터 범위 에 있 지 않 으 면 첫 번 째 node 는 무 작위 로 선택 합 니 다). 두 번 째 복사 본 은 첫 번 째 노드 와 다른 프레임 에 있 는 node 에 놓 여 있 습 니 다 (무 작위 선택)세 번 째 복사 본 은 첫 번 째 복사 본 이 있 는 노드 와 같은 프레임 의 다른 노드 에 놓 여 있 습 니 다. 더 많은 복사 본 이 있 으 면 무 작위 로 클 러 스 터 node 에 놓 습 니 다. 이러한 정책 은 이 block 소속 파일 에 대한 접근 이 이 rack 에서 우선 찾 을 수 있 도록 보장 합 니 다. 전체 rack 에 이상 이 발생 하면 다른 rack 에서 이 block 의 복사 본 을 찾 을 수 있 습 니 다. 이 정도 면 충분 합 니 다.효율 적 이 고 데이터 의 용 오 를 동시에 실현 했다.
그러나 hadop 이 프레임 에 대한 감 지 는 자가 적응 이 아 닙 니 다. 즉, hadop 클 러 스 터 는 특정한 slave 기계 가 어느 rack 에 속 하 는 지 스마트 감지 가 아니 라 hadop 의 관리자 가 인위적으로 hadop 의 어느 기계 가 어느 rack 에 속 하 는 지 알려 야 합 니 다. 그러면 hadop 의 namenode 가 초기 화 될 때 이 기계 와 rack 의 대응 정 보 를 메모리 에 저장 하여 사용 합 니 다.모든 HDFS 의 블록 작업 에 대해 datanode 목록 을 할당 할 때 (예 를 들 어 3 개의 block 이 3 대의 datanode 에 대응 하 는) datanode 정책 을 선택 하여 hadop allocate block 정책 을 수행 합 니 다. 가능 한 한 세 개의 사본 을 다른 rack 에 분포 합 니 다. 다음 문 제 는 hadop namenode 의 어떤 slaves 기계 가 어떤 rack 에 속 하 는 지 알려 주 는 것 입 니까? 다음은 설정 절차 입 니 다.
배치 하 다.
기본 적 인 상황 에서 hadop 의 프레임 감지 가 활성화 되 지 않 았 습 니 다. 따라서 일반적인 상황 에서 hadop 클 러 스 터 의 HDFS 는 기 계 를 선택 할 때 무 작위 로 선택 합 니 다. 즉, 데 이 터 를 쓸 때 hadop 은 첫 번 째 데이터 Block 1 을 rack 1 에 썼 을 가능성 이 높 습 니 다. 그리고 무 작위 로 선택 하여 Block 2 를 rack 2 에 기록 하 였 습 니 다. 이때 두 rack 사이 에 데이터 전송 이 생 겼 습 니 다.지 는 데이터, 그 다음 에 랜 덤 으로 block 3 를 rack 1 로 다시 썼 습 니 다. 이때 두 rack 사이 에 데이터 트 래 픽 이 한 번 더 생 겼 습 니 다. job 처리 데이터 의 양 이 매우 많 거나 hadop 에 푸 시 하 는 데이터 의 양 이 매우 많 을 때 이런 상황 은 rack 간 의 네트워크 트 래 픽 이 배로 상승 하여 성능 의 병목 이 되 어 작업 에 영향 을 줄 수 있 습 니 다.전체 클 러 스 터 의 서비스 까지 성능 이 좋 습 니 다. hadop 프레임 감지 기능 을 사용 하려 면 설정 이 매우 간단 합 니 다. namenode 가 있 는 기계 의 core - site. xml 설정 파일 에 옵션 을 설정 하 십시오.

            topology.script.file.name
            /software/hadoop/etc/hadoop/topology.py

이 설정 의 value 는 실행 가능 한 프로그램 으로 지정 되 어 있 습 니 다. 보통 스 크 립 트 입 니 다. 이 스 크 립 트 는 하나의 파 라 메 터 를 받 아들 여 값 을 출력 합 니 다. 받 아들 이 는 파 라 메 터 는 한 datanode 기기 의 ip 주소 이 고 출력 하 는 값 은 보통 이 ip 주소 에 대응 하 는 datanode 가 있 는 rack 입 니 다. 예 를 들 어 '/ dc1 / rack 1' 입 니 다. Namenode 가 시 작 될 때 이 설정 이 비어 있 는 지 여 부 를 판단 합 니 다.비어 있 지 않 으 면 프레임 으로 감 지 된 설정 을 표시 합 니 다. 이 때 namenode 는 설정 에 따라 이 스 크 립 트 를 찾 고 모든 datanode 의 heartbeat 를 받 을 때 이 datanode 의 ip 주 소 를 매개 변수 로 이 스 크 립 트 에 전송 하고 받 은 출력 을 이 datanode 가 속 한 프레임 으로 메모리 의 map 에 저장 합 니 다. 스 크 립 트 의 작성 에 대해 서 는 실제 네트워크 를 사용 해 야 합 니 다.척 박 과 프레임 정 보 를 잘 알 고 이 스 크 립 트 를 통 해 기계 의 ip 주 소 를 해당 프레임 에 정확하게 표시 할 수 있 습 니 다. 간단 한 실현 은 다음 과 같 습 니 다.
#!/usr/bin/python
#coding=utf-8
import sys

rack={"192.168.137.201":"/dc1/rack1",
          "192.168.137.202":"/dc1/rack1",
          "192.168.137.203":"/dc1/rack2",
          "192.168.137.204":"/dc1/rack2",
          "s201":"/dc1/rack1",
          "s202":"/dc1/rack1",
         "s203":"/dc1/rack2",
         "s204":"/dc1/rack2"
        }

if __name__=="__main__":
   print rack.get(sys.argv[1],"/default-rack")

호스트 이름 인지 ip 주소 인지 정확 한 문 서 를 찾 지 못 했 기 때문에 스 크 립 트 에서 호스트 이름과 ip 주 소 를 호 환 하 는 것 이 좋 습 니 다.
또한 이 python 파일 에 실행 권한 을 부여 해 야 합 니 다: chmod u + x topology. pychmod g + x topology. py
namenode 를 다시 시작 합 니 다. 설정 이 성공 하면 namenode 시작 로그 에서 출력 합 니 다:
2017 - 12 - 12 20: 47: 03, 923 INFO org. apache. hadop. net. NetworkTopology: Adding a new node: / dc1 / rack 1 / 192.168.13.201: 50010 이때 Hadoop 의 프레임 감지 가 활성화 되 었 음 을 설명 합 니 다. HADOOP 프레임 정보 명령 보기:
[hadoop@s200 hadoop]$ hdfs dfsadmin -printTopology
Rack: /dc1/rack1
   192.168.137.201:50010 (s201)
   192.168.137.202:50010 (s202)

Rack: /dc1/rack2
   192.168.137.203:50010 (s203)
   192.168.137.204:50010 (s204)

주의: python 스 크 립 트 는 반드시 Linux 서버 에 만들어 야 합 니 다. 그렇지 않 으 면 windows 가 생 성 된 후에 업로드 하면 예상 치 못 한 오류 가 발생 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기