Monday, October 23, 2017

분산 파일 시스템 다루기 @CentOS

배경

  • CentOS 환경에서 복수의 하드디스크로 DFS(분산 파일 시스템) 환경 구성하기

HDD 설정

  • HDD 확인
    • $ vi /proc/partitions
      • 가용한 모든 파티션을 확인
    • $ df -T
      • 현재 마운트된 파티션 및 종류 확인
    • $ ls /dev/disk/by-id/
      • 가용한 모든 디스크 확인
    • $ sudo fdisk -l
      • 현재 디스크 상태 확인
      • 또는 $ sudo fdisk -l /dev/sdb
  • partitioning 
    • 2TB 이상 디스크는 fdisk에서 파티셔닝 불가; parted 사용 필요
    • $ yum install parted
      • parted 설치
    • $ parted -l
      • 현재 파티션 정보 확인
    • $ parted /dev/sdb
      • 파티션 설정
      • $$ mklabel
        • gpt
      • $$ print
      • $$ unit TB
      • $$ mkpart primary 0.0TB 4.0TB
      • $$ print
      • $$ quit
  • 디스크 타입 포맷
    • $ sudo mkfs.ext4 /dev/sdb
      • mkfs.ext4는 root 권한에서(sudo -i 또는 /sbin을 path에 설정하여) 수행 가능.
  • 포맷된 디스크를 리눅스 특정 위치(=mounting point)에 마운트
    • 디스크를 마운트 시킬 때 noatime, nodirtime 방식으로 처리하는 것이 성능 개선.
      • 파일 access가 발생하는 시간(atime)을 매번 기록하면 성능 저하되므로.
    • $ cd /
    • $ sudo mkdir -p data/1
    • $ sudo mount /dev/sdb /data/1
    • $ sudo mkdir -p /data/1/dfs/dn
    • $ sudo chown -R ksb:ksb /data/1/dfs/dn
    • $ df -kh
      • 마운트된 상태 및 사용량 확인
    • (부팅 시 자동 로딩) $ blkid 
      • (디스크 확인) $ ls -l /dev/disk/by-uuid
  • 최종 결과 확인
    • $ cat /etc/fstab
      • 마운트된 상태 확인
        • 마운트가 되어있지 않다면 UUID 확인해서 추가해야함.
    • $ reboot

    참고

    • 파일시스템
      • ex3
        • Red Hat Enterprise Linux 5 기본 파일 시스템
        • 2.3TB 이상을 지원하지 않음.
        • 서브 디렉토리 최대 개수 32,000
      • ex4
        • Red Hat Enterprise Linux 6 기본 파일 시스템
        • 최대 16TB 지원
      • xfs
        • 16TB 이상의 파일도 지원
    • 여러개 디스크 하나로 묶기
      • LVM(Local Volumn Management)
        • 각 디스크별로 LVM 물리 볼륨 설정한 뒤
        • 볼륨 그룹 생성해서 LVM 물리 볼륨 선택
        • LVM 논리 볼륨 생성한 뒤 마운트 지점 설정
    • Hadoop
      • 64MB 블록 단위로 파일 보관
      • HDFS2.0부터는 Active-Standby 지원
      • Name Node의 경우, 자체적인 3배수 복제를 통해 고가용성 지원 --> 물리적 Disk 백업 불필요
      • 리눅스의 LVM 사용 금지
      • JBOD (just bunch of disks) vs RAID
      • RAID 구성
        • Name Node는 RAID 5 (또는 여유가 된다면 10)
        • Data Node는 JBOD >> RAID 0
    • RAID
      • 0 = Striping
        • 단점: 한쪽 디스크가 깨지면, 전체 데이터를 사용하지 못하게 됨. 
        • 참고 블로그1
        • $ mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
          • 2개의 하드 디스크를 raid level 0으로 md0이라는 이름으로 생성.
        • (확인) $ mdadm -D /dev/md0
          • (RAID 비활성화) $ madam -S /dev/md0
        • (포맷) $ mkfs.ext4 /dev/md0
        • (마운트) $ mkdir /mp | mount /dev/md0 /mp
        • (적절한 접근 권한 설정) $ sudo chmod -R 755 /media/New/hdfs/data
        • (적절한 접근 권한 설정) $ sudo chown -R user:user /media/New/hdfs/data
        • (부팅시 자동 마운트) $ mdadm -D -s /dev/md0 > /etc/mdadm.conf
        • (fstab에 정보 추가) $ vi /etc/fstab
    • 하둡에 새로운 하드 디스크 추가시
      • hdfs-site.xml 파일에 dfs.data.dir 부분에 새로운 마운트를 콤마로 구분하여 입력하기.
        • 예: /data/1/dfs/dn, /data/2/dfs/dn
      • 특정 data node만 사용하는 하드디스크라면 해당 data node 만 재시작. 만약, 전체 클러스터가 공유하는 하드디스크라면, dfs 자체를 재시작.

    No comments:

    Post a Comment

    Windows 10 High DPI 에서 Java application의 Font 조절

    Reference:  How do I run Java apps upscaled on a high-DPI display?  @superuser.com Summarize 1) Find java.exe you installed.  2) Righ...