[Hadoop] 리눅스 서버에 의사분산 모드로 하둡 설치하기

✅ 설치환경
- 개별JVM으로 실행 (의사분산 모드)
- AWS ubuntu EC2 t2.medium 인스턴스 사용
- 자바 8 필요

 

1. AWS EC2 계정 ssh 접속

2. Java 8 설치

# 자바 버전 확인(설치 확인)
java -version
sudo apt install openjdk-8-jre-headless

# unable to locate package 오류 발생시
sudo apt update
sudo apt install openjdk-8-jdk-headless

3. 하둡 계정 만들기

# 하둡 계정 생성
sudo adduser [username]
# 계정 전환
su -hdoop
# 로컬 호스트로 비밀번호 없이 로그인하도록 설정
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 읽기전용으로 권한 변경
chmod 0600 ~/.ssh/authorized_keys
# 패스워드 없이 로그인 확인
ssh localhost

4. 하둡 설치

# 하둡 3.3.4 다운로드
wget https:/archive.apache.org/dist/hadoop/core/hadoop-3.3.4/hadoop-3.3.4.tar.gz
# 압축해제 설치
tar xvf hadoop-3.3.4.tar.gz # [username] 홈 디렉토리에 설치(우분투가 아니라)
ls -tl # 디렉토리 파일 확인

5. 환경변수 설정

# 실행파일 수정
vi .bashrc
# 아래 내용 추가
export BASE_HOME=/home/[username] #본인의 계정으로 수정 
export HADOOP_HOME=$BASE_HOME/[username]
export HADOOP_INSTALL=$HADOOP_HOME
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 PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
# 변경된 환경변수 실행
source .bashrc
# 하둡 마스터 환경설정 파일 수정
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 자바홈 추가
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
# 하둡 네임노드 정보 파일 수정
vi $HADOOP_HOME/etc/hadoop/core-site.xml
# configuration 부분 추가
<configuration>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/[username]/tmpdata</value> #수정필요
	</property>
	<property>
		<name>fs.default.name</name>
		<value>hdfs://127.0.0.1:9000</value>
	</property>
</configuration>
# 데이터 블락하고 관련된 정보 파일 수정
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
# configuration 부분 추가
<configuration>
	<property>
		<name>dfs.data.dir</name>
		<value>/home/[username]/dfsdata/namenode</value> #수정필요
	</property>
	<property>
		<name>dfs.data.dir</name>
		<value>/home/[username]/dfsdata/datanode</value> #수정필요
 	</property>
	<property>
		<name>dfs.replication</name>
		<value>1</value> # 의사분산모드
	</property>
</configuration>
# 맵리듀스 관련 정보 파일 수정
vi $HADOOP_HOME/etc/hadoop/mapred-site.xml
# configuration 부분 추가
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
         <value>yarn</value>
    </property>
</configuration>
# yarn의 주요 데몬인 노드매니저, 리소스매니저 설정 파일 수정
vi $HADOOP_HOME/etc/hadoop/yarn-site.xml
# configuration 부분 추가
<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.hostname</name>
		<value>localhost</value>
	</property>
	<property>
		<name>yarn.acl.enable</name>
		<value>0</value>
	</property>
	<property>
		<name>yarn.nodemanager.env-whitelist</name>
		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS,HADOOP_CONF_DIR,CLASSPATH_PERPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>
</configuration>

 

6. 포맷초기화

# 포맷(초기화)
hdfs namenode -format

7. 데몬띄우기

# 파일 이동
cd hadoop-3.3.4/sbin/
# hdfs와 관련된 네임노드, 데이터노드 두개의 데몬 JVM위에 띄우기
./start-dfs.sh
# yarn 띄우기 노드매니저, 리소스 매니저 실행
./start-yarn.sh
# jps 실행 -> 에러발생(jre만 있고 jdk는 없어서) (java로 만들어진 app을 보여주는 명령어 jps)
# 우분투 계정으로 이동 
exit
logout
# jdk 설치
sudo apt install openjdk-8-jdk-headless
# 다시 하둡 어카운트로 이동
su - [username]
# jps 재실행
jps

jps 실행시 secondaryNameNode, DataNode, ResourceManager, NameNode, Jps, NodeManager가 실행되고 있다는 것을 알 수 있습니다.

포트 정보만 알고 있다면 웹UI로도 확인할 수 있습니다. 

 

참고

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

https://archive.apache.org/dist/

https://sseozytank.tistory.com/78