일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- window업데이트
- 카프카
- nomount
- 하둡
- 오라클
- hadoop명령어
- ORA-01034
- crash recovery
- 하둡권한변경
- initorcl
- 완전분산환경
- centos7
- Standalone
- ORA-27101
- Linux
- 에러
- sql처리순서
- zookeeper
- 카프카 사용
- tibero
- oracle
- sql연산자
- hadoop
- Kafka
- 오라클복구
- 결합연산자
- recovery
- 실습
- 설치
- 하둡설치
- Today
- Total
IT 꿈나무의 일상
Hadoop 완전분산모드로 설치하기 (2) 본문
0. 하둡 환경변수 설정
vim .bash_profile 에 다음과 같은 환경변수 설정
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export 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_PID_DIR=${HADOOP_HOME}/pids
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib/*
1. fully-distributed configuration 환경 구성
하둡으로 완전분산환경 설정 (값들을 수정하며 하둡설정 바꿔야 한다)
1) core-site.xml 파일 수정
파일 경로 : $HADOOP_HOME/hadoop-2.8.3/etc/hadoop/core-site.xml
- core-site는 하둡을 실행시켰을때, 개괄적인 정보를 보여주는 website
- <value>안에 값을 hdfs://server-hostname:9000(혹은9001port) 로 설정
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
or
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
2) hdfs-site.xml 파일 수정
파일 경로 : $HADOOP_HOME/hadoop-2.8.3/etc/hadoop/hdfs-site.xml
- dfs.replication : hadoop 과정시 복제되는 파일의 개수 (default : 3)
- dfs.namenode.name.dir / dfs.namenode.checkpoint.dir / dfs.datanode.data.dir - 하둡이 실행될때 각 노드들의 정보를 저장해놓는 파일 (경로는 user마다 다르게 정의 )
- dfs.http.address / dfs.secondary.http.address - hostname:50070(50090)으로 설정 (하둡실행 시 접속가능, 각각 현제하둡시스템 정보)
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop/hadoop-2.8.3/data/dfs/namenode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/home/hadoop/hadoop/hadoop-2.8.3/data/dfs/namesecondary</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop/hadoop-2.8.3/data/dfs/datanode</value>
</property>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>slave1:50090</value>
</property>
</configuration>
3) mapred-site.xml 파일 수정
파일경로 : $HADOOP_HOEM/hadoop-2.8.0/etc/hadoop/mapred-site.xml
- 맵리듀스의 설정 관리 파일
- map-reduce에 활용하는 memory의 양을 설정
- mapreduce.map.memory.mb : map작업시 활용하는 메모리
- mapreduce.reduce.memory.mb : reduce작업시 활용하는 메모리
- mapreduce.map.java.opts.max.heap / mapreduce.reduce.java.opts.max.heap : map/reduce 작업시 활용하는 heap memory 최대사이즈 (mapreduce.map.memory.mb * 0.8이 적당)
- mapreduce.map.java.opts / mapreduce.reduce.java.opts : 위와 같은설정, jvm 실행옵션
# 파일 이름 변경
mv mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.map.java.opts.max.heap</name>
<value>819</value>
</property>
<property>
<name>mapreduce.reduce.java.opts.max.heap</name>
<value>819</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx819m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx819m</value>
</property>
</configuration>
4) yarn-site.xml 파일 수정
파일경로 : $HADOOP_HOME/hadoop-2.8.0/etc/hadoop/yarn-site.xml
-yarn은 map-reduce만으로 승부해오던 기존의 하둡이 가지는 문제점들을 해결하기 위해서 만들어진 하둡의 서브 프로젝트 (리소스 할당 문제, spark등의 새로운 플랫폼 출현)
- yarn.app.mapreduce.am.resource.mb : 어플리케이션 마스터의 Container를 위한 메모리 (default :1536)
- yarn.nodemanager.vmem-check-enabled : 컨테이너에 대한 가상 메모리 제한이 있는지 확인
- yarn.nodemanager.pmem-check-enabled : 컨테이너에 대한 물리 메모리 제한이 있는지 확인.
(false : memory check에 대한 error를 방지하기 위함)
- yarn.nodemanager.vmem-pmem-ratio : 컨테이너의 실제 메모리 대비 가상 메모리 사용 비율 (default 2.1)
- yarn.nodemanager.resource.memory-mb : 각 노드매니저가 컨테이너 할당에 사용할 메모리 크기
- yarn.scheduler.minimum-allocation-mb / yarn.scheduler.maximum-allocation-mb : ResourceManager가 하나의 컨테이너 할당에 필요한 최소/최대 메모리 크기
- yarn.scheduler.maximum-allocation-mb는 yarn.nodemanager.resource.memory-mb 속성값의 이하로 설정
<configuration>
<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.local-dirs</name>
<value>/home/hadoop/hadoop/hadoop-2.8.3/data/yarn/nm-local-dir</value>
</property>
<property>
<name>yarn.resourcemanager.fs.state-store.uri</name>
<value>/home/hadoop/hadoop/hadoop-2.8.3/data/yarn/system/rmstore</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
</configuration>
5) slaves 파일 수정
파일 경로 : $HADOOP_HOME/hadoop-2.8.0/etc/hadoop/slaves
# slave로 사용할 OS의 hostname을 추가한다
# add slave host name
slave1
2. 파일배포
Server 에서 작업한 Hadoop Configuration을 압축하여 다른 OS에게 전송
1) 동일 파일명 삭제
rm -rf hadoop-2.8.3.tar.gz
2) 압축
tar cvzf hadoop-2.8.3.tar.gz hadoop-2.8.3
3) home dir로 이동
sudo scp –r /home/hadoop/hadoop/hadoop-2.8.3.tar.gz hadoop@IP_주소:~/
4) (각 slave에서) hadoop 파일 생성 후
mkdir hadoop --> hadoop dir생성
mv hadoop-2.8.3.tar.gz hadoop --> 파일옮기기
5) 압축해제
cd hadoop
tar xvzf hadoop-2.8.3.tar.gz
## hadoop-env.sh_JAVA_HOME 수정
- JAVA_HOME 경로 지정
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/lib/jdk1.8.0_261
3. Hadoop 실행
1) 네임노드 포맷
bin/hadoop namenode -format
--> ~/hadoop-2.8.3에 data ditectory 생성
2) 하둡 시작
- 나중에 하둡 실행시 start-all.sh 파일만 실행시 한번에 하둡 구동이 됩니다.
sbin/start-dfs.sh # datanode , namenode on --> HDFS 실행
sbin/start-yarn.sh # resource manager on --> 맵리듀스 실행
sbin/start-all.sh --> HDFS & 맵리듀스 실행
3) 하둡 종료
- 나중에 하둡 실행시 stop-all.sh 파일만 실행시 한번에 하둡 구동이 됩니다.
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/stop-all.sh
4) 잘 켜졌는지 확인
jps
# 올바르게 작동하는 예시
- 마스터 노드와 슬레이브 노드에 jps를 입력시 다음과 같이 출력되면 정상적으로 하둡이 동작하고 있는겁니다.00
[Master]
19696 NameNode
20673 Jps
20180 ResourceManager
[Slave1]
9749 SecondaryNameNode
9990 Jps
9643 DataNode
9836 NodeManager
##error 사항 / 해결방안
1) Master Node에 네임노드가 안뜨는 경우
하다보면 마스터 노드에 네임노드가 정상적으로 뜨지 않는 경우가 있는데 다음과 같이 해결하였습니다.
##namenode format하고 다시 시작
bin/hadoop namenode -format -Y
그래도 안된다면?
- 하둡홈에 data와 logs 디렉토리를 삭제한 후 다시 namenode 포맷후 1~2분뒤에 다시 하둡 구동
- 단, stop-all.sh로 하둡 구동을 종료한 후 실행
2) binding error 발생 시
log정보확인 후 프로세스 죽이기
- 해당포트 사용중인 프로세스 확인하기
netstat -nap | grep 50070
- 죽이기
kill -9 [PID]
- namenode format하고 다시 시작
bin/hadoop namenode -format -Y
'IT 관련' 카테고리의 다른 글
kafka standalone으로 설치하기 (1) (0) | 2021.12.27 |
---|---|
Hadoop 완전분산모드로 설치하기 (3) - hadoop 사용법 (0) | 2021.08.13 |
Hadoop 완전 분산 모드로 설치하기 (1) (0) | 2021.03.01 |
CentOs 7에서 Oracle 12c 설치하기 (GUI 원격 설치) (0) | 2021.02.17 |
Pixabay Developer API 이용하여 이미지 불러오기 (3) | 2020.07.18 |