::: 데이터 분석 :::

HDP Sandbox 2.6.5 Docker 설정과 Ambari 로그인하기

곰탱이푸우 2021. 9. 16. 08:20
참고사항

본 글은 2018년에 기술 조사를 진행하면서 확인한 내용으로, 최신 상황에 맞게 업데이트 하였으나 일부 부족한 내용이 있을 수 있습니다.
빅데이터나 하둡 관련 전문가가 아니기 때문에 셋팅과 기본적인 사용 외에, 하둡과 관련 생태계 운영의 트러블 슈팅은 잘 모릅니다.
오픈소스 특성상 직접 조사하고 해결해야 하는 부분이 많습니다. 기본 셋팅 관련해서 참고만 부탁 드립니다.


이전 포스팅에서 HDP Sandbox에 대한 간략한 소개와 Docker 셋팅에 필요한 파일 다운로드를 진행했다.

HDP Sandbox 소개와 Docker 셋팅 파일 다운로드

참고사항 본 글은 2018년에 기술 조사를 진행하면서 확인한 내용으로, 최신 상황에 맞게 업데이트 하였으나 일부 부족한 내용이 있을 수 있습니다. 빅데이터나 하둡 관련 전문가가 아니기 때문에

www.bearpooh.com



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 생태계의 거의 모든 프로젝트가 포함되어 있는 것을 알 수 있다.

  • Apache Hadoop 2.7.3
  • Apache Livy 0.4
  • Apache Spark 1.6.3
  • Apache Spark 2.3.0
  • Apache Zeppelin 0.7.3
  • Apache ZooKeeper 3.4.6
  • Apache Accumulo 1.7.0
  • Apache Atlas 0.8.0
  • Apache Calcite 1.2.0
  • Apache DataFu 1.3.0
  • Apache Falcon 0.10.0
  • Apache Flume 1.5.2 
  • Apache HBase 1.1.2
  • Apache Hive 1.2.1
  • Apache Hive 2.1.0
  • Apache Kafka 1.0.0
  • Apache Knox 0.12.0
  • Apache Mahout 0.9.0+ 
  • Apache Oozie 4.2.0
  • Apache Phoenix 4.7.0
  • Apache Pig 0.16.0
  • Apache Ranger 0.7.0
  • Apache Slider 0.92.0 
  • Apache Sqoop 1.4.6
  • Apache Storm 1.1.0
  • Apache TEZ 0.7.0

HDP Sandbox 이미지 시작시 자동 시작 되는 서비스

HDP Sandbox 이미지를 시작하면 다음과 같은 서비스들이 자동으로 시작된다.

HDP SERVICES STARTED AUTOMATICALLY ON STARTUP

  • Ambari - AmbariServer, Ambari Agent (non java process) 
  • HDFS - Portmap, NameNode, DataNode
  • Spark2- HistoryServer, Livy server run as livy, Thrift server
  • YARN - ApplicationHistoryServer, ResourceManager, NodeManager
  • HIVE- RunJar – webhcat, RunJar – metastore, RunJar – hiveserver2
  • Ranger - UnixAuthenticationService, EmbededServer
  • Zookeeper - QuorumPeerMain
  • Mapreduce - JobHistoryServer
  • Zeppelin - ZeppelinServer
  • Nfs - Portmap
  • Flume - Application
  • Oozie - Bootstrap
  • Kafka




자세한 내용은 아래 페이지를 참고한다.

HDP

As of December 2017, Hortonworks HDB is no longer available as part of new service subscriptions. Hortonworks HDB (Powered by Apache HAWQ)

docs.cloudera.com

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가 설치되어 있어야 한다.
진행 과정은 아래 페이지에 정리되어 있다.

Deploying Hortonworks Sandbox on Docker

Deploying Hortonworks Sandbox on Docker

www.cloudera.com

Docker 설치

Docker는 17.09 또는 그 이후 버전이 필요하다.

아래 페이지를 참고하여 설치를 진행한다.

Install Docker Engine on Ubuntu

docs.docker.com

Install Docker Desktop on Windows

docs.docker.com

Install Docker Desktop on Mac

docs.docker.com

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을 활성화 하는 방법은 아래 포스팅을 참고한다.

윈도우10 Linux Bash Shell 설치 및 사용 방법

HowTo - Windows 10에서 Linux Bash Shell 설치 및 사용 방법 안내  Microsoft는 Canonical과 협력하여 윈도우 하위 시스템에서 실행되는 Ubuntu 기반의 Bash Shell 환경을 제공하고 있으며 Debian, Ubuntu 및 O..

forbes.tistory.com


git-scm 사용
윈도우 10이 아니거나 bash shell만 사용하려는 경우 git-scm을 설치하면 git에 내장 된 bash shell을 사용할 수 있다.

다음 페이지를 참고한다.

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com


git-scm 설치 방법은 다음 포스팅을 참고한다.

윈도우 환경에서 git-scm 설정하기

우분투 환경에서는 sudo apt install git 명령만 실행하면 git 설치가 쉽게 진행되지만, 윈도우에서는 별도 설치 패키지가 필요하다. 일반적으로 윈도우 환경에서 가장 유명한 것은 git-scm으로 알려져

www.bearpooh.com


설치 완료 후 git bash를 사용하면 bash shell을 사용할 수 있다.

Docker 설치 스크립트 다운로드

이전 포스팅을 참고하여 HDP Sandbox의 Docker 셋팅에 필요한 파일 다운로드를 진행한다.

HDP Sandbox 소개와 Docker 셋팅 파일 다운로드

참고사항 본 글은 2018년에 기술 조사를 진행하면서 확인한 내용으로, 최신 상황에 맞게 업데이트 하였으나 일부 부족한 내용이 있을 수 있습니다. 빅데이터나 하둡 관련 전문가가 아니기 때문에

www.bearpooh.com



임의의 폴더에 압축을 해제한다. 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 계정의 비밀번호는 다음 페이지를 참고하여 변경한다.

Learning the Ropes of the HDP Sandbox

Learning the Ropes of the HDP Sandbox

www.cloudera.com


웹페이지를 통해 제공되는 Shell Web Client를 이용하면 쉽게 변경할 수 있다. (Shell-in-a-box 라고도 한다.)

  • http://sandbox-hdp.hortonworks.com:4200/에 접속한다.
  • root 계정으로 로그인한다. 초기 비밀번호는 hadoop이다. 비밀번호 변경 요청에 따라 새로운 비밀번호를 지정한다.
  • ambari-admin-password-reset 명령을 실행하고, 새로운 admin 계정의 비밀번호를 입력한다.


각 계정별 의미는 다음 페이지를 참고한다. 역할별로 구분해서 사용해도 무방하다.

Learning the Ropes of the HDP Sandbox

Learning the Ropes of the HDP Sandbox

www.cloudera.com


각 계정별 역할은 다음과 같다.

구분 내용
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 이미지를 찾을 수 있다.

Docker Hub

hub.docker.com


설명 페이지에 2.6.5 버전 설치를 안내하고 있지만, 해당 이미지는 2.6.4 버전까지 지원한다.


2.6.5 버전은 sandbox-hdp 이름으로 별도로 구성되어 있다. 설명 페이지 내용은 동일하다.

Docker Hub

hub.docker.com