코알못

[AWS] EMR(hadoop) - 기본적인 부분을 알아보자! 본문

BIG DATA

[AWS] EMR(hadoop) - 기본적인 부분을 알아보자!

코린이s 2022. 1. 29. 19:41
728x90

우선 클러스터를 구성 했다면 기본 서버 관리를 위해 필요한 부분을 알아본다!

1. 서버 접속 방법

2. 서버에서 하둡 접속하는 방법

3. 서버에 떠있는 서비스 확인 및 재기동

4. 로그 보는 방법

5. 설정을 수정하고 적용 하는 방법

6. 관리 UI 접속 방법

 

1. 서버 접속 방법

서버 접속을 하기 위해서는 보안 그룹을 먼저 확인 해야 한다.

보안 그룹은 방화벽 같은것으로 접속에 사용하는 ssh 는 22번 포트를 사용하므로 22번 포트에 대한 방화벽이 뚫려 있어야 한다.

우선 aws 관리 콘솔 (https://aws.amazon.com/ > 콘솔에 로그인) 에 들어가서 emr을 검색 한다.

검색해서 생성한 클러스터를 클릭하면 아래와 같이 요약탭에 요약정보가 나온다.

하단에 '보안 및 엑세스' 부분을 보면 보안 그룹에 대한 링크가 걸려 있어 설정으로 바로 랜딩 할 수 있다. 

우리는 마스터, 코어, 작업 노드를 모두 관리 할 것으로 두개 다 모두 설정해야 한다.

랜딩해서 보안 설정을 가보면 인바운드 규칙을 설정 할 수 있어 규칙 편집을 진행한다.

아래와 같이 ssh 선택시 자동으로 22번 포트가 입력 되고 허용할 IP에 대해 직접 입력 해도 되지만 내 IP 를 쉽게 입력하기 위해 내 IP를 select box 에서 클릭하면 자동으로 내 IP가 입력 된다. 

이제 저장을 눌러 저장하면 바로 적용 된다.

자 그럼 접속 해보자!

마스터 퍼블릭 DNS를 클러스터 정보에서 확인 한뒤

기존에 생성시 만든 key pair 인 pem 파일이 있는 경로로 가서 ssh로 접속한다.

기본 계정은 hadoop이며, 중간에 yes를 눌러 계속 서버 접속을 진행한다.

$ ssh -i emr-hong.pem hadoop@ec2-3-34-145-134.ap-northeast-2.compute.amazonaws.com
The authenticity of host 'ec2-3-34-145-134.ap-northeast-2.compute.amazonaws.com (3.34.145.134)' can't be established.
ECDSA key fingerprint is SHA256:lkP0Iczr2s4DNHeDToKjfySBmjbaeGLJInds72orS+U.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-3-34-145-134.ap-northeast-2.compute.amazonaws.com,3.34.145.134' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
24 package(s) needed for security, out of 60 available
Run "sudo yum update" to apply all updates.

EEEEEEEEEEEEEEEEEEEE MMMMMMMM           MMMMMMMM RRRRRRRRRRRRRRR
E::::::::::::::::::E M:::::::M         M:::::::M R::::::::::::::R
EE:::::EEEEEEEEE:::E M::::::::M       M::::::::M R:::::RRRRRR:::::R
  E::::E       EEEEE M:::::::::M     M:::::::::M RR::::R      R::::R
  E::::E             M::::::M:::M   M:::M::::::M   R:::R      R::::R
  E:::::EEEEEEEEEE   M:::::M M:::M M:::M M:::::M   R:::RRRRRR:::::R
  E::::::::::::::E   M:::::M  M:::M:::M  M:::::M   R:::::::::::RR
  E:::::EEEEEEEEEE   M:::::M   M:::::M   M:::::M   R:::RRRRRR::::R
  E::::E             M:::::M    M:::M    M:::::M   R:::R      R::::R
  E::::E       EEEEE M:::::M     MMM     M:::::M   R:::R      R::::R
EE:::::EEEEEEEE::::E M:::::M             M:::::M   R:::R      R::::R
E::::::::::::::::::E M:::::M             M:::::M RR::::R      R::::R
EEEEEEEEEEEEEEEEEEEE MMMMMMM             MMMMMMM RRRRRRR      RRRRRR
[hadoop@ip-172-31-110-138 ~]$

 

2. 서버에서 하둡 접속하는 방법

서버에서 하둡 접속하는 방법은 hadoop fs 명령어를 이용하며 리눅스 명령어와 비슷한것이 많다.

// 디렉토리 내 리스트 보기
$ hadoop fs -ls /
Found 4 items
drwxr-xr-x   - hdfs hdfsadmingroup          0 2022-01-29 10:11 /apps
drwxrwxrwt   - hdfs hdfsadmingroup          0 2022-01-29 10:13 /tmp
drwxr-xr-x   - hdfs hdfsadmingroup          0 2022-01-29 10:11 /user
drwxr-xr-x   - hdfs hdfsadmingroup          0 2022-01-29 10:11 /var
// 디렉토리 생성
$ hadoop fs -mkdir /data
$ hadoop fs -ls /data
// 파일 생성
$ vi test.sh
echo "hello data now : $(date +%Y/%m/%d/%H:%M:%S)"
:wq!
// 하둡에 해당 파일 /data 경로에 올리기
$ hadoop fs -put test.sh /data/
// 확인시 정상으로 올라간것을 확인 가능하다.
$ hadoop fs -ls /data
Found 1 items
-rw-r--r--   3 hadoop hdfsadmingroup         51 2022-01-29 10:17 /data/test.sh
// 파일 읽어 내용을 확인 한다.
$ hadoop fs -cat /data/test.sh
echo "hello data now : $(date +%Y/%m/%d/%H:%M:%S)"

 

3. 서버에 떠있는 서비스 확인 및 재기동

emr 로 구성시 하둡 설치하는 것과 다르게 각 서버별로 띄울 서비스를 지정하지 않으므로 어떻게 서비스가 구성 되어 있는지 궁금하다.

이때 확인 하는 방법은 아래 명령어로 가능하다.

// 떠있는 서비스 확인
$ systemctl --type=service
// 특정 서비스 검색
$ systemctl --type=service | grep -i hue
  hue.service                            loaded active running Hue web server// 서비스 재기동
// 서비스 상태 확인
$ sudo systemctl status hue.service
● hue.service - Hue web server
   Loaded: loaded (/etc/systemd/system/hue.service; enabled; vendor preset: disabled)
   Active: active (running) since 토 2022-01-29 10:12:20 UTC; 14min ago
 Main PID: 23736 (python2.7)
    Tasks: 53
   Memory: 172.1M
   CGroup: /system.slice/hue.service
           ├─23736 python2.7 /usr/lib/hue/build/env/bin/supervisor -p /var/run/hue/supervisor.pid -l /var/log/hue -d
           └─23822 python2.7 /usr/lib/hue/build/env/bin/hue runcherrypyserver

 1월 29 10:12:15 ip-172-31-110-138 systemd[1]: Starting Hue web server...
 1월 29 10:12:20 ip-172-31-110-138 hue[23616]: Starting hue: [  OK  ]
 1월 29 10:12:20 ip-172-31-110-138 systemd[1]: Started Hue web server.
// 서비스 중단
$ sudo systemctl stop hue.service
// 서비스 중단 상태 확인
$ sudo systemctl status hue.service
● hue.service - Hue web server
   Loaded: loaded (/etc/systemd/system/hue.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 토 2022-01-29 10:26:39 UTC; 1s ago
 Main PID: 23736 (code=exited, status=1/FAILURE)

 1월 29 10:12:15 ip-172-31-110-138 systemd[1]: Starting Hue web server...
 1월 29 10:12:20 ip-172-31-110-138 hue[23616]: Starting hue: [  OK  ]
 1월 29 10:12:20 ip-172-31-110-138 systemd[1]: Started Hue web server.
 1월 29 10:26:39 ip-172-31-110-138 systemd[1]: Stopping Hue web server...
 1월 29 10:26:39 ip-172-31-110-138 systemd[1]: hue.service: main process exited, code=exited, status=1/FAILURE
 1월 29 10:26:39 ip-172-31-110-138 systemd[1]: Stopped Hue web server.
 1월 29 10:26:39 ip-172-31-110-138 systemd[1]: Unit hue.service entered failed state.
 1월 29 10:26:39 ip-172-31-110-138 systemd[1]: hue.service failed.
// 서비스 기동
$ sudo systemctl start hue.service
// 서비스 기동 확인
$ sudo systemctl status hue.service
● hue.service - Hue web server
   Loaded: loaded (/etc/systemd/system/hue.service; enabled; vendor preset: disabled)
   Active: active (running) since 토 2022-01-29 10:26:50 UTC; 2s ago
  Process: 24115 ExecStart=/etc/init.d/hue start (code=exited, status=0/SUCCESS)
 Main PID: 24157 (python2.7)
    Tasks: 53
   Memory: 170.5M
   CGroup: /system.slice/hue.service
           ├─24157 python2.7 /usr/lib/hue/build/env/bin/supervisor -p /var/run/hue/supervisor.pid -l /var/log/hue -d
           └─24167 python2.7 /usr/lib/hue/build/env/bin/hue runcherrypyserver

 1월 29 10:26:45 ip-172-31-110-138 systemd[1]: Starting Hue web server...
 1월 29 10:26:50 ip-172-31-110-138 hue[24115]: Starting hue: [  OK  ]
 1월 29 10:26:50 ip-172-31-110-138 systemd[1]: Started Hue web server

 

4. 로그 보는 방법

로그는 '/var/log/hive' 경로에 서비스명으로 되어있는 디렉토리를 들어가면 확인 가능하다. (hive 서비스로 예시)

$ cd /var/log/hive
$ ll
-rw-r--r-- 1 hive hive 103251  1월 29 10:14 hive-server2.log
-rw-r--r-- 1 hive hive    152  1월 29 10:13 hive-server2.out
drwxrwxrwt 2 root root      6  1월 29 10:10 user

5. 설정을 수정하고 적용 하는 방법

설정은 '/etc' 경로에 서비스명으로  되어있는 디렉토리를 들어간뒤 conf 디렉토리에서 확인 가능하다. (hive 서비스로 예시)

$ cd /etc/hive/conf
$ ll
-rw-r--r-- 1 root root   1596  3월 31  2021 beeline-log4j2.properties
-rw-r--r-- 1 root root   1596  3월 31  2021 beeline-log4j2.properties.default
-rw-r--r-- 1 root root 303730  3월 31  2021 hive-default.xml.template
-rw-r--r-- 1 root root   2810  1월 29 10:12 hive-env.sh
-rw-r--r-- 1 root root   2365  3월 31  2021 hive-env.sh.template
-rw-r--r-- 1 root root   2269  1월 29 10:12 hive-exec-log4j2.properties
-rw-r--r-- 1 root root   2274  3월 31  2021 hive-exec-log4j2.properties.default
-rw-r--r-- 1 root root   2753  1월 29 10:12 hive-log4j2.properties
-rw-r--r-- 1 root root   7263  1월 29 10:12 hive-site.xml
-rw-r--r-- 1 root root   1266  1월 29 10:12 hiveserver2-site.xml
-rw-r--r-- 1 root root   2060  3월 31  2021 ivysettings.xml
-rw-r--r-- 1 root root   3558  3월 31  2021 llap-cli-log4j2.properties.template
-rw-r--r-- 1 root root   7145  1월 29 10:12 llap-daemon-log4j2.properties
-rw-r--r-- 1 root root   7163  3월 31  2021 llap-daemon-log4j2.properties.default
-rw-r--r-- 1 root root   2662  3월 31  2021 parquet-logging.properties
-rw-r--r-- 1 root root   2662  3월 31  2021 parquet-logging.properties.default

해당 디렉토리에서 수정한뒤 서비스 적용을 위해서는 재기동을 하면 된다.

재기동은 03번에서 안내한 방법과 동일하다.

// 서비스명 확인
$ systemctl --type=service | grep -i hive
  hive-server2.service                   loaded active     running      Hive Server2
// 하이브 상태 확인
$ sudo systemctl status hive-server2.service
● hive-server2.service - Hive Server2
   Loaded: loaded (/etc/systemd/system/hive-server2.service; enabled; vendor preset: disabled)
   Active: active (running) since 토 2022-01-29 10:13:29 UTC; 20min ago
 Main PID: 32239 (java)
    Tasks: 0
   Memory: 1.0M
   CGroup: /system.slice/hive-server2.service
           ‣ 32239 /etc/alternatives/jre/bin/java -Dproc_jar -Dhive.log.dir=/var/log/hive -Dhive.log.file=hive-server2.log -Dhive.log.threshold=INFO ...

 1월 29 10:13:26 ip-172-31-110-138 systemd[1]: Starting Hive Server2...
 1월 29 10:13:26 ip-172-31-110-138 su[32234]: (to hive) root on none
 1월 29 10:13:29 ip-172-31-110-138 hive-server2[32204]: Started Hive Server2 (hive-server2):[  OK  ]
 1월 29 10:13:29 ip-172-31-110-138 systemd[1]: WARNING: New main PID 32239 does not belong to service, and PID file is not owned by root. In...guartion
 1월 29 10:13:29 ip-172-31-110-138 systemd[1]: Started Hive Server2.
Hint: Some lines were ellipsized, use -l to show in full.
// 하이브 중단
$ sudo systemctl stop hive-server2.service
// 하이브 중단 확인
$ sudo systemctl status hive-server2.service
● hive-server2.service - Hive Server2
   Loaded: loaded (/etc/systemd/system/hive-server2.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 토 2022-01-29 10:34:34 UTC; 1s ago
 Main PID: 32239 (code=exited, status=143)

 1월 29 10:13:26 ip-172-31-110-138 systemd[1]: Starting Hive Server2...
 1월 29 10:13:26 ip-172-31-110-138 su[32234]: (to hive) root on none
 1월 29 10:13:29 ip-172-31-110-138 hive-server2[32204]: Started Hive Server2 (hive-server2):[  OK  ]
 1월 29 10:13:29 ip-172-31-110-138 systemd[1]: WARNING: New main PID 32239 does not belong to service, and PID file is not owned by root. In...guartion
 1월 29 10:13:29 ip-172-31-110-138 systemd[1]: Started Hive Server2.
 1월 29 10:34:34 ip-172-31-110-138 systemd[1]: Stopping Hive Server2...
 1월 29 10:34:34 ip-172-31-110-138 systemd[1]: hive-server2.service: main process exited, code=exited, status=143/n/a
 1월 29 10:34:34 ip-172-31-110-138 systemd[1]: Stopped Hive Server2.
 1월 29 10:34:34 ip-172-31-110-138 systemd[1]: Unit hive-server2.service entered failed state.
 1월 29 10:34:34 ip-172-31-110-138 systemd[1]: hive-server2.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
// 하이브 기동 
$ sudo systemctl start hive-server2.service
// 기동 확인
$ sudo systemctl status hive-server2.service
● hive-server2.service - Hive Server2
   Loaded: loaded (/etc/systemd/system/hive-server2.service; enabled; vendor preset: disabled)
   Active: active (running) since 토 2022-01-29 10:34:45 UTC; 7s ago
  Process: 24824 ExecStart=/etc/init.d/hive-server2 start (code=exited, status=0/SUCCESS)
 Main PID: 24865 (java)
    Tasks: 0
   Memory: 1.1M
   CGroup: /system.slice/hive-server2.service
           ‣ 24865 /etc/alternatives/jre/bin/java -Dproc_jar -Dhive.log.dir=/var/log/hive -Dhive.log.file=hive-server2.log -Dhive.log.threshold=INFO ...

 1월 29 10:34:42 ip-172-31-110-138 systemd[1]: Starting Hive Server2...
 1월 29 10:34:42 ip-172-31-110-138 su[24860]: (to hive) root on none
 1월 29 10:34:45 ip-172-31-110-138 hive-server2[24824]: Started Hive Server2 (hive-server2):[  OK  ]
 1월 29 10:34:45 ip-172-31-110-138 systemd[1]: WARNING: New main PID 24865 does not belong to service, and PID file is not owned by root. In...guartion
 1월 29 10:34:45 ip-172-31-110-138 systemd[1]: Started Hive Server2.
Hint: Some lines were ellipsized, use -l to show in full.

 

6. 관리 UI 접속 방법

아래와 같이 어플리케이션 이력 클릭시 서비스 별로 제공하는 UI 에 접속할수 있는 URL을 확인할 수 있다.

그럼 여러 서비스를 쉽게 관리 할 수 있는 Hue UI 를 접속해본다!

hue UI 를 보면 8888 포트를 사용하기에 위에 안내한 방법대로 8888 포트 방화벽을 보안 그룹에 추가한뒤 접속 가능하다.

포트를 뚫은뒤 접속해보면 아래와 같은 화면이 나온다.

초기 관리자 계정을 생성하는데 안내하는 비밀번호 규칙에 맞게 설정 한다.

- 8자 이상

- 대문자 소문자 포함

- 숫자 포함

- 특수 문자 포함 

생성과 동시에 로그인이 되며, 생성한 계정으로 유저가 생성되고 해당 유저로 하둡의 서비스를 이용할 수 있어야 하니 이부분 참고 하라!

생성함과 동시에 hue 접속이 된다.

끝!

728x90
Comments