티스토리 뷰
* 다음과 같이 3대의 서버를 이용해 구성예정
dw01 | dw02 | dw03 |
NameNode | SecondaryNameNode | |
NodeManager | DataNode | DataNode |
ResourceManager | ||
JobHistoryServer |
- 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
- 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
- java 설치
# yum은 패키지프로그램을 설치해주는 명령어로 # install은 설치 # -y 옵션은 설치과정에서 설치여부를 묻는데 y로 자동 입력하겠다는 의미 [wasadm@dw01 ~]$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64 [wasadm@dw01 ~]$ java -version #설치된 자바의 버전 확인
- 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
- Hadoop 3.3.1 다운로드
https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz - 다운로드 받은 파일은 모두 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
- 각종 설정파일 수정
* .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>
- slaves 파일 생성
[wasadm@dw01 hadoop]$ vi slaves slaves=dw01,dw02,dw03
- workers 파일 생성
[wasadm@dw01 hadoop]$ vi workers dwhdfad02 dwhdfad03
- 9번까지 셋팅 했다면 이제 서버를 복제해서 2번, 3번 서버를 만들어주세요.
- 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
- 모든 서버에서 주키퍼 실행
[wasadm@dw01 ~]$ cd $ZOOKEEPER_HOME [wasadm@dw01 ~]$ bin/zkServer.sh start # 요건 실행, 종료는 stop [wasadm@dw01 ~]$ bin/zkServer.sh status # 상태 확인, 모든 서버 실행 후 확인해야 함 # 혹시 에러가 난다면 방화벽 문제 일 수 있으니 방화벽해제 후 다시 실행할 것 [wasadm@dw01 ~]$ systemctl stop firewalld
- 하둡 실행
$ 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 |
댓글