참고사항
본 글은 2018년에 기술 조사를 진행하면서 확인한 내용으로, 최신 상황에 맞게 업데이트 하였으나 일부 부족한 내용이 있을 수 있습니다.
빅데이터나 하둡 관련 전문가가 아니기 때문에 셋팅과 기본적인 사용 외에, 하둡과 관련 생태계 운영의 트러블 슈팅은 잘 모릅니다.
오픈소스 특성상 직접 조사하고 해결해야 하는 부분이 많습니다. 기본 셋팅 관련해서 참고만 부탁 드립니다.
이전 포스팅에서 HDP Sandbox에 대한 간략한 소개와 Docker 셋팅에 필요한 파일 다운로드를 진행했다.
HDP Sandbox 2.6.5 버전을 구성하고 하둡 클러스터를 관리하는 Ambari에 로그인 하는 과정을 진행한다.
HDP Sandbox 개요
Sandbox 이미지는 VMware, VirtualBox, Docker 형태로 제공되고 있으며, 여기서는 Docker 중심으로 정리한다.
2.6.5 버전의 Docker 이미지 크기는 약 15GB이다. VMware, VirtualBox는 16GB 정도이다.
또한 최소 8GB 이상의 메모리를 할당하도록 권장하므로 시스템은 최소 12GB 이상의 메모리가 필요하다.
HDP 2.6.5에 기본 포함 된 Apache 프로젝트
HDP 2.6.5에 기본으로 포함 된 Apache 프로젝트는 다음과 같다. Hadoop과 Spark 관련 프로젝트를 우선 표시했다.
그 외에도 Hadoop 생태계의 거의 모든 프로젝트가 포함되어 있는 것을 알 수 있다.
|
|
|
HDP Sandbox 이미지 시작시 자동 시작 되는 서비스
HDP Sandbox 이미지를 시작하면 다음과 같은 서비스들이 자동으로 시작된다.
HDP SERVICES STARTED AUTOMATICALLY ON STARTUP
|
|
자세한 내용은 아래 페이지를 참고한다.
Docker Image 정보
Docker HDP 가상 이미지의 운영체제와 Java 버전은 다음과 같다.
SYSTEM INFORMATION
OS Version (docker container) |
CentOS release 7.5.1804 (Core) |
Java Version (docker container) |
OpenJDK version “1.8.0.171” OpenJDK Runtime Environment (build 1.8.0.171-8.b10) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode) |
Updated from previous version |
Docker 환경 설정
HDP Docker 이미지를 다운로드 하기 위해서는 먼저 설치하려는 시스템에 Docker가 설치되어 있어야 한다.
진행 과정은 아래 페이지에 정리되어 있다.
Docker 설치
Docker는 17.09 또는 그 이후 버전이 필요하다.
아래 페이지를 참고하여 설치를 진행한다.
Docker RAM 설정
램 여유 공간은 최소 8-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-hdp265.sh 파일을 확인할 수 있다.
Docker 설치 스크립트 수정
터미널을 열고 해당 sh 파일의 위치로 이동하고, 아래 sh 파일들을 수정한다.
docker-deploy-hdp265.sh
이 파일은 Sandbox HDP와 Sandbox Proxy Docker 이미지를 다운로드하고 컨테이너로 실행하는 기능을 수행한다.
아래와 같이 수정한다.
1) registry 항목을 수정한다.
# 수정 전 (5~6번 라인) # CAN EDIT THESE VALUES registry="hortonworks" # 수정 후 # CAN EDIT THESE VALUES registry="Docker저장소URL:포트/hortonworks" # ex. "docker.repository.com:50000/hortonworks"
2) # start the docker container and proxy 부분의 if ~~ fi 구문을 수정한다.
# 수정 전 (27~32번 라인) # start the docker container and proxy if [ "$flavor" == "hdf" ]; then hostname="sandbox-hdf.hortonworks.com" elif [ "$flavor" == "hdp" ]; then hostname="sandbox-hdp.hortonworks.com" fi # 수정 후 hostname="sandbox-hdp.hortonworks.com"
3) 스크립트에 포함 된 모든 조건문의 ==를 =로 수정한다.
assets/generate-proxy-deploy-script.sh
이 파일은 Sandbox HDP 컨테이너가 사용하는 포트에 대해 nginx를 사용해서 내부 포트와 외부 포트를 연결하는 기능을 수행한다.
아래와 같이 수정한다.
1) 시작 부분의 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
2) 조건문의 ==를 =로 수정한다.
3) Livy 포트는 포함되어 있지 않으므로 다음과 같이 추가한다.
# 수정 전 tcpPortsHDP=( ... 생략 ... [8983]=8983 [8993]=8993 [9000]=9000 [9996]=9996 ... 생략 ... # 수정 후 tcpPortsHDP=( ... 생략 ... [8983]=8983 [8993]=8993 ### 추가 된 부분 시작 ### [8998]=8998 [8999]=8999 ### 추가 된 부분 끝 ### [9000]=9000 [9996]=9996 ... 생략 ...
4) 스크립트 마지막 줄을 다음과 같이 수정한다.
# 수정 전 cat << EOF >> sandbox/proxy/proxy-deploy.sh -d hortonworks/sandbox-proxy:$version EOF # 수정 후 cat << EOF >> sandbox/proxy/proxy-deploy.sh -d Docker저장소URL:포트/hortonworks/sandbox-proxy:$version EOF # ex. docker.repository.com:50000/hortonworks/sandbox-proxy:$version
HDP Sandbox Docker 이미지 설치
다음 명령을 실행해서 스크립트를 실행한다.
$ bash ./docker-deploy-hdp265.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:{버전}
hosts 파일 수정
hosts 파일을 수정해서 127.0.0.1 IP주소에 sandbox.hortonworks.com, sandbox-hdp.hortonworks.com 주소를 추가한다.
운영체제마다 hosts 파일의 경로가 다르므로, 아래 내용을 참고한다.
- 리눅스 - /etc/hosts
- 윈도우 - C:\Windows\system32\drivers\etc\hosts
- 맥 (Mac) - /private/etc/hosts
정상 접속 여부 확인
다음 주소에 접속하면 최초 접속을 알려주는 시작 페이지에 접속할 수 있다. 스플래시 페이지라고도 한다.
시작 페이지 좌측 하단의 LAUNCH DASHBOARD를 클릭하거나 다음 주소로 접속하면 Ambari 페이지로 이동할 수 있다.
로그인 창이 나오면 Username과 Password에 maria_dev를 입력한다.
참고로 로그인 계정과 비밀번호는 다음과 같다.
admin 계정 비밀번호 변경
admin 계정의 비밀번호는 다음 페이지를 참고하여 변경한다.
웹페이지를 통해 제공되는 Shell Web Client를 이용하면 쉽게 변경할 수 있다. (Shell-in-a-box 라고도 한다.)
- http://sandbox-hdp.hortonworks.com:4200/에 접속한다.
- root 계정으로 로그인한다. 초기 비밀번호는 hadoop이다. 비밀번호 변경 요청에 따라 새로운 비밀번호를 지정한다.
- ambari-admin-password-reset 명령을 실행하고, 새로운 admin 계정의 비밀번호를 입력한다.
각 계정별 의미는 다음 페이지를 참고한다. 역할별로 구분해서 사용해도 무방하다.
각 계정별 역할은 다음과 같다.
구분 | 내용 |
admin | 시스템 관리자 |
maria_dev | 데이터를 준비하고 통찰력을 제공할 개발자 Maria |
raj_ops | 인프라 구축 (설계, 설치, 구성), 연구 및 개발 활동 담당할 개발자 또는 시스템 관리 전문가 Raj |
holger_gov | 콘텐츠 데이터, 메타데이터 관리, 프로세스/정책/지침 등을 통합하는 전문가 Holger |
amy_ds | 데이터 분석, 정리 등을 수행하는 데이터 과학자 Amy |
Ambari 로그인
Ambari에 로그인하면 다음과 같은 Dash Board를 확인할 수 있다.
이후 과정은 Ambari에서 서비스 패키지들을 설치하고 관리할 수 있다.
Ambari의 All Service Start
컨테이너를 활성화 시키고 Ambari에 접속해보면 각 서비스들이 빨간색으로 표시되고 Alert이 많이 발생할 수 있다.
- HDP Sandbox 컨테이너를 실행하면 기본적으로 All Service Start 기능이 자동으로 실행된다.
- 컨테이너 실행 후 약 10분 정도 지나야 모든 서비스를 정상적으로 사용할 수 있다.
- 화면 좌측 하단의 Actions → All Service Start를 하면 모든 서비스들이 재시작 되며 해결 가능하다. (약 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은 굵게 강조하였다.
외부 | 내부 | 비고 | 외부 | 내부 | 비고 | |
1111 | 111 | NFS gateway | 9091 | 9091 | NiFi SSL | |
2049 | 2049 | NFS gateway | 9995 | 9995 | Zeppelin | |
2181 | 2181 | Zookeeper | 9996 | 9996 | Zeppelin | |
2222 | 22 | Sandbox container SSH | 10015 | 10015 | Spark | |
3000 | 3000 | Grafana | 10016 | 10016 | Spark | |
4040 | 4040 | Spark | 10000 | 10000 | HiveServer2 | |
4200 | 4200 | Ambari Shell | 10001 | 10001 | HiveServer2Http | |
4242 | 4242 | NFS gateway | 10500 | 10500 | HiveServer2v2 | |
4557 | 4557 | NiFi DistributedMapCacheServer | 10502 | 10502 | HiveServer2 Interactive UI | |
6080 | 6080 | Ranger | 11000 | 11000 | Oozie | |
6188 | 6188 | Ambari Metrics Timeline Server | 15000 | 15000 | Falcon | |
8000 | 8000 | Storm Logviewer | 15002 | 15002 | Hive LLAP | |
8005 | 8005 | Sqoop / Common Tomcat port | 16000 | 16000 | HBase Master | |
8020 | 8020 | HDFS | 16010 | 16010 | HBase Master Info | |
8032 | 8032 | Yarn ResourceManager | 16020 | 16020 | HBase Regionserver | |
8040 | 8040 | NodeManager | 16030 | 16030 | HBase Regionserver Info | |
8042 | 8042 | NodeManager | 18080 | 18080 | SparkHistoryServer | |
8050 | 8050 | Yarn ResourceManager | 18081 | 18081 | Spark2 History Server | |
8080 | 8080 | Ambari | 19888 | 19888 | JobHistory | |
8082 | 8082 | Namenode UI | 21000 | 21000 | Atlas | |
8086 | 8086 | Namenode UI | 33553 | 33553 | Hive LLAP | |
8088 | 8088 | Yarn ResourceManager | 39419 | 39419 | Hive LLAP | |
8090 | 8090 | Namenode UI | 42111 | 42111 | NFS | |
8091 | 8091 | Namenode UI | 50070 | 50070 | Webhdfs | |
8188 | 8188 | YarnATS | 50075 | 50075 | Datanode | |
8443 | 8443 | Knox | 50079 | 50079 | NFS gateway | |
8744 | 8744 | StormUI | 50095 | 50095 | Accumulo | |
8765 | 8765 | Phoenix | 50111 | 50111 | WebHcat | |
8886 | 8886 | Ambari Infra | 61888 | 61888 | LogsearchUI | |
8888 | 8888 | Tutorials splash page | 15500 | 15500 | Port for custom use | |
8889 | 8889 | Jupyter | 15501 | 15501 | Port for custom use | |
8983 | 8983 | SolrAdmin | 15502 | 15502 | Port for custom use | |
8993 | 8993 | Solr | 15503 | 15503 | Port for custom use | |
9000 | 9000 | HST (Smartsense) minio port와 충돌로 9001 사용 권장 |
15504 | 15504 | Port for custom use | |
9090 | 9090 | NiFi | 15505 | 15505 | Port for custom use |
참고사항
Docker Hub에서 sandbox-hdp-standalone으로 검색해보면 해당 Docker 이미지를 찾을 수 있다.
설명 페이지에 2.6.5 버전 설치를 안내하고 있지만, 해당 이미지는 2.6.4 버전까지 지원한다.
2.6.5 버전은 sandbox-hdp 이름으로 별도로 구성되어 있다. 설명 페이지 내용은 동일하다.
'::: 데이터 분석 :::' 카테고리의 다른 글
배포한 HDP Sandbox Docker 이미지 사용을 위한 스크립트 작성 (0) | 2021.09.30 |
---|---|
설정 변경한 HDP Sandbox 2.6.5의 Docker 이미지 배포 (0) | 2021.09.27 |
HDP Sandbox 2.6.5 접속 관련 참고사항 (0) | 2021.09.23 |
HDP Sandbox 2.6.5 HDFS에 데이터 업로드 하기 (0) | 2021.09.20 |
HDP Sandbox 소개와 Docker 셋팅 파일 다운로드 (2) | 2021.09.13 |