Blog Content

    티스토리 뷰

    [Hadoop] Hadoop 완전분산모드 설치

    "[Hadoop] Hadoop 완전분산모드 설치"


    VirtualBox 에 4개의 Ubuntu 를 만든다.

    설치 시 사용자명은 hadoop 으로 한다.

    4개를 따로 설치하거나 1개를 만들어서 3개를 복제한다.

    각각 아래처럼 이름과 IP 주소를 사용할 예정. IP 주소는 각 VirtualBox에서 자동으로 생성되고 뒤에 2자리만 순서대로 변경해서 넣어주면된다.

    192.168.30.101 hadoop01

    192.168.30.102 hadoop02

    192.168.30.103 hadoop03

    192.168.30.104 hadoop04


    복제 전에 할 일

    hadoop01에 아래와 같이 먼저 설치한 후 복제해서 hadoop02 ~ hadoop04를 만든다.

    // vim 설치
    $ sudo apt-get install vim
    
    // 각각 Ubuntu 에 JDK 8 설치
    $ sudo add-apt-repository ppa:webupd8team/java
    $ sudo apt-get update
    $ sudo apt-get install oracle-java8-installer
    
    // 자바 환경설정. 아래 내용 입력 후 저장
    $ vim .bashrc
    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    



     

    VirtualBox 호스트 전용 어댑터 설정

    1. 전체 설정

    VirtualBox > 전역 도구(G) > 호스트 네트워크 관리자 > 만들기 > vboxnet0 > 192.168.57.1 > 어댑터 > o 수동으로 어댑터 설정 > IPv4 주소: 192.168.30.1 > IPv4 서브넷 마스크: 255.255.255.0

     

    2. 각 VM이 종료된 상태에서 어댑터 추가

    VM > 우클릭 > 설정 > 네트워크 > 어댑터 2 > v 네트워크 어댑터 사용하기 > 다음에 연결됨: 호스트 전용 어댑터 > 이름: vboxnet1 > 확인

     

    hadoop 복제



     

     

    3. 게스트 OS 네트워크 설정

    // ifconfig 로 체크한 이름 중 enp0s8 을 기준으로 수정하면 됨
    $ ifconfig
    



     

     

    // cat 으로 현재 정보 확인
    $ sudo cat /etc/network/interfaces
    
    // hadoop01 에서 vi 로 아래 내용 추가
    $ sudo vi /etc/network/interfaces
    
    auto enp0s8
    iface enp0s8 inet static
    address 192.168.56.101
    netmask 255.255.255.0
    network 192.168.56.1
    



     

     

    // hostname 수정
    $ sudo vi /etc/hostname
    hadoop01
    



     

     

    $ sudo reboot
    // 리부팅
    

     

    4. 호스트 OS 에서 ping 으로 체크하면 응답 OK

    $ ping 192.168.56.101
    
    // hadoop02 에서 vi 로 아래 내용 추가
    $ sudo vi /etc/network/interfaces
    
    auto enp0s8
    iface enp0s8 inet static
    address 192.168.56.102
    netmask 255.255.255.0
    network 192.168.56.1
    
    // hostname 수정
    $ sudo vi /etc/hostname
    hadoop02
    
    // 리부팅
    $ sudo reboot
    
    
    // hadoop03 에서 vi 로 아래 내용 추가
    $ sudo vi /etc/network/interfaces
    
    auto enp0s8
    iface enp0s8 inet static
    address 192.168.56.103
    netmask 255.255.255.0
    network 192.168.56.1
    
    // hostname 수정
    $ sudo vi /etc/hostname
    hadoop03
    
    // 리부팅
    $ sudo reboot
    
    
    // hadoop04 에서 vi 로 아래 내용 추가
    $ sudo vi /etc/network/interfaces
    
    auto enp0s8
    iface enp0s8 inet static
    address 192.168.56.104
    netmask 255.255.255.0
    network 192.168.56.1
    
    // hostname 수정
    $ sudo vi /etc/hostname
    
    hadoop04
    // 리부팅
    
    
    $ sudo vi /etc/hosts
    127.0.0.1     localhost
    192.168.56.101  hadoop01
    192.168.56.102  hadoop02
    192.168.56.103  hadoop03
    192.168.56.104  hadoop04
    



    hadoop02, hadoop03, hadoop04 에도 모두 같은 내용으로 hosts 파일 수정

    hadoop01, hadoop02, hadoop03, hadoop04 모두 openssh-server 설치한다.

    $ sudo apt-get install openssh-server
    



    // 아래 부분은 hadoop01 에서만 실행
    $ ssh-keygen -t rsa 
    
    # 엔터 3번
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
    $ ssh localhost 
    # 처음 한번만 yes, 두번째 접속시 부터는 안 물어봄.
    
    $ exit 
    # exit 로 꼭 나와야 함
    
    // hadoop02, hadoop03, hadoop04 에 키 복사
    $ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop02
    $ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop03
    $ ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@hadoop04
    
    



    // 접속 잘 되는지 확인
    $ ssh hadoop@hadoop02
    
    //hadoop 1.2.1 다운로드
    $ wget https://archive.apache.org/dist/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz
    
    // 압축 해제
    $ tar zxvf hadoop-1.2.1.tar.gz
    
    $ cd hadoop-1.2.1/
    $ cd conf
    $ vi hadoop-env.sh
    
    // 맨아래에 내용 추가
    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    export HADOOP_HOME=/home/hadoop/hadoop-1.2.1
    export HADOOP_HOME_WARN_SUPPRESS="TRUE"
    
    export HADOOP_HEAPSIZE=1024     // 메모리 설정
    export HADOOP_PID_DIR=/home/hadoop/hadoop-1.2.1/pids
    
    



     

    
    $ vi core-site.xml
    
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <!-- Put site-specific property overrides in this file. -->
    <configuration>
        <property>
            <name>fs.default.name</name>
            <value>hdfs://hadoop01:9000</value>
        </property>
    
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/hadoop-data</value>
        </property>
    </configuration>
    
    



    $ vi hdfs-site.xml
    
    // dfs.replication : 복제갯수
     
    
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <!-- Put site-specific property overrides in this file. -->
    
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value>    
        </property>
    
        <property>
            <name>dfs.http.address</name>
            <value>hadoop01:50070</value>
        </property>
        
        <property>
            <name>dfs.secondary.http.address</name>
            <value>hadoop02:50090</value>
        </property>
    </configuration>
    



     

     

    // 맵리듀스 설정
    $ vi mapred-site.xml
    
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <!-- Put site-specific property overrides in this file. -->
    
    <configuration>
        <property>
            <name>mapred.job.tracker</name>
            <value>hadoop01:9001</value>
        </property>
    </configuration>
    



     

    $ cd hadoop-1.2.1/conf
    $ ls
    // secondary namenode: hadoop02
    // slaves : datanode. hadoop02, hadoop03, hadoop04
    
    $ vi masters 
    hadoop02
    

    $ vi slaves
    hadoop02
    hadoop03
    hadoop04
    



    // 맨 상위로 이동
    $ cd ~
    
    // hadoop-1.2.1 통째로 압축
    $ tar zcvf hadoop.tar.gz hadoop-1.2.1 
    
    // hadoop02, hadoop03, hadoop04로 복사
    $ scp hadoop.tar.gz hadoop@hadoop02:/home/hadoop
    $ scp hadoop.tar.gz hadoop@hadoop03:/home/hadoop
    $ scp hadoop.tar.gz hadoop@hadoop04:/home/hadoop
    
    // 압축풀기
    $ ssh hadoop@hadoop02
    $ tar zxvf hadoop.tar.gz
    $ exit
    
    $ ssh hadoop@hadoop03
    $ tar zxvf hadoop.tar.gz
    $ exit
    $ ssh hadoop@hadoop04
    $ tar zxvf hadoop.tar.gz
    $ exit
    
    // 하둡 경로 설정 
    $ vim .bashrc
    export HADOOP_INSTALL=/home/hadoop/hadoop-1.2.1
    exprot PATH=$PATH:$HADOOP_INSTALL/bin
    



    $ exit
    
    
    // 리부트
    $ sudo reboot
    // hadoop 실행
    $ hadoop
    
    // 반드시 hadoop01 에서 실행
    $ hadoop namenode -format
    $ start-all.sh
    
    $ jps
    JobTracker
    Jps
    NameNode 
    // 3가지 떠있는 것 확인 가능
    // 나머지 hadoop2,3,4에서도 동일 명령어로 확인 가능
    
    // hadoop01, hadoop02, hadoop03, hadoop04 에서 jps 실행해서 확인
    // hadoop01은 NameNode, JobTracker
    // hadoop02은 SecondaryNameNode, DataNode, TaskTracker
    // hadoop03은 DataNode, TaskTracker
    // hadoop04은 DataNode, TaskTracker 가 보이면 OK
    
    // 반드시 종료 시켜야 함
    $ stop-all.sh 
    

     

     

     

    브라우저로 http://hadoop01:50070 으로 접속해서 HDFS 확인

    브라우저로 http://hadoop01:50030 으로 접속해서 MapReduce 확인



     

     

    'Programming > Data Engineering' 카테고리의 다른 글

    Hadoop wordCount example  (0) 2018.04.25
    HDFS의 기본 구조(HDFS Architecture)  (0) 2018.04.25

    Comments