티스토리 뷰

* 다음과 같이 3대의 서버를 이용해 구성예정

dw01 dw02 dw03
NameNode SecondaryNameNode  
NodeManager DataNode DataNode
ResourceManager    
JobHistoryServer    

 

  1. sudo 권한 얻기
    [wasadm@localhost ~]$ su - root             # 루트계정으로 변경
    [root@localhost ~]$ hostname dw01           # 호스트네임 등록
    [root@localhost ~]$ chmod +w /etc/sudoers   # 파일에 쓰기 권한 부여
    
    # vi는 파일 편집기로 /etc/hosts라는 파일을 열어서 편집하겠다는 의미로
    # 입력은 i버튼 클릭 후 가능하고
    # 작성후 ESC 버튼 누른 후 :wq 입력 enter를 치면 저장하고 다시 명령프롬프트 상태로 돌아옴
    [root@localhost ~]$ vi /etc/sudoers
    
    root	ALL=(ALL) 	ALL
    wasadm	ALL=(ALL)	ALL   <- 요고 추가
    
    [root@localhost ~]$ chmod -w /etc/sudoers   # 파알에 쓰기 권한 해제
    [root@localhost ~]$ su - wasadm​


  2. host 등록
    # sudo는 superuser(=root)의 (보안, 실행)권한을 다른 사용자에게 잠깐 부여 하는 것
    [wasadm@dw01 ~]$ sudo vi /etc/hosts
    
    192.168.108.128 dw01
    192.168.108.129 dw02
    192.168.108.130 dw03
  3. java 설치
    # yum은 패키지프로그램을 설치해주는 명령어로
    # install은 설치
    # -y 옵션은 설치과정에서 설치여부를 묻는데 y로 자동 입력하겠다는 의미
    [wasadm@dw01 ~]$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
    [wasadm@dw01 ~]$ java -version                                        #설치된 자바의 버전 확인


  4. zookeeper 설치
     * 주키퍼: 분산 시스템에서 시스템 간의 정보 공유, 상태 체크, 서버들 간의 동기화를 위한 락 등을 처리하는 서비스
     * 설치파일 다운로드: https://downloads.apache.org/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
    # 다운로드 받은 파일은 모두 usr/local/tmp에 둘 예정이므로 
    # 디렉토리를 생성하고 압축파일을 풀어줍니다.
    # mkdir은 디렉토리를 생성해주는 명령어
    p: 하위 디렉토리까지 모두 생성해줌
    [wasadm@dw01 ~]$ mkdir -p usr/local/tmp
    
    # cd : change directory, usr/local 디렉토리로 이동하겠다는 의미
    [wasadm@dw01 ~]$ cd usr/local
    
    # tar는 압축 관련 명령어로 -zxf는 tar.gz 파일의 압축을 해제 하겠다는 의미
    z: GZ 파일
    x: 압축해제
    f: 대상이 되는 파일을 지정
    [wasadm@dw01 local]$ tar -zxf tmp/apache-zookeeper-3.5.9-bin.tar.gz 
    [wasadm@dw01 local]$ mv apache-zookeeper-3.5.9-bin/ zookeeper-3.5.9 # 이름이 길어 변경
    [wasadm@dw01 local]$ cd zookeeper-3.5.9/
    [wasadm@dw01 zookeeper-3.5.9]$ sudo mkdir -p /DATA/zookeeper
    
    
    # chown: 디렉토리 소유권 변경, chown -옵션 계정명:그룹명 디렉토리
    R: 하위 디렉토리까지
    [wasadm@dw01 zookeeper-3.5.9]$ sudo chown -R wasadm:wasadm /DATA
    
    
    # configure 파일 복사하고 설정
    [wasadm@dw01 zookeeper-3.5.9]$ cp conf/zoo_sample.cfg conf/zoo.cfg
    [wasadm@dw01 zookeeper-3.5.9]$ vi conf/zoo.cfg
    
    dataDir=/DATA/zookeeper # 이건 수정
    
    # 이건 추가
    server.1=dw01:2888:3888
    server.2=dw02:2888:3888
    server.3=dw03:2888:3888
    
    # 서버별로 dw01:1,dw02:2,dw03:3의 myid를 부여해야 합니다.
    [wasadm@dw01 zookeeper-3.5.9]$ cd /DATA/zookeeper/
    [wasadm@dw01 zookeeper]$ vi myid
    1


  5. Hadoop 3.3.1 다운로드
    https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

  6. 다운로드 받은 파일은 모두 usr/local/tmp에 둘 예정이므로 디렉토리 생성하고 압축파일을 풀어줍니다.
    [wasadm@dw01 ~]$ mkdir -p usr/local/tmp
    [wasadm@dw01 ~]$ cd usr/local
    [wasadm@dw01 local]$ tar -zxf tmp/hadoop-3.3.1.tar.gz


  7. 각종 설정파일 수정
    * .bash_profile에 환경변수 등록
    [wasadm@dw01 local]$ vi ~/.bash_profile
    
    export ZOOKEEPER_HOME=$HOME/usr/local/zookeeper-3.5.9
    
    # 하둡
    export HADOOP_HOME=$HOME/usr/local/hadoop-3.3.1
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    export HADOOP_CONF=$HADOOP_HOME/etc/hadoop
    
    PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_COMMON_LIB_NATIVE_DIR
    
    export PATH
    export LD_LIBRARY_PATH
    
    
    # 환경변수 적용
    [wasadm@dw01 local]$ source ~/.bash_profile

    * hadoop-env.sh 수정
    [wasadm@dw01 local]$ cd $HADOOP_CONF
    [wasadm@dw01 hadoop]$ vi hadoop-env.sh
    
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
    export HADOOP_CONF_DIR=/home/wasadm/usr/local/hadoop-3.3.1/etc/hadoop

    * core-site.xml 수정
    [wasadm@dw01 hadoop]$ mkdir -p /DATA/tmp/
    [wasadm@dw01 hadoop]$ vi core-site.xml
    
    <configuration>
            <property> <!-- 클라이언트의 기본 파일시스템을 지정하는 URL -->
                    <name>fs.defaultFS</name>
                    <value>hdfs://dw01:9000</value>
            </property>
            <property>
                    <name>ha.zookeeper.quorum</name>
                    <value>dw01:2181,dw02:2181,dw03:2181</value>
            </property>       
            <property> <!-- 임시 파일이 저장될 경로 -->
                    <name>hadoop.tmp.dir</name>
                    <value>/DATA/tmp</value>
            </property>
    </configuration>

    * hdfs-site.xml 수정
    [wasadm@dw01 hadoop]$ vi hdfs-site.xml
    
    <configuration>
            <property> <!-- HDFS가 기록하는 파일의 블록을 복제할 개수 -->
                    <name>dfs.replication</name>
                    <value>3</value>
            </property>
            <property> <!-- 네임노드의 HDFS 파일시스템 메타데이터를 저장하는 경로 -->
                    <name>dfs.name.dir</name>
                    <value>file:///DATA/hdfs/namenode</value>
            </property>
            <property> <!-- 데이터노드의 HDFS 블록을 저장하는 경로 -->
                    <name>dfs.name.dir</name>
                    <value>file:///DATA/hdfs/datanode</value>
            </property>
             <property> <!-- 보조네임노드의 HTTP 서버의 호스트명(IP)과 포트 -->
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>dw02:50090</value>
            </property>        
            <property> <!-- tez hadoop3의 호환성 문제로 30s가 아닌 30으로 설정 -->
                    <name>dfs.client.datanode-restart.timeout</name>
                    <value>30</value>
            </property>
    </configuration>
    
    #  네임노드, 데이터노드 디렉토리 생성
    [wasadm@dw01 hadoop]$ sudo mkdir -p /DATA/hdfs/namenode
    [wasadm@dw01 hadoop]$ sudo mkdir -p /DATA/hdfs/datanode

    * mapred-site.xml
    <configuration>
            <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
            </property>
            <property>
                    <name>yarn.app.mapreduce.am.env</name>
                    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
            </property>
            <property>
                    <name>mapreduce.map.env</name>
                    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
            </property>
            <property>
                    <name>mapreduce.reduce.env</name>
                    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
            </property>
            <property>
                    <name>mapreduce.application.classpath</name>
                    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*,$HADOOP_MAPRED_HOME/share/hadoop/common/lib/*,$HADOOP_MAPRED_HOME/share/hadoop/yarn/*,$HADOOP_MAPRED_HOME/share/hadoop/yarn/lib/*,$HADOOP_MAPRED_HOME/share/hadoop/hdfs/*,$HADOOP_MAPRED_HOME/share/hadoop/hdfs/lib/*</value>
            </property>
    </configuration>​

    * yarn-site.xml
    <configuration>
    
    <!-- Site specific YARN configuration properties -->
            <property> <!-- 맵리듀스 어플리케이션을 위해 세팅되어야 하는 Shuffle 서비스명 -->
                    <name>yarn.nodemanager.aux-services</name>
                    <value>mapreduce_shuffle</value>
            </property>
            <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>dw01</value>
            </property>
            <property> <!-- .address 항목들은 모두 hostname:default포트가 정해져있다. 외우기 어려워서 적어두었다. -->
                    <name>yarn.resourcemanager.address</name>
                    <value>dw01:8032</value>
            </property>
            <property>
                    <name>yarn.resourcemanager.resource-tracker.address</name>
                    <value>dw01:8031</value>
            </property>
            <property>
                    <name>yarn.resourcemanager.scheduler.address</name>
                    <value>dw01:8030</value>
            </property>
            <property>
                    <name>yarn.resourcemanager.webapp.address</name>
                    <value>dw01:8088</value>
            </property>
            <property> <!-- 로그 집계 활성화 여부 -->
                    <name>yarn.log-aggregation-enable</name>
                    <value>true</value>
            </property>
    
            <!-- resource manager HA -->
            <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
            </property>
            <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>cluster1</value>
            </property>
            <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
            </property>
            <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>dw01</value>
            </property>
            <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>dw02</value>
            </property>
            <property>
                <name>yarn.resourcemanager.webapp.address.rm1</name>
                <value>dw01:8088</value>
            </property>
            <property>
                <name>yarn.resourcemanager.webapp.address.rm2</name>
                <value>dw02:8088</value>
            </property>
            <property>
                <name>hadoop.zk.address</name>
                <value>dw01:2181,dw02:2181,dw03:2181</value>
            </property>
    </configuration>


  8.   slaves 파일 생성
    [wasadm@dw01 hadoop]$ vi slaves
    slaves=dw01,dw02,dw03​


  9. workers 파일 생성
    [wasadm@dw01 hadoop]$ vi workers
    dwhdfad02
    dwhdfad03​


  10. 9번까지 셋팅 했다면 이제 서버를 복제해서 2번, 3번 서버를 만들어주세요.

  11. 1번~3번 서버가 password 없이 SSH 접속 가능하도록 ssh키를 만들어 등록해줍니다.
    # 모든 서버에서 진행합니다.
    [wasadm@dw01 ~]$ ssh-keygen -t rsa [엔터 3번]
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/wasadm/.ssh/id_rsa): 
    Created directory '/home/wasadm/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/wasadm/.ssh/id_rsa.
    Your public key has been saved in /home/wasadm/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:edI2ykAMlCQB7COLah/IOnRUmWX4fQ97PgjqSJbl+js wasadm@dwhdfad01
    The key's randomart image is:
    +---[RSA 2048]----+
    |o.o++.=o         |
    | . ..B.          |
    |.   . + .        |
    |.o . . . + o     |
    |o.o   ..S * +    |
    |+...  +o * o o   |
    |oo.. + .+ . +    |
    |+.  + oE   . o   |
    |o... oo+o     .  |
    +----[SHA256]-----+
    
    # 1번 서버에서 authorized_keys 파일을 만들고 2,3번 서버의 id_rsa.pub(퍼블릭 키)의 값도 append
    [wasadm@dw01 ~]$ cd .ssh
    [wasadm@dw01 .ssh]$ cat id_rsa.pub > authorized_keys


  12. 모든 서버에서 주키퍼 실행
    [wasadm@dw01 ~]$ cd $ZOOKEEPER_HOME
    [wasadm@dw01 ~]$ bin/zkServer.sh start   # 요건 실행, 종료는 stop
    [wasadm@dw01 ~]$ bin/zkServer.sh status  # 상태 확인, 모든 서버 실행 후 확인해야 함
    
    # 혹시 에러가 난다면 방화벽 문제 일 수 있으니 방화벽해제 후 다시 실행할 것
    [wasadm@dw01 ~]$ systemctl stop firewalld
     
  13. 하둡 실행
    $ hadoop namenode -format
    $ cd $HADOOP_HOME/sbin
    $ start-dfs.sh
    $ start-yarn.sh
    
    # hdfs에 폴더를 만들고 조회가 된다면 정상설치
    $ hdfs dfs -mkdir -p /user/wasadm/warehouse
    $ hdfs dfs -ls /user/wasadm
    drwxr-xr-x	- wasadm supergroup	0		2022-01-22 18:00 /user/wasadm/warehouse






 

'빅데이터 플랫폼 구축' 카테고리의 다른 글

hive, tez 설치  (0) 2022.01.23
mariadb 설치  (0) 2022.01.22
vmware에 centOS 설치하기  (0) 2022.01.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함