목록전체 글 (193)
코알못
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cl7nly/btrxiW7lzrl/ZyX1Xv1MHUUMu5kp3JrKuk/img.png)
포트 바인딩 하여 컨테이너 포트를 호스트의 ip 와 연결하여 서비스에 노출하는 방법을 알아 보자! 아래와 같이 명령어를 이용하여 연결할 수 있으며 host 부분은 생략 가능하다. (p 는 publish 의미) $ docker run -p [HOST IP:PORT]:[CONTAINER PORT] [CONTAINER] 우선 실습으로 익혀보자! $ docker run -d -p 3000:3000 grafana/grafana $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2792fece957 grafana/grafana "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:3000->3000/tcp bold_al..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wv9eg/btrxhNhT2LG/2bmyCKHrnzY6oGWTaIxzZ0/img.png)
엔트리 포인트와 커맨드 차이는 무엇일까? 두개의 정의는 아래와 같다. - entrypoint : 도커 컨테이너가 실행할때 고정적으로 실행 되는 스크립트 혹은 명령어 (생략가능, 생략시 커맨드 명령어가 실행됨) - command : 도커 컨테이너가 실행할때 수행할 명령어 또는 엔트리 포인트에 정의된 명령어에 대한 인자값 얼핏 보면 비슷해 보이지만 다른 개념이다. 만약 docker 시작시 test.sh 을 인자로 'test' 를 넣어서 실행 시키고 싶다면 [entrypoint]에 'test.sh' 를 넣고 [command]에 'test' 를 넣으면 된다. 실습을 진행해보자! entrypoint 로 echo 를 주고 추가 인자를 hello world 를 넣는다. 컨테이너 리스트를 보면 command 에 ech..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NsJbZ/btrxgELQafb/9FyGAtPju4mQpqBT85t43K/img.png)
도커의 기본 단위인 '이미지', '컨테이너' 에 대해 알아 봅시다. 이미지와 컨테이너는 1:N 관계로 아래와 같이 정의 됩니다. 이미지 : 컨테이너를 생성할때 필요한 요소로 컨테이너의 목적에 맞는 바이너리와 의존성이 설치 되어 있음, 여러개의 계층으로 된 바이너리 파일로 존재 컨테이너 : 호스트와 다른 컨테이너로부터 격리된 시스템 자원과 네트워크를 사용하는 프로세스로 이미지는 읽기 전용으로 사용하여 변경 사항은 컨테이너 계층에 저장 -> 컨테이너에서 무엇을 하든 이미지는 영향 받지 않음 도커 파일을 bulid 하면 도커 이미지가 되며, 도커 이미지를 run 하면 도커 컨테이너가 됩니다. 도커 이미지 이름의 경우 아래와 같이 지정할 수 있으며 [저장소이름]/[이미지이름]/[이미지태그] 저장소 이름 생략시 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sH0gd/btrxfvBzDOq/LuK8wIu1i18rw1akX7xb21/img.png)
docker는 리눅스 컨테이서 관리 기술로 mac/window 에서 Native(원주민)로 사용할 수 없다. 그러나 도커의 경우 쓰임새가 많아지다 보니 mac, window 에서도 사용 가능하도록 'docker for desktop' 이 만들어졌으며 linux 에서 설치해야하는 docker, docker-compose 모두 포함되어 있다. (단, 도커의 기능을 완전하게 사용하려면 리눅스에서 사용하는것이 바람직 하다.) 데스크탑 GUI 도 포함되어 있어 CLI에 익숙하지 않은 유저도 편리하게 사용 가능하다. 저자의 경우 mac 이기에 아래와 같이 homebrew를 이용하여 설치를 진행한다. $ brew install --cask docker cask 를 넣는 이유는 GUI(화면이 있는 설치파일) 어플리케이..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KkEfG/btrxcKEX0a0/SdjovXvErdsIzn9gnxAItK/img.png)
우선 도커가 무엇인가? 알아보기전 우리는 VMWare를 사용하여 가상 머신을 띄워서 또다른 운영체제를 띄운 적이 있을것이다. 이는 virtualized deployment (가상화 배포)라고 하여 하나의 컴퓨터에 hypervisor(하나의 컴퓨터에 다수의 운영체제를 띄우는 소프트웨어)를 활용하여 GestOS(하나의 운영체제 위에 띄운 또 다른 운영체제)를 띄운다. hypervisor를 통해 띄운 다수의 GestOS는 자원(메모리, cpu, 디스크)이 완벽하게 분리된다. 단점은 다수의 os 설치를 위한 자원이 사용되어 기존 호스트의 자원을 모두 사용할 수 없다는 점과, 해당 구조에서 app을 실행시 os 에서 바로 app을 실행시키는 것 보다 성능이 나오지 않는다는 점이다. 이를 개선하기위해 docker ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MInvt/btrvy2GOtzo/DSB0eTK16i1MfwRbJ9NrKk/img.png)
kafka 토픽의 경우 partition 을 주어 병렬 처리를 할수 있다. connector 의 경우에도 mode 중 distributed 로 실행하면 고가용성, 처리 성능을 높힐 수 있다. 고가용성은 서비스가 계속적으로 중단없이 유지 되는 성질을 의미하는데 conector 한대가 죽어도 과반수 이상 살아 있을시 서비스 정상 운영 가능하다. 해당 글에서 다룰것은 '처리 성능' 부분인데 처리 성능의 경우 분산 처리 기능을 이용하여 높힐 수 있다. connection 에는 'tasks.max' 라는 옵션이 있다. 이는 source connector, sink connector 모두에게 줄 수 있는데 정확한 의미는 '일을 진행할 업무자 최대수' 이다. 분산 처리시 connector 별로 '업무자 최대 수'를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bHK4Gy/btrvbeByk2h/OMud9P6Mezfx3zPCxV8JB1/img.png)
Zeppelin 의 경우 Apache Shiro를 사용하여 인증, 권한 관리 등 보안 관련 부분을 관리한다. 아래 세가지 실습을 진행하도록 한다. 1. 노트별 실행, 읽기, 쓰기 권한 설정 2. URL 별 권한 설정 3. interpreter별 권한 설정 (interpreter가 DB 일시 데이터베이스별 권한 설정 가능하다) 우선 실습을 진행하기 앞서 처음 설치시 로그인 기능이 없으며 비로그인상태로 이용하도록 되어있어서 이 부분을 수정하도록 한다. 'zeppelin.anonymous.allowed' 를 'false' 로 설정하여 비로그인자가 접속 못하도록 한다. $ ssh -i key.pem hadoop@ip $ cd /etc/zeppelin/conf $ sudo vi zeppelin-site.xml z..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5f3C4/btrvgmtiIaP/hylEz8KZC9m8K67WI1NTWK/img.png)
zepplelin 에서는 cron 기능을 활성화시 노트별로 스케쥴링 기능을 제공한다. 우선 cron 기능은 default 로 false 되어 있기에 true로 변경하고 재기동하는 작업이 필요하다. zepplien ui 에 접속한뒤 아래와 같이 configuration 클릭시 설정 정보가 나오며 관련 설정인 'zeppelin.notebook.cron.enable' 검색해보면 false 로 되어 있다. 설정 변경은 zeppelin 서버에 접속(EMR 의 경우 마스터 노드에 설치되어 있으므로 마스터 인스턴스에 접속)하여 설정파일 경로로 간다. $ ssh -i key.pem hadoop@ip $ cd /etc/zeppelin/conf 설정파일 'zeppelin-site.xml' 에 가서 수정 한다. - zepp..