Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

Hadoop Cluster 가상 분산 모드 구성하기 with Ec2

Hadoop Cluster 가상 분산 모드 구성하기 with Ec2

EC2에 가상 분산 모드를 구성해보려고 합니다.

기본적인 설정은 단일 구축하기에 설정해두었습니다.

ssh 설정하기

  • 아래와 같이 ssh을 설치하여 줍니다.
1
$ yum install openssh*
  • ssh 연결을 위해 아래와 같이 설정하여 줍니다.
1
2
3
4
$ cd ~/.ssh
$ ssh-keygen -t rsa -P ""
$ cat id_rsa.pub >> authorized_keys
$ ssh localhost

환경 설정


  • Hadoop 파일 설정들을 변경해줄 예정입니다.
  • 보기 편하게 vi에 set number를 설정해서 보기 편하게 바꾸어줍니다.
1
2
$ sudo vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
$ set number

아래 순서대로 각 파일들에 아래 값들을 추가해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ sudo vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# change this
export JAVA_HOME=/usr/local/jdk1.8

$ sudo vi $HADOOP_HOME/etc/hadoop/core-site.xml
# change this
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

$ sudo vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
# change this 
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>

이제부터는 hdfs namenode를 초기화 해줄 차례입니다.

하지만, 아래와 같이 에러가 발생하네요.

지금까지는 접속한 유저로 처리되어서 에러가 난거 같아서 root 유저를 만들 예정입니다.

1
2
3
$ cd hadoop-3.2.4
$ hdfs namenode -format
> ERROR: namenode can only be executed by root.

Ec2 root 설정하기


  • 루트 유저를 아래와 같이 만들줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sudo passwd root

$ sudo vi /etc/ssh/sshd_config
# change
PermitRootLogin yes

$ sudo mkdir /root/.ssh
$ sudo cp /home/ec2-user/.ssh/authorized_keys /root/.ssh
$ ssh -i 'C:\키페어경로\키페어.pem' root@접속IP

# permission denied 발생 시
$ cd ~/.ssh
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh localhost

Hadoop 실행하기


  • 환경 변수 및 ssh 설정이 완료되었으니, 이제부터는 실제로 실행해보아야겠죠?
  • 아래와 같이 진행해주면 바로 연동 완료!
  • https://stackoverflow.com/questions/48978480/hadoop-permission-denied-publickey-password-keyboard-interactive-warning
1
2
3
4
$ hdfs namenode -format
$ cd $HADOOP_HOME/sbin
$ start-dfs.sh
$ start-yarn.sh

결과는 아래와 같다.

Untitled-13 Untitled-9 Untitled-10 Untitled-11

파일 생성

1
2
3
4
5
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/root
$ hdfs dfs -mkdir /user/root/conf
$ hdfs dfs -mkdir /input
$ hdfs dfs -ls

파일 업로드

1
2
3
4
5
$ mkdir test
$ cd test
$ echo 'hadoop file testing with hello world' > readme.txt
$ hdfs dfs -copyFromLocal /home/ec2-user/test/readme.txt /input

Instance 기본 옵션으로 진행하니 서버가 터진다.. 다시 구성할 예정입니다.

사양을 올려 다시 재진행하니 완료된 것을 볼 수 있습니다.

Untitled

1
2
3
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount /input/readme.txt ~/wordcount-output
$ hdfs dfs -ls ~/wordcount-output
$ hdfs dfs -cat ~/wordcount-output/part-r-00000

스크린샷 2023-09-13 오후 9.27.30.png

Untitled