/ LECTURE

Hadoop - Connect

이 페이지는 다음에 대한 공부 기록입니다

JAVA(자바), Python(파이썬) 기반의

AI 활용 응용 소프트웨어 개발자 양성 과정

2021.11.10. ~ 2022.05.18.

찾으시는 정보가 있으시다면
주제별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 가 생긴걸 확인할 수 있음