일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 젠킨스
- 자바
- 로그인
- Kafka
- 자동
- gradle
- config
- SpringBoot
- 머신러닝
- Redis
- 레디스
- fastcampus
- 간단
- Zeppelin
- java
- Mac
- vue
- ec2
- spring
- aws
- hive
- redash
- 예제
- Cluster
- Docker
- login
- 설정
- 클러스터
- EMR
- Jenkins
- Today
- Total
코알못
[AWS] EMR(hadoop) - 기본적인 부분을 알아보자! 본문
우선 클러스터를 구성 했다면 기본 서버 관리를 위해 필요한 부분을 알아본다!
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 접속이 된다.
끝!
'BIG DATA' 카테고리의 다른 글
[AWS] EMR(hadoop) - 데이터를 이관해보자! (0) | 2022.01.30 |
---|---|
[AWS] EMR(hadoop) - 배치를 만들어보자! (0) | 2022.01.30 |
[AWS] EMR(hadoop) - 만들어 보자! (0) | 2022.01.29 |
[AWS] 보안 (ACL vs Security Group) (0) | 2022.01.29 |
[AWS] S3 생성 (저장소 생성) (0) | 2022.01.29 |