NHN Cloud
  • [NHN Cloud] NHN Cloud 교육 정보 공유
  • [NHN Recruitings] NHN 채용/취업/공고 사이트
  • [Naver Cloud Recruitings] nCloud 채용/취업/공고 사이트
  • [NHN Cloud] 행사/프로모션 정보 공유
  • [NHN Cloud] NHN Kubernetes Service(NKS) 활용법
  • [NHN Cloud] NHN Kubernetes Service(NKS) 관리용 OpenSource 설치 방법
  • TIPs. [NHN Cloud] NHN Kubernetes Service(NKS) 의 LoadBalancer 사용법
  • [NHN Cloud] NHN Kubernetes Service(NKS) 를 이용한 커뮤니티 블로그 구축 사례
  • [NHN Cloud] YouTube 사용자 가이드
  • [NHN Cloud] Dooray 사용자 가이드
  • NHN, AWS, Tencent, KT Cloud Calculator
  • [취업정보] 2022's Cloud Job Infomations
  • [NHN Cloud] 공식 블로그
  • [NHN Cloud] 공식 페이스북
  • [NHN Cloud] 공식 Youtube
  • [DataUs][NHN Cloud] 클라우드 입문자를 위한 보안 가이드
  • [KISA] 클라우드 취약점 점검 가이드
  • [KISA] 주요정보통신기반시설 기술적 취약점 분석ㆍ평가 방법 상세가이드
  • [KISA] NAS 보안 가이드라인
  • AI-NAS 오류코드 분석기
  • Docker 관리 UI Manager Tool
  • 빠른 개발을 위한 docker 활용법(5분 완성)
  • 시스템 별 도커(docker) 설치 방법
  • Docker Windows 컨테이너 실행 가이드
  • Lean Startup 을 위한 docker 사용법
  • Remote - Containers 를 사용한 Visual Studio Code 원격 개발 feat.Dockerfile
  • DockerFile 을 이용하여 나만의 Docker Image 만들기
  • DockerFile 을 이용하여 나만의 Docker Image [Tomcat+Jenkins] 만들기
  • Docker-Compose 를 이용하여 Yona 사용하기
  • Docker-Compse 를 이용하여 Rocket.Chat 사용하기
  • [DataUs] Open Data Quality - 공공데이터 품질 개선 도구 to GitHub
  • 베라크립트(VeraCrypt) 을 이용하여 암호화된 가상 디스크 만들기
  • 가비아 Apache SSL 보안인증서 to Tomcat SSL 보안인증서로 변경
  • NHN Cloud Guide Document
    • [NHN Cloud] 콘솔 보안 가이드
    • [NHN Cloud] 랜섬웨어 대응 가이드
    • [NHN Cloud] 컨테이너 보안 가이드
    • [NHN Cloud] 네트워크 보안 아키텍처
    • [NHN Cloud] 개인정보보호법 준수를 위한 개인정보 보호 조치
    • [NHN Cloud] 클라우드 보안 백서 신청 하기
  • Ransomware_Decryption_Tools
    • [KISA] 랜섬웨어 대응 가이드라인('23년 개정본)
    • [NoMoreRANSOM] 랜섬웨어 복구 프로그램 및 지원 사이트
    • [KISA] 랜섬웨어 복구도구 모음
  • 외부 링크
    • [외부 링크] 자료 모음 공유
    • [과학기술정보통신부][요약본] SW 공급망 보안 가이드라인
    • [KISA] 인터넷 브라우저를 더 안전하게!
    • 카카오엔터테인먼트 불법유통대응 3차백서
    • [KISA Insight 2023 Vol.03] ChatGPT(챗GPT) 보안 위협과 시사점
    • [이글루코퍼레이션/코스닥협회] Beginner를 위한 램섬웨어 예방 및 대응 가이드
    • [행정안전부·한국인터넷진흥원] 모바일 대민서비스 보안취약 점 점검 가이드
    • [SK쉴더스][보안 가이드] 2023 클라우드 보안 가이드 - AWS
    • [SK쉴더스][보안 가이드] 2023 클라우드 보안 가이드 - Azure
    • [SK쉴더스][보안 가이드] 2023 클라우드 보안 가이드 - GCP
    • [Microsoft-Ssecurity] 하이브리드 업무 환경을 위한 마이크로소프트의 보안 전략
    • [Microsoft-Ssecurity] 보안 담당자가 꼭 알아야 할 마이크로소프트 Zero Trust 전략편
    • [KISA] ISMS-P 인증기준 안내서(2023.11.23) [PDF]
    • [KISA] ISMS-P 인증기준 안내서 [PDF]
    • [KISA] ISMS-P 세부점검항목 공지(22.04.22) [xlsx]
    • [KISA] ISMS-P_인증제도_안내서(2021.7) [PDF]
    • [KISA] 정보보호_관리체계(ISMS)_인증제도_안내서(2017.04) [PDF]
    • [KISA] PIMS 인증제도 안내서(1권) - 제도운영편 [PDF]
    • [KISA] PIMS 인증제도 안내서(2권) - 인증기준편 [PDF]
    • [KISA] PIMS_인증기준_세부점검항목(2016.11.09) [xlsx]
    • [KT Cloud] KT Cloud 보안가이드
    • [과학기술정보통신부] 민간분야 주요정보통신기반시설 클라우드 이용 가이드라인
    • [nCloud] Naver Cloud Platform 보안가이드
    • [KT Cloud] KT Cloud 보안백서
    • [ADT캡스/Infosec] 클라우드보안가이드(컨테이너 보안)-Docker, Kubernetes
    • [ADT캡스/Infosec] 2021 클라우드 보안 가이드 GCP
    • [ADT캡스/Infosec] 2021 클라우드 보안 가이드 Azure
    • [ADT캡스/Infosec] 2021클라우드보안가이드 AWS
    • [KISA] 웹 에디터 보안 가이드
    • [NHN Cloud] NHN Cloud | On.1 2022 클라우드 트렌드
    • [NHN Cloud] NHN Cloud | On.2 Cloud by default, Cloud NATIVE by default
    • [NHN Cloud] NHN Cloud | On.3 Cloud, AI and Fashion
  • [KISA] 제로트러스트가이드라인
    • [KISA] 제로트러스트가이드
  • Naver Cloud Infomation
    • [nCloud] Ubuntu 20.04 불필요한 계정 삭제 방법
  • AWS References
    • AWS 아키텍처 센터
    • [PowerPoint용] AWS Icon
    • AWS Icons Asset Package
  • Best-Practices
    • 조직 및 운영 보안(OPS)
    • 시스템 보안 권장사항(SYSTEM)
    • 앱 보안 권장사항(APP)
    • 네트워크 보안 권장사항(NETWORK)
    • 하드웨어 보안 권장사항(HARDWARE)
    • 개인정보 보호/보안 권장사항(PRIVAY)
  • 기타정보
    • 피싱 사이트 확인 하는 방법
    • [KISA] 보이스피싱 대응 방법
    • 해킹 IP 공유
    • [KISA] 공동주택 홈네트워크 시스템 보안관리 안내서
    • [개인정보보호위원회] 가명정보 처리 가이드라인(2022.4.)
    • [개인정보보호위원회] 가명정보 활용 우수사례집
    • [금융감독원/DAXA] 가상자산 연계 투자사기 사례 7선
  • GitHub-Infomations
    • NHN-Github
    • Naver-Github
    • Kakao-Github
    • Samsung-Github
    • LG_Electronics-Github
    • SKTelecom-Github
    • FaceBook-Github
    • Google-Github
    • Microsoft-Github
    • Amazon-Github
  • Killing-Time
    • [클래스101] 23년 무료 취미테스트
    • 해커스잡 NCS&인적성 무료레벨테스트
    • 해커스토플 무료레벨테스트
    • 해커스중국어 무료레벨테스트
    • 탑툰-선생님의 노력[19금]
    • 탑툰-마니또[19금]
    • 탑툰-보스의 딸[19금]
    • 무툰 도시정벌9부
    • 탑툰 취화점
    • 무툰 열혈강호
    • 무툰 요쿠르트 아줌마[19금]
    • 탑툰-엄마야 누나야[19금]
    • 탑툰-내 맘대로 장모님[19금]
    • 탑툰-치킨클럽[19금]
    • 탑툰-여동생이랑 비밀 레슨[19금]
    • 탑툰-뺏는 남자[19금]
    • 무툰 최면으로 그녀들을 함락시키는 법[19금]
    • 무툰 그 남자의 공부법[19금]
    • 무툰 모비딕[19금]
    • 무툰 건물주 누나[19금]
    • 탑툰-나의 일러레님[19금]
    • 무툰 구멍가게 구멍열었습니다[19금]
    • 무툰 치한중독[19금]
  • TIPS
    • 소상공인지식배움터(Feat. 교보문고 무료 대여)
    • 노트북 AS 기간 확인 하기
    • AI Support Tools
    • AI ChatGPT Prompt Study
  • BOOKS
    • [쿠팡] [영진닷컴]그림으로 배우는 클라우드 2nd Edition
    • [쿠팡]그림으로 배우는 클라우드 인프라와 API의 구조
    • [쿠팡] 한눈에 보는 실전 클라우드 프로젝트:클라우드 기본과 프로세스 아키텍처 설계와 구현 보안 데브옵스까지 실증
    • [쿠팡] 아마존 웹 서비스 AWS Discovery Book:클라우드 서비스 개념을 이해하고 직접 구성해보기
    • [쿠팡] 클라우드 환경에서의 데브옵스 보안:안전한 클라우드 서비스를 위한 보안 기법과 데브옵스 실천법
    • [쿠팡] 쿠버네티스 쿡북:클라우드 네이티브 애플리케이션 구축
    • [쿠팡] 클라우드 엔지니어를 위한 97가지 조언 : 클라우드 엔지니어 86명의 통찰과 지식을 담은 현실적인 이야기
    • [쿠팡] 멀티 클라우드로의 전환:알맞은 멀티 클라우드 솔루션 찾아보기
    • [쿠팡] 클라우드 AWS 자격증으로 시작하기
  • Hobby
    • [Youtube] succulent
      • [Youtube] 다육이 키우는 중. #6
      • [Youtube] 다육이 키우는 중. #5
      • [Youtube] 다육이 키우는 중. #4
      • [Youtube] 다육이 키우는 중. #3
      • [Youtube] 다육이 키우는 중. #2
      • [Youtube] 다육이 키우는 중. #1
  • 심심할때 보는 기사
    • Enjoy News
  • TEST-1 Page
  • TEST Page
  • World_ip_addr
    • 2024 Year IP Addr List
    • 2023 Year IP Addr List
  • Startup Infomation
    • Startup 정보 공유
  • Security Collections
Powered by GitBook
On this page
  • 1. Lean Startup 이란 무엇인가?
  • 2. 소프트웨어 개발자는 왜 Docker 를 사용 하여야 하는가?
  • 3. 그럼 Docker 란 무엇인가?
  • 4. 가상화 vs 도커
  • 5. Docker 를 사용하여 빠른 개발환경 구축 방법
  • 5.1 TensorFlow 시스템 구축 (1분 완성)
  • 5.2 Hadoop 시스템 구축 (5분 완성)
  • 작성중인 문서.....

Was this helpful?

Lean Startup 을 위한 docker 사용법

[https://doc.skill.or.kr] 개발을 위한 시스템 구축을 가장 빠르게 하기 위한 docker 사용법(개발자가 봐야 하는 문서)

Last updated 3 years ago

Was this helpful?

2022년 NHN Cloud 무료 교육일정 :

2022년 NHN Cloud 행사/프로모션 정보 공유 :

1. Lean Startup 이란 무엇인가?

아이디어를 빠르게 최소요건제품(시제품)으로 제조한 뒤 시장의 반응을 통해 다음 제품 개선에 반영하는 전략이다.

이를 통해 짧은 시간 동안 제품을 만들고 성과를 측정해 다음 제품 개선에 반영하는 것을 반복해 성공 확률을 높이는 경영 방법론의 일종이다. 일본 도요타자동차의 린 제조(lean manufacturing) 방식을 본 뜬 것으로, 미국 실리콘밸리의 벤처기업가 에릭 리스(Eric Ries, 1979~ )가 개발했다. 린스타트업은 「만들기 ─ 측정 ─ 학습」의 과정을 반복하면서 꾸준히 혁신해 나가는 것을 주요 내용으로 한다.

2. 소프트웨어 개발자는 왜 Docker 를 사용 하여야 하는가?

소프트웨어 개발자가 프로그램을 개발하려면 노트북 1대만 갖춰선 될 일이 아니다. 여러 명이 동시에 개발할 수 있는 환경도 필요하며, 수천명의 사용자를 상대로 내놓으려면 인프라 환경도 갖춰야 한다. 서버와 스토리지, 운영체제 등을 뒷단에서 갖추고 관리해야 하는 것이다. 이에 맞는 미들웨어와 런타임 환경을 제대로 구성하는 데 보통 수개월 이상 걸리곤 한다.

Docker를 통 이용자는 몇 분에서 몇 시간 혹은 하루 정도의 시간으로 플랫폼을 손쉽게 구축할 수 있다.

즉, 빠른 개발환경의 구축을 위해 Docker 를 사용 하여야 한다.

3. 그럼 Docker 란 무엇인가?

도커(Docker)는 리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다. 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싸며 리눅스에서 운영 체제 수준 가상화의 추상화 및 자동화 계층을 추가적으로 제공한다. 도커는 cgroups와 커널 이름 공간과 같은 리눅스 커널, 또 aufs와 같은 유니언 가능 파일 시스템의 리소스 격리 기능을 사용하며, 이를 통해 독립적인 "컨테이너"가 하나의 리눅스 인스턴스 안에서 실행할 수 있게 함으로써 가상 머신을 시작하여 유지보수 해야 하는 부담을 없애준다.

4. 가상화 vs 도커

리눅스 컨테이너 기술은 가상화와 비슷한 기술이다. 가상화 기술은 하이퍼바이저라는 기술이 반드시 있어야 한다. 하이퍼바이저는 하나의 컴퓨터에서 여러 개의 운영체제(OS)를 사용할 수 있게 도와주는 기술이다. 가상화 환경은 가장 밑단에 깔린 호스트 OS를 공유한다. 만약 게스트 OS가 네트워크를 많이 사용하는 애플리케이션을 돌리면 어떻게 될까. 한정된 호스트 OS 자원으로는 애플리케이션을 감당하기 어렵게 된다. 하이퍼바이저도 호스트 OS와 게스트 OS, 애플리케이션을 중재하는 과정에서 많은 작업을 처리하게 된다.

도커는 하이퍼바이저와 달리 게스트 OS를 두지 않고 호스트 OS 커널을 바로 사용한다. 하이퍼바이저 대신 도커 엔진이 올라가, 호스트 OS와 여러 애플리케이션을 연결해주는 역할을 한다. 따라서 도커를 사용하면 가상화보다는 내부에서 더 적은 일을 처리하고, 애플리케이션을 좀더 빠르고 효율적으로 실행시킬 수 있다. 현재 업계에선 가상화 기술과 도커가 서로 부족한 부분을 채우는 보완 기술로 발전할 것으로 보고 있다.

5. Docker 를 사용하여 빠른 개발환경 구축 방법

5.1 TensorFlow 시스템 구축 (1분 완성)

Step 1. 사전 준비 단계

  • 폴더 구조

메인 폴더

서브 폴더

파일

설명

tensorflow

upload

tensorflow 업로드 폴더 지정

result

tensorflow 저장 폴더 지정

tmp

tensorflow 임시 저장 폴더

docker-compose.yml

docker-compose.yml 설정 파일

Step 2. Docker-compose.yml 설정

docker-compose.yml
version: '2' # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )
 tensorflow-jupyter: # 서비스 명
  image: tensorflow/tensorflow:latest-jupyter # 사용할 이미지
  container_name: tensorflow-jupyter # 컨테이너 이름 설정
  volumes:
   - ./tensorflow/result:/tf/tensorflow-tutorials/result # result 폴더에 결과 저장
   - ./tensorflow/upload:/tf/tensorflow-tutorials/upload # upload 폴더
   - ./tensorflow/tmp:/tmp # 임시 파일
  restart: always 
  ports:
   - "8888:8888" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)

Step 3. Docker-compose 실행 및 중지/재시작

cd ./docker-compose/
cd ./tensorflow/
docker ps 
docker-compose.exe up -d
docker ps
cd ./docker-compose/
cd ./tensorflow/
docker ps
docker-compose.exe down
docker ps
cd ./docker-compose/
cd ./tensorflow/
docker ps
docker-compose.exe restart
docker ps

Step 4. TensorFlow 접속 및 확인

docker logs -f tensorflow-jupyter # 실행 후 URL Log 확인    
Docker 로그를 통해 token 을 이용하 크롬에 접속  
크롬에 URL 을 정상적으로 입력 하면 아래와 같은 화면을 볼 수 있음 

Step 5. TensorFlow 실행 및 저장

크롬 localhost:8888 접속 후 tensorflow-tutorials 폴더 확인
ipynb 파일 클릭 후 아래와 같이 확인
상단에 Run or restart 버튼을 클  

Main 화면에서 Upload 버튼 클릭 후 파일 선택  
업로드 후에 2번과 같이 진행    
진행 결과 확인 
결과 확인(Running) 및 파일 저장(File > Save as)     

5.2 Hadoop 시스템 구축 (5분 완성)

Step 1. 사전 준비 단계

  • 폴더 구조

메인 폴더

서 폴더

서 폴더

파일

설명

hadoop

logs

Hadoop 로그 파일 저장

dfs

name

NameNode 저장 위치

data

DataNode 저장 위치

namesecondary

NameNodeSecondary 저장 위치

docker-compose.yml

docker-compose.yml 설정 파일

Step 2. Docker-compose.yml 설정

docker-compose.yml
version: '2' # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )
 hadoop-dev: # 서비스 명
  image: harisekhon/hadoop-dev # 사용할 이미지
  container_name: hadoop-dev # 컨테이너 이름 설정
  restart: always 
  volumes:
   #- ./hadoop/dfs/name:/tmp/hadoop-root/dfs/name
   #- ./hadoop/dfs/data:/tmp/hadoop-root/dfs/data
   #- ./hadoop/dfs/namesecondary:/tmp/hadoop-root/dfs/namesecondary
   - ./hadoop/logs:/hadoop/logs
  ports:
   - 8042:8042    # node
   - 8088:8088    # cluster

Step 3. Docker-compose 실행 및 중지/재시작

cd ./docker-compose
cd ./hadoop
docker ps
docker-compose up -d
docker ps
docker-compose up -d
Creating network "hadoop_default" with the default driver
Creating hadoop-dev ... done
docker ps
CONTAINER ID   IMAGE                   COMMAND                   CREATED         STATUS          PORTS                                                                                                                                                                                          NAMES
02b2458e15d7   harisekhon/hadoop-dev   "/bin/sh -c \"/entryp…"   8 seconds ago   Up 11 seconds   0.0.0.0:8042->8042/tcp, 8020/tcp, 9000/tcp, 10020/tcp, 19888/tcp, 50010/tcp, 0.0.0.0:8088->8088/tcp, 0.0.0.0:50070->50070/tcp, 0.0.0.0:50075->50075/tcp, 50020/tcp, 0.0.0.0:50090->50090/tcp   hadoop-dev
cd ./docker-compose
cd ./hadoop
docker ps
docker-compose down
docker ps
docker-compose down
Stopping hadoop-dev ... done
Removing hadoop-dev ... done
Removing network hadoop_default
docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
cd ./docker-compose
cd ./hadoop
docker ps
docker-compose restart
docker ps
docker ps
CONTAINER ID   IMAGE                   COMMAND                   CREATED                  STATUS         PORTS                                                                                                                                                                                          NAMES
d33193820d6c   harisekhon/hadoop-dev   "/bin/sh -c \"/entryp…"   Less than a second ago   Up 3 seconds   0.0.0.0:8042->8042/tcp, 8020/tcp, 9000/tcp, 10020/tcp, 19888/tcp, 50010/tcp, 0.0.0.0:8088->8088/tcp, 0.0.0.0:50070->50070/tcp, 0.0.0.0:50075->50075/tcp, 50020/tcp, 0.0.0.0:50090->50090/tcp   hadoop-dev
docker-compose restart
Restarting hadoop-dev ... done
docker ps
CONTAINER ID   IMAGE                   COMMAND                   CREATED          STATUS         PORTS                                                                                                                                                                                          NAMES
d33193820d6c   harisekhon/hadoop-dev   "/bin/sh -c \"/entryp…"   25 seconds ago   Up 4 seconds   0.0.0.0:8042->8042/tcp, 8020/tcp, 9000/tcp, 10020/tcp, 19888/tcp, 50010/tcp, 0.0.0.0:8088->8088/tcp, 0.0.0.0:50070->50070/tcp, 0.0.0.0:50075->50075/tcp, 50020/tcp, 0.0.0.0:50090->50090/tcp   hadoop-dev

Step 4. Hadoop 시스템 확인

 크롬으로 localhost:8042 접속    
 크롬으로 localhost:8088 접속
 크롬으로 localhost:50070 접속
크롬으로 localhost:50075 접속 
크롬으로 localhost:50090 접속 

Step 5. Hadoop 테스트 확인

Hadoop 경로 이동 및 파일 저장(NOTICE.txt)    
docker exec -it hadoop-dev /bin/bash
[root@4bb51d4c894c /]# cd $HADOOP_HOME
[root@4bb51d4c894c hadoop]# ls
bin  etc  include  lib  libexec  LICENSE.txt  logs  NOTICE.txt  README.txt  sbin  share
[root@4bb51d4c894c hadoop]# hadoop fs -mkdir -p /data
[root@4bb51d4c894c hadoop]# hadoop fs -put NOTICE.txt /data
[root@4bb51d4c894c hadoop]# hadoop fs -ls /data
Found 1 items
-rw-r--r--   1 root supergroup      15915 2021-04-21 00:26 /data/NOTICE.txt
Hadoop Sample 테스트 실행  
hadoop-mapreduce-examples-2.9.0.jar 의 파라미터(wordmean) 이용하여 NOTICE.txt 파일의 단어와 글자수를 계산    
docker exec -it hadoop-dev /bin/bash
[root@4bb51d4c894c]# cd /hadoop/share/hadoop/mapreduce
[root@4bb51d4c894c mapreduce]# ls
hadoop-mapreduce-client-app-2.9.0.jar     hadoop-mapreduce-client-hs-plugins-2.9.0.jar       hadoop-mapreduce-examples-2.9.0.jar  sources
hadoop-mapreduce-client-common-2.9.0.jar  hadoop-mapreduce-client-jobclient-2.9.0.jar        jdiff
hadoop-mapreduce-client-core-2.9.0.jar    hadoop-mapreduce-client-jobclient-2.9.0-tests.jar  lib
hadoop-mapreduce-client-hs-2.9.0.jar      hadoop-mapreduce-client-shuffle-2.9.0.jar          lib-examples
[root@4bb51d4c894c mapreduce]# hadoop jar hadoop-mapreduce-examples-2.9.0.jar
Valid program names are:
  aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files.
  aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files.
  bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi.
  dbcount: An example job that count the pageview counts from a database.
  distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi.
  grep: A map/reduce program that counts the matches of a regex in the input.
  join: A job that effects a join over sorted, equally partitioned datasets
  multifilewc: A job that counts words from several files.
  pentomino: A map/reduce tile laying program to find solutions to pentomino problems.
  pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method.
  randomtextwriter: A map/reduce program that writes 10GB of random textual data per node.
  randomwriter: A map/reduce program that writes 10GB of random data per node.
  secondarysort: An example defining a secondary sort to the reduce.
  sort: A map/reduce program that sorts the data written by the random writer.
  sudoku: A sudoku solver.
  teragen: Generate data for the terasort
  terasort: Run the terasort
  teravalidate: Checking results of terasort
  wordcount: A map/reduce program that counts the words in the input files.
  wordmean: A map/reduce program that counts the average length of the words in the input files.
  wordmedian: A map/reduce program that counts the median length of the words in the input files.
  wordstandarddeviation: A map/reduce program that counts the standard deviation of the length of the words in the input files.
[root@4bb51d4c894c mapreduce]# hadoop jar hadoop-mapreduce-examples-2.9.0.jar wordmean /data /data_out
21/04/21 00:52:37 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
21/04/21 00:52:38 INFO input.FileInputFormat: Total input files to process : 1
21/04/21 00:52:38 INFO mapreduce.JobSubmitter: number of splits:1
21/04/21 00:52:38 INFO Configuration.deprecation: yarn.resourcemanager.system-metrics-publisher.enabled is deprecated. Instead, use yarn.system-metrics-publisher.enabled
21/04/21 00:52:38 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1618964082934_0001
21/04/21 00:52:39 INFO impl.YarnClientImpl: Submitted application application_1618964082934_0001
21/04/21 00:52:39 INFO mapreduce.Job: The url to track the job: http://4bb51d4c894c:8088/proxy/application_1618964082934_0001/
21/04/21 00:52:39 INFO mapreduce.Job: Running job: job_1618964082934_0001
21/04/21 00:52:50 INFO mapreduce.Job: Job job_1618964082934_0001 running in uber mode : false
21/04/21 00:52:50 INFO mapreduce.Job:  map 0% reduce 0%
21/04/21 00:52:58 INFO mapreduce.Job:  map 100% reduce 0%
21/04/21 00:53:04 INFO mapreduce.Job:  map 100% reduce 100%
21/04/21 00:53:04 INFO mapreduce.Job: Job job_1618964082934_0001 completed successfully
21/04/21 00:53:04 INFO mapreduce.Job: Counters: 49
        File System Counters
                FILE: Number of bytes read=39
                FILE: Number of bytes written=403473
                FILE: Number of read operations=0
                FILE: Number of large read operations=0
                FILE: Number of write operations=0
                HDFS: Number of bytes read=16020
                HDFS: Number of bytes written=24
                HDFS: Number of read operations=6
                HDFS: Number of large read operations=0
                HDFS: Number of write operations=2
        Job Counters
                Launched map tasks=1
                Launched reduce tasks=1
                Data-local map tasks=1
                Total time spent by all maps in occupied slots (ms)=4347
                Total time spent by all reduces in occupied slots (ms)=3565
                Total time spent by all map tasks (ms)=4347
                Total time spent by all reduce tasks (ms)=3565
                Total vcore-milliseconds taken by all map tasks=4347
                Total vcore-milliseconds taken by all reduce tasks=3565
                Total megabyte-milliseconds taken by all map tasks=4451328
                Total megabyte-milliseconds taken by all reduce tasks=3650560
        Map-Reduce Framework
                Map input records=455
                Map output records=3624
                Map output bytes=52548
                Map output materialized bytes=39
                Input split bytes=105
                Combine input records=3624
                Combine output records=2
                Reduce input groups=2
                Reduce shuffle bytes=39
                Reduce input records=2
                Reduce output records=2
                Spilled Records=4
                Shuffled Maps =1
                Failed Shuffles=0
                Merged Map outputs=1
                GC time elapsed (ms)=205
                CPU time spent (ms)=1500
                Physical memory (bytes) snapshot=504504320
                Virtual memory (bytes) snapshot=4011933696
                Total committed heap usage (bytes)=347602944
        Shuffle Errors
                BAD_ID=0
                CONNECTION=0
                IO_ERROR=0
                WRONG_LENGTH=0
                WRONG_MAP=0
                WRONG_REDUCE=0
        File Input Format Counters
                Bytes Read=15915
        File Output Format Counters
                Bytes Written=24
The mean is: 7.2759381898454745
[root@4bb51d4c894c mapreduce]#
# Sample Test 결과 확인   
hadoop fs -cat /data_out/*     
docker exec -it hadoop-dev /bin/bash
[root@4bb51d4c894c]# hadoop fs -ls  /data_out
Found 2 items
-rw-r--r--   1 root supergroup          0 2021-04-21 00:53 /data_out/_SUCCESS
-rw-r--r--   1 root supergroup         24 2021-04-21 00:53 /data_out/part-r-00000
[root@4bb51d4c894c]# hadoop fs -cat /data_out/*
count   1812
length  13184
[root@4bb51d4c894c]#

크롬에서 localhost:8088 로 접속 하여 FINISHED Applications 을 확인    
크롬에서 localhost:50070 으로 접속하여 Utilities > Browse Directory 로 이동      
해당 폴더 에 들어가서 파일을 클릭 하면 상세 정보 및 파일 다운로드가 가능    

Step 6. Hadoop 결과 데이터 동기화

hadoop 시스템을 재시작 하면 결과 값이 초기화 됨
/tmp/hadoop-root/dfs 의 하위 디렉토리를 압축 하여 관리 pc 에 dfs.tar 파일을 이동 
docker exec -it hadoop-dev /bin/bash
[root@6debfd1fd33d]# cd /tmp/hadoop-root/dfs
[root@6debfd1fd33d dfs]# ls
data  name  namesecondary
[root@6debfd1fd33d dfs]# tar -zcvf dfs.tar ./data ./name ./namesecondary
[root@6debfd1fd33d dfs]# ls dfs.tar
dfs.tar
[root@6debfd1fd33d dfs]# exit

PS C:\Users\user1\docker-compose\hadoop\hadoop\dfs>cd ./hadoop/hadoop/dfs
PS C:\Users\user1\docker-compose\hadoop\hadoop\dfs>docker cp hadoop:/tmp/hadoop-root/dfs/dfs.tar .
PS C:\Users\user1\docker-compose\hadoop\hadoop\dfs>tar -zxvf dfs.tar
PS C:\Users\user1\docker-compose\hadoop\hadoop\dfs>ls


    디렉터리: C:\Users\user1\docker-compose\hadoop\hadoop\dfs


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
da----      2021-04-21  오전 11:04                data
d-----      2021-04-21  오전 10:12                name
d-----      2021-04-21  오전 10:13                namesecondary
docker-compose.yml 파일 수정 
docker-compose.yml volumes 의 주석 제거
  volumes:
   - ./hadoop/dfs/name:/tmp/hadoop-root/dfs/name
   - ./hadoop/dfs/data:/tmp/hadoop-root/dfs/data
   - ./hadoop/dfs/namesecondary:/tmp/hadoop-root/dfs/namesecondary
수정된 docker-compose.yml 파일로 컨테이너 시작    
hadoop-dev 에 접속 후 데이터 확인 
PS C:\Users\user1> cd ./docker-compose/hadoop
PS C:\Users\user1\docker-compose\hadoop> docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
PS C:\Users\user1\docker-compose\hadoop> docker-compose up -d
Creating network "hadoop_default" with the default driver
Creating hadoop-dev ... done
PS C:\Users\user1\docker-compose\hadoop> docker ps
CONTAINER ID   IMAGE                   COMMAND                   CREATED         STATUS         PORTS                                                                                                                                                                                          NAMES
2d5becf8894f   harisekhon/hadoop-dev   "/bin/sh -c \"/entryp…"   4 seconds ago   Up 8 seconds   0.0.0.0:8042->8042/tcp, 8020/tcp, 9000/tcp, 10020/tcp, 19888/tcp, 50010/tcp, 0.0.0.0:8088->8088/tcp, 0.0.0.0:50070->50070/tcp, 0.0.0.0:50075->50075/tcp, 50020/tcp, 0.0.0.0:50090->50090/tcp   hadoop-dev
PS C:\Users\user1\docker-compose\hadoop> docker exec -it hadoop-dev /bin/bash
[root@2d5becf8894f /]# hadoop fs -ls /
Found 5 items
drwxr-xr-x   - root supergroup          0 2021-04-21 01:45 /data
drwxr-xr-x   - root supergroup          0 2021-04-21 01:48 /data_in_out
drwxr-xr-x   - root supergroup          0 2021-04-21 01:48 /data_in_out_wordcount
drwxr-xr-x   - root supergroup          0 2021-04-21 01:15 /data_out
drwx------   - root supergroup          0 2021-04-21 01:15 /tmp

ETC. Error/Worning 해결 방안

  • 데이터가 사라져요!!!

컨테이너 재시작 또는 중지 후 시작 했을 때 데이터가 사라짐    
docker exec -it hadoop-dev /bin/bash
[root@4bb51d4c894c]# hadoop fs -ls  /data_out
Found 2 items
-rw-r--r--   1 root supergroup          0 2021-04-21 00:53 /data_out/_SUCCESS
-rw-r--r--   1 root supergroup         24 2021-04-21 00:53 /data_out/part-r-00000
[root@4bb51d4c894c]# hadoop fs -cat /data_out/*
count   1812
length  13184
[root@4bb51d4c894c]#
## ---> 컨테이너 재시작 또는 중지 후 시작           
docker logs -f hadoop-dev (hadoop-dev log 확인)    
docker-compose.yml 의 volumes 파라미터 경로 확인 
hadoop-dev log 확인
PS C:\Users\user1\docker-compose\hadoop>docker logs -f hadoop-dev
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:L9lYtwzxrlF6HqevI8yaUlXhuoihLxHNrwIMXjv1Yow root@2d5becf8894f
The key's randomart image is:
+---[RSA 1024]----+
|            ..   |
|           ..    |
|     o    ...    |
|.  ...o   .+     |
|.o. =.o.S.+ +    |
| .oE.= +oB O .   |
|   .+.oo=o* * .  |
|    o.o  o+=.+   |
|     o..o...++.  |
+----[SHA256]-----+
'/root/.ssh/id_rsa.pub' -> '/root/.ssh/authorized_keys'
mode of '/root/.ssh/authorized_keys' changed from 0644 (rw-r--r--) to 0400 (r--------)
Generating SSH2 RSA host key: [  OK  ]
Generating SSH2 ECDSA host key: [  OK  ]
Generating SSH2 ED25519 host key: [  OK  ]
docker-compose.yml 의 volumes 경로 확인
version: '2' # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )
 hadoop-dev: # 서비스 명
  image: harisekhon/hadoop-dev # 사용할 이미지
  container_name: hadoop-dev # 컨테이너 이름 설정
  restart: always 
  volumes:
   - ./hadoop/dfs/name:/tmp/hadoop-root/dfs/name
   - ./hadoop/dfs/data:/tmp/hadoop-root/dfs/data
   - ./hadoop/dfs/namesecondary:/tmp/hadoop-root/dfs/namesecondary
   - ./hadoop/logs:/hadoop/logs
  ports:
   - 8042:8042    # node
   - 8088:8088    # cluster
   - 50070:50070 # dfshealth
   - 50075:50075 # datanode
   - 50090:50090 # status

docker-compose.yml 파일을 다운로드 받아서 시작      
Step 6 를 다시 한번 해 본다  

작성중인 문서.....

[출처 : 네이버 지식백과] (시사상식사전, pmg 지식엔진연구소)

[출처 : 네이버 지식백과] - 오픈소스 진영의 샛별 (용어로 보는 IT, 이지현)

[출처 : 네이버 지식백과] - 오픈소스 진영의 샛별 (용어로 보는 IT, 이지현)

2022년 NHN Cloud 무료 교육일정 :

2022년 NHN Cloud 행사/프로모션 정보 공유 :

린스타트업
도커
도커
https://doc.skill.or.kr/2022-NHN-Cloud-Education
https://doc.skill.or.kr/2022-NHN-Cloud-Event-Promotion
https://doc.skill.or.kr/2022-NHN-Cloud-Education
https://doc.skill.or.kr/2022-NHN-Cloud-Event-Promotion
Pay trudYou using PayPal.MePayPal.Me
donation
Pay trudYou using PayPal.MePayPal.Me
donation
Logo
Logo
156KB
tensorflow.zip
archive
662B
docker-compose.yml
825B
hadoop.zip
archive
598B
docker-compose.yml
681B
docker-compose.yml
그림. 린스타트 순환구조 [출처: 린 스타트업 p.71 (에릭 리스 지음 / 이창수, 송우일 옮김)]
그림. 가상화 기술과 도커 기술 비교(출처 : 네이버지식백과)
그림. tensorflow-jupyter Log 확인
그림. docker 로그를 통해 URL 접속
그림. 정상적으로 접속 된 화면
그림. TensorFlow Tutorial 목록 확인
그림. Jupyter 실행 및 중지/재시작
그림. ipynb 파일 업로드
그림. Running 탭에서 진행 결과 확인
그림. 결과 파일 저장(File -> Save as)
그림. 저장 파일은 로컬시스템 및 가상화 시스템 경로 확인
그림. Hadoop node 페이지
그림. Hadoop Cluster 페이지
그림. Hadoop dfshealth 페이지
그림. Hadoop datanode 페이지
그림. Hadoop status 페이지
그림. Hadoop Cluster 에서 FINISHED Applications 페이지
그림. Hadoop HDFS Browse Directory 페이지
그림. Hadoop HDFS 에 파일 다운로드 및 상세 보기