보통 빅데이터를 저장하는 하둡시스템에 관련된 벤더 회사가 언급되면 항상 거론되던 빅3 회사가 있습니다.
(출처: http://daitso.kds.co.kr/60628/)

  • 클라우데라
  • 호톤웍스
  • MapR
호톤웍스 -암바리사용 또는 아래와 같이 수동 설치 가능

설치 정보

Java버전JDK 8u161
설치경로/usr/local/java
Hadoop버전3.0.0
설치경로/usr/local/hadoop

자바 설치

하둡 배포판의 벤더가 인증한 운영체제, 자바, 하둡의 조합을 반드시 확인한 후 신중히 선택.(참고:Hadoop위키 )

Hadoop 3.0.0에 대한 Java 버전은 8을 사용함. (Minimum required Java version increased from Java 7 to Java 8)


유닉스 사용자 계정 생성

다른 서비스와 하둡 프로세스를 구분하기 위해 하둡 전용 사용자 계정을 생성하는것이 좋음.

HDFS, 맵리듀스, YARN서비스는 일반적으로 hdfs, mapred, yarn과 같은 사용자 계정으로 실행됨. → 동일한 hadoop 그룹에 속해야 함

우리는 편의상 hadoop 계정을 이용하여 설치 진행함

VM 구성

os : ubuntu 14.04.  2 core 4G , root 20G, data 80G  VM 4 대 구성

vm host 이름
hadoop01 # Name 노드
datanode01
datanode02
datanode03
  • hdfs data 영역을 위해 /dev/xvdb: 85.9 GB 를 /data/vol1 에  mount 수행

datanodes
hadoop@datanode01:/datasudo fdisk -l
Disk /dev/xvdb: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
Disk /dev/xvdb doesn't contain a valid partition table
 
Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ac649
 
    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048     2000895      999424   83  Linux
/dev/xvda2         2000896     6000639     1999872   82  Linux swap / Solaris
/dev/xvda3         6000640    41940991    17970176   83  Linux
hadoop@datanode01:/datamount
/dev/xvda3 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/xvda1 on /boot type ext4 (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
none on /proc/xen type xenfs (rw)
/dev/xvdb on /data/vol1 type ext4 (rw)

하둡설치

다운로드

압축해제

/usr/local, /opt 등 경로에 압축 해제

홈디렉토리는 NFS로 마운트된 경우가 많으므로 하둡 사용자의 홈 디렉토리(/home/hadoop)에 하둡을 설치하는 것은 좋지 않다.


cd /usr/local
sudo tar xzf hadoop-x.y.z.tar.gz


하둡 파일 소유자를 hadoop 사용자와 hadoop그룹으로 변경

sudo chown -R hadoop:hadoop hadoop-x.y.z

환경변수에 HADOOP_HOME 추가

/home/hadoop/.bashrc
export HADOOP_HOME=/usr/local/hadoop-x.y.z
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

SSH구성

원활한 작업을 위해 클러스터에 있는 모든 머신에서 hdfs와 yarn사용자 계정이 암호없이도 접속할 수 있는 SSH설정을 미리 해두는 것이 좋음.(하둡2.0이후 버전에서 mapred 사용자 계정은 SSH를 사용하지 않음)

RSA공개키/개인키 쌍 생성

hdfs 계정과 yarn 계정으로 아래의 명령어를 총 두 번 실행.

ssh-keygen -t rsa -f ~/.ssh/id_rsa
  • 개인키 : -f옵션으로 지정된 ~/.ssh/id_rsa 파일
  • 공개키 : .pub 확장자 추가된 ~/.ssh/id_rsa.pub


클러스터 내에서 접속할 모든 컴퓨터의 ~/.ssh/authorized_keys 파일에 공개키 추가

  • 사용자의 홈 디렉토리가 NFS 파일 시스템에 있는경우 
    아래 명령어를 실행하여 클러스터 내의 모든 컴퓨터가 키를 공유 하도록 만들 수 있다.(hdfs계정으로 수행한 후 yarn계정으로 수행)

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  • 사용자의 홈 디렉토리가 NFS 파일 시스템에 없는 경우

    ssh-copy-id 등 다른 방법으로 공개키를 공유.(ssh-copy-id 사용법)

ssh-agent의 실행 여부를 확인 하고, 마스터에서 워커 컴퓨터로 ssh접속이 되는지 확인.

ssh-add 명령을 실행하여 암호 저장. 암호를 저장한 후에는 암호를 입력하지 않고도 워커 컴퓨터로 ssh접근 가능.

호스트 설정

각 서버의 /etc/hosts 파일 아래 각 서버의 호스트명과 IP를 설정한다.

/etc/hosts
172.27.0.121 hadoop01
172.27.0.32 datanode01
172.27.0.95 datanode02
172.27.0.49 datanode03

하둡 환경 설정

설정 관련 파일은 하둡 기본 디렉토리 하위의 etc/hadoop/ 디렉토리에 위치.

--config 옵션(HADOOP_CONF_DIR 환경변수 설정과 동일 기능)으로 로컬 파일시스템의 특정 디렉터리를 지정하여 데몬을 실행하면 설정 디렉터리를 다른 곳으로 옮길 수 있음.

파일명
형식
설명
hadoop-env.shBash 스크립트하둡구동 스크립트에서 사용하는 환경변수
mapred-env.shBash 스크립트맵리듀스를 구동하는 스크립트에서 사용하는 환경변수
(hadoop-env.sh에서 재정의)
yarn-env.shBash 스크립트YARN을 구동하는 스크립트에서 사용하는 환경변수
(hadoop-env.sh에서 재정의)
core-site.xml하둡설정XMLHDFS, 맵리듀스, YARN에서 공통적으로 사용되는 I/O 설정과 같은 하둡코어를 위한 환경설정 구성
hdfs-site.xml하둡설정XML네임노드, 보조 네임노드, 데이터노드 등과 같은 hdfs 데몬을 위한 환경 설정 구성
mapred-site.xml하둡설정XML잡 히스토리 서버 같은 맵리듀스 데몬을 위한 환경 설정 구성
yarn-site.xml하둡설정XML리소스매니저, 웹어클리케이션 프록시서버, 노드매니저와 같은 YARN데몬을 위한 환경 설정 구성
workers (slaves)일반텍스트데이터노드와 노드매니저를 구동할 컴퓨터의 목록
hadoop-metrics2.propertiesjava 속성메트릭의 표시를 제어하기 위한 속성
log4.properties자바 속성시스템 로그, 네임노드 감사 로그, jvmㅣ 프로세스의 작업로그
hadoop-policy.xml하둡설정XML하둡을 보안 모드로 구동할 때 사용되는 접근 제어 목록에 대한 환경 설정 구성

설정 파일 변경

$HADOOP_HOME/etc/hadoop 디렉토리 안에 있는 아래 네 개의 파일의 설정을 변경한다.

core-site.xml
<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://hadoop01:9000/</value>
   </property>
</configuration>
mapred-site.xml
<configuration>
   <property>
      <name>mapred.job.tracker</name>
      <value>hadoop01:9001</value>
   </property>
<property>
        <name>mapred.framework.name</name>
        <value>yarn</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
   <property>
      <name>dfs.replication</name>
      <value>3</value>
   </property>
    <!-- name node의 메타데이터 저장경로 -->
    <property>
       <name>dfs.namenode.name.dir</name>
       <value>/data/vol1</value>
   </property>
 
 
    <!-- data node 블록 저장 경로 -->
   <property>
       <name>dfs.datanode.data.dir</name>
       <value>/data/vol1</value>
   </property>
</configuration>
  • dfs.datanode.data.dir : data node 에 hdfs 실제 파일이  저장되는 경로로 file:///data/vol1, file:///data/vol2 형태로  여러 경로 지정 가능하다.
yarn-site.xml
<configuration>
    <!-- Site specific YARN configuration properties -->
  <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop01:9010</value>
  </property>
  <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop01:9011</value>
  </property>
  <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop01:9012</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
      <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
  <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/tmp/hadoop/</value>
  </property>
</configuration>

설정파일 적용

rsync명령어를 이용하여 각 datanode 서버들에게도 동일한 설정이 적용되도록 한다.

sudo rsync -avxP /usr/local/hadoop/ hadoop@datanode01:/usr/local/hadoop/ #데이터노드1 적용
sudo rsync -avxP /usr/local/hadoop/ hadoop@datanode02:/usr/local/hadoop/ #데이터노드2 적용
sudo rsync -avxP /usr/local/hadoop/ hadoop@datanode03:/usr/local/hadoop/ #데이터노드3 적용

HDFS 파일시스템 포맷

HDFS를 처음 설치한 경우 사용하기 전에 반드시 파일시스템을 포맷해야 함.

포맷을 통해 저장 디렉토리와 네임노드 초기버전의 영속적인 데이터 구조 생성하는 작업. 데이터 노드는 초기 포맷과정에 전혀 관혀하지 않으므로 파일시스템의 크기를 미리 걱정할 필요 없음.

파일 시스템을 처음 포맷한 후 필요에 따라 증가하는 데이터노드의 수를 기주으로 파일시스템의 크기를 예측하면 됨.

hdfs 계정으로 다음 명령 수행

% hdfs namenode -format

데몬의 시작과 중지

start-all.sh, stop-all.sh 스크립트를 사용 하였습니다. 아래의 내용은 참고용으로 사용해 주세요.

HDFS데몬 시작

hdfs

hdfs계정으로 아래 명령을 실행하면 hdfs데몬이 시작됨.

% start-dfs.sh

yarn

리소스 매니저 역할을 맡은 컴퓨터에서 yarn 계정으로 다음 명령을 수행하여 yarn데몬 실행

% start-yarn.sh

리소스 매니저는 start-yarn.sh 스크립트가 수행된 머신에서만 실행됨.

start-yarn 스크립트 구성

  • 로컬 컴퓨터에서 리소스 매니저 실행
  • slaves 파일의 목록에 있는 각 컴퓨터에서 노드매니저를 시작한다.(3.0에서 workers로 변경)

하둡 제공 스크립트는 내부적으로는 hadoop-deamon.sh 스크립트를 이용하여 데몬을 시작하고 중지함.

앞의 스크립트를 사용하기로 결정한 경우 hadoop-deamon.sh 스크립트를 직접 호출하면 안된다.

mapred

% mr-jobhistory-daemon.sh start historyserver

데몬 상태 확인

Namenode
hadoop@hadoop01:/usr/local/hadoop/etc/hadoop$ jps
29973 SecondaryNameNode
31287 JobHistoryServer
29704 NameNode
1544 Jps
26943 ResourceManager
Namenode
hadoop@datanode01:/usr/local/hadoop/etc/hadoop$ jps
7649 NodeManager
11669 Jps
8508 DataNode

사용자 디렉토리 생성

사용자들이 하둡 클러스터에 접근할 수 있도록 각 사용자 별로 홈 디렉토리를 생성하고 해당 디렉토리에 대한 소유 권한을 부여한다.

% hadoop fs -mkdir -p /user/username
% hadoop fs -chown username:username /user/username

각 디렉토리에 대한 사용량 제한 설정. 아래 명령을 통해 특정 사용자의 디렉토리 용량을 1TB로 제한 가능.

% hdfs dfsadmin -setSpaceQuota 1t /user/username


'spark,kafka,hadoop ecosystems > apache.hadoop' 카테고리의 다른 글

hadoop 과 Yarn  (0) 2018.11.20
hadoop zipfile as input format  (0) 2018.11.20
hadoop - mapreduce  (0) 2018.11.20

+ Recent posts