Hadoop - Connect
JAVA(자바), Python(파이썬) 기반의
AI 활용 응용 소프트웨어 개발자 양성 과정
찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요
95일차 수업
주요 명령어
# 사용자 변경
# 해당 계정으로 사용자 변경
su 계정명
# 해당 계정의 홈디렉토리로 이동하면서 변경
su - 계정명
# root 계정으로 변경
su
# 해당 계정의 패스워드를 변경
passwd 계정
# 다른 사용자의 보안 권한으로 관련 프로그램을 구동
sudo 실행할 명령어
# 파일 또는 폴더의 사용 권한 지정
chmod 권한 파일명
# 디렉토리를 생성
mkdir 디렉토리명
# 현재 위치 확인, 현재 폴더 확인
pwd
# 파일이 없을 때는 0 바이트 파일이 생성
touch 파일명
# 디렉토리 이동, / 부터시작하면 절대경로 아닐경우 상대경로
cd 파일경로
# 파일/디렉토리 삭제
rm -rf 삭제할파일명
# 파일/디렉토리 이동 및 이름 변경
mv 이동할파일 이동할위치
# 디렉토리 내용 목록보기, ls -al , ll 주로사용
ls
# 파일 내용을 출력하는 리눅스 명령어
cat 파일명
# 패키지 설치/삭제/업데이트 도구
* yum install 패키지명
# ip를 확인하는 명령어
ifconfig
hadoop 설명
core-site.xml
-
HDFS 와 맵리듀스에서 공통적으로 사용할 환경 정보를 설정한다.
-
core-site.xml 에 설정값이 없을 경우 core-default.xml 에 있는 기본값을 사용한다.
hdfs-site.xml
-
HDFS 에서 사용할 환경 정보를 설정한다.
-
hdfs-site.xml 에 설정값이 없을 경우 hdfs-default.xml 에 있는 기본값을 사용한다.
yarn-site.xml
- Hadoop2 에서 자원관리하는 정보를 설정한다.
mapred-site.xml
-
맵리듀스에서 사용할 환경 정보를 설정한다.
-
mapred-site.xml 에 설정값이 없을 경우 mapred-default.xml 에 있는 기본값을 사용한다.
masters
-
보조 네임 노드를 실행할 서버를 설정한다.
-
마스터노드 (즉, 네임노드)를 설정하는 것이 아니다.
slaves
- 데이터 노드를 실행할 서버를 설정한다.
hadoop-env.sh ( hadoop1 ) yarn-env.sh ( hadoop2 에서 추가 )
-
하둡을 실행하는 쉘 스크립트 파일에서 필요한 환경변수를 설정한다.
-
JDK 경로, classpath, 데몬 실행 옵션 등 환경변수를 설정한다.
실습
hadoop 설정 경로 이동
아래 작업은 모두 한곳(nn01)에서
cd /opt/hadoop/current/etc/hadoop/
vi core-site.xml
# <configuration> 안에서 설정해주기
<property>
<name>fs.defaultFS</name>
<value>hdfs://nn01:9000</value>
</property>
vi hdfs-site.xml
# <configuration> 안에서 설정해주기
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>nn01:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>nn01:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop_data/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/home/hadoop/hadoop_data/hdfs/namesecondary</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
vi yarn-site.xml
# <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.resourcemanager.scheduler.address</name>
<value>nn01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>nn01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>nn01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>nn01</value>
</property>
vi mapred-site.xml
# mapred-site.xml 파일이 없으면 생성
cp /opt/hadoop/current/etc/hadoop/mapred-site.xml.template /opt/hadoop/current/etc/hadoop/mapred-site.xml
# <configuration> 안에서 설정해주기
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobtracker.hosts.exclude.filename</name>
<value>$HADOOP_HOME/etc/hadoop/exclude</value>
</property>
<property>
<name>mapreduce.jobtracker.hosts.filename</name>
<value>$HADOOP_HOME/etc/hadoop/include</value>
</property>
vi /opt/hadoop/current/etc/hadoop/masters
# master 선언, nn01 작성
nn01
vi /opt/hadoop/current/etc/hadoop/slaves
# slaves 선언, dn01, dn02 작성
dn01
dn02
vi hadoop-env.sh vi yarn-env.sh
# 두 파일 모두 JAVA_HOME path 설정
export JAVA_HOME=자바 경로
파일 옮기기
# nn01에서 작성한 파일 dn01, dn02 두곳에 옮겨주기
scp -r /opt/hadoop/* dn01:/opt/hadoop
scp -r /opt/hadoop/* dn02:/opt/Hadoop
# 오류 대비, dn01, dn02 에서 하둡 삭제하고 nn01 에서 다시 가져오기
rm -rf /opt/hadoop/current
ln -s /opt/hadoop/2.7.7 /opt/hadoop/current
chown -R hadoop:hadoop /opt/hadoop/
설정 마무리
# nn01에서
mkdir -p ~/hadoop_data/hdfs/namenode
mkdir -p ~/hadoop_data/hdfs/namesecondary
# dn01, dn02에서
mkdir -p ~/hadoop_data/hdfs/datanode
# xml을 통해 설정해둔 상태로 초기화 하는 작업, nn01에서
hadoop namenode -format
실행하기
# nn01에서 실행
start-all.sh
# dn01, dn02 에서
jps
# NodeManager 과 DataNode 가 생긴걸 확인할 수 있음