## 참고사항 ##
빅데이터나 하둡 관련 전문가가 아니기 때문에 일부 부족한 내용이 있을 수 있습니다.
셋팅과 기본적인 사용 외에, 하둡과 관련 생태계 운영의 트러블 슈팅은 잘 모릅니다.
오픈소스 특성상 직접 조사하고 해결해야 하는 부분이 많습니다. 기본 셋팅 관련해서 참고만 부탁 드립니다.
이전 포스팅에서 HDP Sandbox에 대한 간략한 소개와 Docker 셋팅에 필요한 파일 다운로드를 진행했다.
그리고 HDP Sandbox 2.6.5 버전에 대한 설치와 Amabari 로그인하는 것도 진행했다.
HDP Sandbox 3.0.1 버전을 구성하고 하둡 클러스터를 관리하는 Ambari에 로그인 하는 과정을 진행한다.
2.6.5 버전과 상당 부분 동일하므로 변경 사항 위주로 정리한다.
HDP Sandbox 개요
Sandbox 이미지는 VMware, VirtualBox, Docker 형태로 제공되고 있으며, 여기서는 Docker 중심으로 정리한다.
3.0.1 버전의 Docker 이미지 크기는 약 21.2GB이다. VMware, VirtualBox는 22.1GB 정도이다.
또한 최소 10GB 이상의 메모리를 할당하도록 권장하므로 시스템은 최소 16GB 이상의 메모리가 필요하다.
HDP 3.0.1에 기본 포함 된 Apache 프로젝트
HDP 3.0.1에 기본으로 포함 된 Apache 프로젝트는 다음과 같다. Hadoop과 Spark 관련 프로젝트를 우선 표시했다.
그 외에도 Hadoop 생태계의 거의 모든 프로젝트가 포함되어 있는 것을 알 수 있다.
|
|
|
HDP Sandbox 2.6.5 버전과 비교하여 Spark은 2.3.0에서 2.3.1로, Zeppelin은 0.7.3에서 0.8로 변경되었다.
Hadoop은 2.7.3에서 3.1.1로 변경되었으며, Livy는 0.4.0에서 0.5.0으로 변경되었다.
HDP Sandbox 이미지 시작시 자동 시작 되는 서비스
HDP Sandbox 이미지를 시작하면 다음과 같은 서비스들이 자동으로 시작된다.
HDP Services Started Automatically on Startup
|
|
HDP Sandbox 3.0.1의 구성 패키지 변경 사항
HDP 3.0.1에 다음 패키지가 추가되었다.
- Data Analytics Studio 1.0.2.1.0.2.0-6
HDP 3.0.1에 다음 패키지가 제외되었다.
- Apache Falcon
- Apache Flume
- Apache Mahout
- Apache Slider
자세한 내용은 아래 페이지를 참고한다.
Docker Image 정보
Docker HDP 가상 이미지의 운영체제와 Java 버전은 다음과 같다.
OS Version (HDP container) | CentOS release 7.5.1804 (Core) |
Java Version (docker container) | openJDK version “1.8.0.191” OpenJDK Runtime Environment (build 1.8.0_191-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode) |
기타 | Python 2.7.5 PostgreSQL 9.6.11 MySQL server 5.7.24 MySQL connector 5.1.25-3 |
Docker 환경 설정
HDP Docker 이미지를 다운로드 하기 위해서는 먼저 설치하려는 시스템에 Docker가 설치되어 있어야 한다.
진행 과정은 아래 페이지에 정리되어 있다.
Docker 설치
Docker는 18.03 또는 그 이후 버전이 필요하다.
아래 페이지를 참고하여 설치를 진행한다.
Docker RAM 설정
램 여유 공간은 최소 10-12GB 정도가 필요하다.
설정 방법은 다음과 같다.
구분 | 내용 |
Memory for Linux | 별도 과정이 필요하지 않다. |
Memory for Windows | 32G인 경우 16G, 16G인 경우 10G 정도가 적당하다. 윈도우의 경우 메모리 과점유 문제가 발생할 수 있어 아래 내용을 참고한다. https://meaownworld.tistory.com/160 |
Memory for Mac | Docker -> Preferences -> Advanced -> CPU 2개, Memory 8GB 설정 |
Bash Shell 사용 가능 여부 확인
윈도우 사용자는 bash shell을 사용할 수 있는지 확인해야 한다.
Powershell 사용 (윈도우 10)
윈도우 10 사용자는 Powershell에서 bash shell을 사용할 수 있다.
윈도우 10에서 bash shell을 활성화 하는 방법은 아래 포스팅을 참고한다.
git-scm 사용
윈도우 10이 아니거나 bash shell만 사용하려는 경우 git-scm을 설치하면 git에 내장 된 bash shell을 사용할 수 있다.
다음 페이지를 참고한다.
git-scm 설치 방법은 다음 포스팅을 참고한다.
설치 완료 후 git bash를 사용하면 bash shell을 사용할 수 있다.
Docker 설치 스크립트 다운로드
이전 포스팅을 참고하여 HDP Sandbox의 Docker 셋팅에 필요한 파일 다운로드를 진행한다.
임의의 폴더에 압축을 해제한다. Docker 이미지를 다운로드 할 수 있는 docker-deploy-hdp30.sh 파일을 확인할 수 있다.
Docker 설치 스크립트 수정
터미널을 열고 해당 sh 파일의 위치로 이동하고, 아래 sh 파일들을 수정한다.
docker-deploy-hdp30.sh
이 파일은 Sandbox HDP와 Sandbox Proxy Docker 이미지를 다운로드하고 컨테이너로 실행하는 기능을 수행한다.
아래 포스팅의 docker-deploy-hdp265.sh항목을 참고하여 진행한다.
assets/generate-proxy-deploy-script.sh
이 파일은 Sandbox HDP 컨테이너가 사용하는 포트에 대해 nginx를 사용해서 내부 포트와 외부 포트를 연결하는 기능을 수행한다.
아래와 같이 수정한다.
1) registry 항목을 수정한다.
# 수정 전 (3번 라인)
registry="hortonworks"
# 수정 후
registry="Docker저장소URL:포트/hortonworks"
# ex. "docker.repository.com:50000/hortonworks"
2) 시작 부분의 if ~~ fi 구문 수정
# 수정 전 (4~10번 라인)
if [ "$flavor" == "hdf" ]; then
hdfEnabled=true
hdpEnabled=false
elif [ "$flavor" == "hdp" ]; then
hdfEnabled=false
hdpEnabled=true
fi
# 수정 후
hdfEnabled=false
hdpEnabled=true
3) 조건문의 ==를 =로 수정 (MacOS의 경우)
4) Livy 포트는 포함되어 있지 않으므로 다음과 같이 추가한다.
# 수정 전
tcpPortsHDP=(
... 생략 ...
[8983]=8983
[8993]=8993
[9000]=9000
[9996]=9996
... 생략 ...
# 수정 후
tcpPortsHDP=(
... 생략 ...
[8983]=8983
[8993]=8993
### 추가 된 부분 시작 ###
[8998]=8998
[8999]=8999
### 추가 된 부분 끝 ###
[9000]=9000
[9996]=9996
... 생략 ...
HDP Sandbox Docker 이미지 설치
다음 명령을 실행해서 스크립트를 실행한다.
$ bash ./docker-deploy-hdp30.sh
다운로드와 컨테이너 실행이 완료되면 다음과 같이 나타난다.
다운로드 및 설치가 완료되면 정상적으로 다운로드 되었는지 확인한다.
아래 명령어를 입력해서 HDP 컨테이너가 정상적으로 실행 중인지 확인한다. sandbox-proxy, sandbox-hdp 컨테이너가 실행 중이어야 한다.
$ docker ps -a
컨테이너들은 다음과 같은 방법으로 사용 가능하다.
1) HDP SANDBOX 중단 (STOP/SHUTDOWN HDP SANDBOX)
$ docker stop sandbox-hdp
$ docker stop sandbox-proxy
2) HDP SANDBOX 재시작 (RESTART HDP SANDBOX)
$ docker start sandbox-hdp
$ docker start sandbox-proxy
3) HDP SANDBOX 컨테이너 제거 (REMOVE HDP SANDBOX)
$ docker stop sandbox-hdp
$ docker stop sandbox-proxy
$ docker rm sandbox-hdp
$ docker rm sandbox-proxy
4) HDP SANDBOX 이미지 제거 (REMOVE HDP SANDBOX IMAGE)
$ docker stop sandbox-hdp
$ docker stop sandbox-proxy
$ docker rmi hortonworks/sandbox-hdp:{버전}
$ docker rmi hortonworks/sandbox-proxy:{버전}
hosts 파일 수정
아래 포스팅의 hosts 파일 수정 항목을 참고하여 진행한다.
정상 접속 여부 확인
아래 포스팅의 정상 접속 여부 확인 항목을 참고하여 진행한다.
admin 계정 비밀번호 변경
아래 포스팅의 admin 계정 비밀번호 변경 항목을 참고하여 진행한다.
Ambari 로그인
Ambari에 접속한다. HDP Sandbox 2.6.5의 Ambari보다 훨씬 깔끔하다.
Ambari에 로그인하면 다음과 같은 Dash Board를 확인할 수 있다.
이후 과정은 Ambari에서 서비스 패키지들을 설치하고 관리할 수 있다.
Ambari의 All Service Start
컨테이너를 활성화 시키고 Ambari에 접속해보면 각 서비스들이 빨간색으로 표시되고 Alert이 많이 발생할 수 있다.
- HDP Sandbox 컨테이너를 실행하면 기본적으로 All Service Start 기능이 자동으로 실행된다.
- 컨테이너 실행 후 약 10분 정도 지나야 모든 서비스를 정상적으로 사용할 수 있다.
- 화면 좌측의 Services 옆에 있는 ... 클릭 → Start All 또는 Restart All Required를 클릭하면 모든 서비스들이 재시작 되며 해결 가능하다. (약 7~8분 소요)
빌드 머신 같은 환경에서 사용하고자 하는 경우 컨테이너 실행 후 10분 정도 대기 시간을 설정할 필요가 있다.
Ambari 사용
이후 과정은 Ambari에서 제공하는 기능들을 사용하여 진행한다.
- HDP Sandbox 개요에서 언급한 Hadoop 관련 서비스 설치 및 관리
- Hadoop 관련 서비스의 파일 관리 - 업로드 / 다운로드 포함
Docker 컨테이너의 root 계정 비밀번호 변경하기
Sandbox HDP Docker 컨테이너의 비밀번호를 변경하고자 하는 경우 다음과 같이 진행한다.
# 아래 명령으로 접속하고 기존 비밀번호로 로그인한다.
$ ssh root@sandbox.hortonworks.com -p 2222
# 각 항목은 다음을 의미한다.
# root@sandbox.hortonworks.com - 접속하려는 HDP Sandbox의 계정과 URL
# -p 2222 - SSH 포트번호
# root 계정 비밀번호를 변경한다.
$ passwd root
# 각 항목은 다음을 의미한다.
# passwd - 비밀번호 변경
HDP Sandbox에서 사용하는 포트 목록
HDP Sandbox는 nginx를 사용하여 Host PC의 포트를 HDP Sandbox의 포트로 포트 포워딩한다.
사용하는 포트 목록은 다음과 같다.
Hadoop, Ambari, Yarn, Spark, Zookeeper, Jupyter, Zeppelin은 굵게 강조하였다.
외부 | 내부 | 비고 | 외부 | 내부 | 비고 | |
1080 | 1080 | Splash Page | 15000 | 15000 | Falcon | |
2122 | 22 | HostSSH | 16010 | 16010 | HBaseMaster | |
2181 | 2181 | Zookeeper | 16030 | 16030 | HBaseRegion | |
2200 | 22 | HostSSH2 | 18080 | 18080 | SparkHistoryServer | |
2201 | 2201 | SSH HDP CDA | 19888 | 19888 | JobHistory | |
2202 | 2202 | Sandbox SSH 2 | 21000 | 21000 | Atlas | |
2222 | 2222 | DockerSSH | 30800 | 30800 | DAS | |
4040 | 4040 | Spark | 42080 | 80 | Apache | |
4200 | 4200 | AmbariShell | 42111 | 42111 | nfs | |
4557 | 4557 | NiFi DistributedMapCacheServer | 50070 | 50070 | WebHdfs | |
6080 | 6080 | XASecure | 50075 | 50075 | Datanode | |
6627 | 6627 | Storm Nimbus Thrift | 50095 | 50095 | Accumulo | |
6667 | 6667 | Kafka | 50111 | 50111 | WebHcat | |
7777 | 7777 | Streaming Analytics Manager | 60080 | 60080 | WebHBase | |
7788 | 7788 | Schema Registry | 61080 | 61080 | NiFi Registry | |
8000 | 8000 | Storm Logviewer | 61888 | 61888 | Log Search | |
8020 | 8020 | HDFS | 111 | 111 | Port for custom use | |
8032 | 8032 | Yarn Resource Manager | 2049 | 2049 | Port for custom use | |
8040 | 8040 | NodeManager | 3000 | 3000 | Port for custom use | |
8042 | 8042 | NodeManager | 4242 | 4242 | Port for custom use | |
8080 | 8080 | ambari | 8005 | 8005 | Port for custom use | |
8081 | 8081 | Druid2 | 8082 | 8082 | Port for custom use | |
8088 | 8088 | YARN | 8086 | 8086 | Port for custom use | |
8188 | 8188 | YarnATS | 8090 | 8090 | Port for custom use | |
8198 | 8198 | YarnATSR | 8091 | 8091 | Port for custom use | |
8443 | 8443 | Knox | 8765 | 8765 | Port for custom use | |
8585 | 8585 | Streams Messaging Manager | 10015 | 10015 | Port for custom use | |
8744 | 8744 | StormUI | 10016 | 10016 | Port for custom use | |
8886 | 8886 | AmbariInfra | 10502 | 10502 | Port for custom use | |
8889 | 8889 | Jupyter | 15002 | 15002 | Port for custom use | |
8983 | 8983 | SolrAdmin | 15500 | 15500 | Port for custom use | |
8993 | 8993 | Solr | 15501 | 15501 | Port for custom use | |
9000 | 9000 | HST | 15502 | 15502 | Port for custom use | |
9088 | 9088 | NiFi Protocol | 15503 | 15503 | Port for custom use | |
9089 | 9089 | Druid1 | 15504 | 15504 | Port for custom use | |
9090 | 9090 | Nifi | 15505 | 15505 | Port for custom use | |
9091 | 9091 | NiFi UI HTTPS | 16000 | 16000 | Port for custom use | |
9995 | 9995 | Zeppelin1 | 16020 | 16020 | Port for custom use | |
9996 | 9996 | Zeppelin2 | 18081 | 18081 | Port for custom use | |
10000 | 10000 | HS2 | 33553 | 33553 | Port for custom use | |
10001 | 10001 | HS2Http | 39419 | 39419 | Port for custom use | |
10002 | 10002 | HiveJDBCJar | 50079 | 50079 | Port for custom use | |
10500 | 10500 | HS2v2 | 60000 | 60000 | Port for custom use | |
11000 | 11000 | Oozie |
자세한 사항은 아래 문서를 참고한다.
참고사항
Docker Hub에서 sandbox-hdp로 검색해보면 해당 Docker 이미지를 찾을 수 있다.
설명 페이지에 2.6.5 버전 설치를 안내하고 있지만, 해당 Tags를 클릭하면 3.0.1과 2.6.5 버전을 확인할 수 있다.
'::: 데이터 분석 :::' 카테고리의 다른 글
HDP Sandbox 3.0.1 사용 관련 참고 사항 (0) | 2021.10.14 |
---|---|
HDP Sandbox 3.0.1의 HDFS에 admin, root 계정 권한 추가하기 (0) | 2021.10.11 |
설정 변경하여 배포한 HDP Sandbox의 Docker 이미지 사용 (0) | 2021.10.04 |
배포한 HDP Sandbox Docker 이미지 사용을 위한 스크립트 작성 (0) | 2021.09.30 |
설정 변경한 HDP Sandbox 2.6.5의 Docker 이미지 배포 (0) | 2021.09.27 |