Cloud2015.07.22 20:31

안녕하세요~!!

너무 오랫동안 블로그 활동을 못했네요~!!

제가 요즘 뭐하고 지내고 있는지 다들 궁금하시죠??

아침에 출근하면서 영어공부하고, 점심때 다시 영어학원 가서 영어공부하고, 저녁에 퇴근하면서 영어공부를 하고 있어요~!! 그런데 생각보다 영어가 쉽게 안 느네요~~ 매일 좌절속에 산답니다. 그래도 언젠가는 영어 실력이 늘겠지요~!! ^^


오늘은 영어 이야기가 아니라 제가 요즘 고민하고 있는 제가 생각하는 오픈스택에 대해서 이야기를 한번 해 볼까 합니다.

많은 분들이 이제 오픈스택을 어떻게 설치하느냐? 보다는 오픈스택을 가지고, 어떻게 활용을 하고, 어떻게 돈을 벌 것인가?를 더 많이 궁금해 하시는 것 같습니다. 아~~~ 제가 이제 설치 뿐만 아니라 이런것들도 같이 고민을 하는 레벨로 업그레이드 된 것이겠죠~!! ^^


다들 아시죠? 

오픈스택은 2010년 6월에 미국의 NASA와 Rackspace가 같이 하던 클라우드 프로젝트를 Apache 2.0 License로 오픈한 오픈소스 클라우드 플랫폼입니다. 초창기에는 하이퍼바이저를 관리하는 컴퓨트 서비스인 Nova, 운영체제를 위한 이미지 관리 서비스인 Glance, 오브젝트 스토리지 서비스인 Swift로 구성이 되어 있었습니다. 한해 두해 새로운 버전을 릴리즈 하면서 오픈스택의 사용 범위와 사용 국가와 사용자가 늘어나면서 오픈스택 서비스도 함께 늘어나고 있습니다. 

이제는 정말 많은 회사들이 오픈스택을 지원하고 있으며, 많은 회사들이 오픈스택을 기반으로 비지니스를 시작하였습니다. 우리나라에서도 많은 기업들이 오픈스택을 도입하여 업무에 활용하는 곳이 늘고 있습니다. 

가장 대표적인 곳이 KT와 SKT이죠~!! 공공에서도 예외는 아닙니다. 정말 유명한 포탈 업체인 DaumKakao와 Naver도 오픈스택을 업무에 활용하고 있습니다. 그리고, 연구소, 학교, 기업, 방송국, 자동차 산업 등에서도 오픈스택을 활용하는 곳이 많아졌습니다. 제가 얼마전에 입사한 ASD Korea 역시 클라우다이크라는 오픈스택 기반의 클라우드 스토리지 솔루션을 가지고 비즈니스를 하는 회사입니다. 


그럼, 오픈스택은 어떻게 업무와 연관지을 수 있을까요?

대부분의 기업들은 자사의 중요 데이터들을 퍼블릭 클라우드에 공유하고 싶어하지 않습니다. 기업 내부에서 사용하길 원합니다. 그럼, 클라우드의 장점이 무엇일까요? 고가용 서버를 한 시스템만 사용하는 것이 아니라, 필요한 다양한 운영체제를 설치하여 단독으로 사용할 수 있다는 것입니다. 또한 필요에 따라서 자동으로 증가하고, 자동으로 감소시킬 수 있습니다. 이를 통해서 자원을 효율적으로 운영할 수 있습니다. 

클라우드로 전환하지 않은 물리서버 한대에서는 운영체제를 하나만 가져갈 수 있었습니다. 그리고, 여러 사람들이 해당 서버의 자원을 나누어 사용하다 보니 충돌도 많이 나고, 누가 먼저 선점을 할 것인가를 두고 많이들 다투는 일들이 많았습니다. 그런데, 클라우드로 가면서 이런 문제들을 사라졌습니다.공평하게 하나씩 나누어주면 되니까요~!! 아래 그림처럼 말입니다.





또한 클라우드 스토리지 서비스인 오픈스택 Swift를 활용하여 여러 시스템에서의 데이터를 쉽게 관리할 수도 있습니다. 오픈스택은 모든 서비스가 REST API로 제공되기 때문에 웹, 어플리케이션, 안드로이드, 아이폰 등 다양한 디바이스에서 자원을 간단하게 가져다가 쓸수 있도록 시스템을 쉽게 구현할 수 있습니다. 또한 다양한 비정형 데이터(문서, 파일, 동영상 등등)들을 쉽게 저장하고 관리할 수 있다는 장점도 있습니다. 아래 그림은 기업에서 많이 사용하는 시스템을 예시로 표현해 본 그림입니다. 오픈스택은 모든 서비스들을 테넌트라 부르는 프로젝트로 관리할 수 있으며, 해당 프로젝트들은 프로젝트 사용자와 자원을 공유할 수 있습니다. 




이렇게 많은 곳에서 오픈스택을 사용하여 산업 생태계가 변화하고 있습니다. 산업 생태계가 변한다는 것은 그만큼 일거리가 창출된다는 뜻이고, 일거리가 창출되는 만큼 관련 IT 종사자들이 많이 필요하다는 것입니다. 


그냥 쉽게 말해서 오픈스택 엔지니어나 관련 개발자들이 많이 필요하다는 뜻이겠죠~!! 

그럴려면, 엔지니어를 배출하기 위한 교육 시스템도 필요할 것이고, 

기업이나 조직에서 오픈스택을 사용할 경우 표준이나 정책들도 필요하겠죠~!!


정말 다양한 곳에서 오픈스택을 중심으로 한 비즈니스가 창출된다는 뜻인것 같습니다.

그러니, 앞으로도 포기하지 말고, 우리 열심히 오픈스택을 공부해 보아요~!! 


오늘 너무 글이 길어진게 아닌가 모르겠네요~!! 아무튼 모두들 화이팅~!! 입니다. ^^

 

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2015.02.02 15:27

안녕하세요~!!


오늘은 삽질기를 한번 올려볼까 합니다.


얼마전에 독자 문의를 받고 오랜만에 오픈스택 테스트를 하기 위해 로컬 PC에 설치해 놓은 버철박스를 띄웠습니다. 몇주전까지만해도 실행이 잘 되던 오픈스택 데쉬보드가 그날따라 열리지 않는것이였습니다.ㅠㅠ SSH 접속도 잘 되고 프로세스도 잘 돌고 있는데 왜 대체 데쉬보드가 열리지 않는걸까? 데쉬보드는 80포트를 사용한다. 다른 포트는 열리는데 80포트만 열리지 않는 이유는 대체 무엇일까? 고민을 하다가 로컬에 설치해 두었던 모든 버철박스 관련 파일들을 모두 지우고, 버철박스를 업데이트했죠! 그리고, 다시 새로운 인스턴스를 생성하여 80포트만 띄우고 다시 테스트를 해 보았는데,.... 역시 안됩니다. ㅠㅠ



저는 오픈스택을 설치할 별도의 장비가 없어서 노트북에서 버철박스를 주로 이용을 합니다. 

강의에서 데모를 할 경우에는 NAT를 이용하고, 집이나 회사와 같은 고정된 장소에서 테스트를 할 때는 브리지 모드를 이용합니다. 아래 화면은 버철박스에서 버철머신의 속성을 클릭하면 나오면 설정화면으로 네트워크 메뉴를 클릭했을때의 화면입니다. 


NAT로 설정을 했을때 호스트 운영체제에서 게스트 운영체제로 접속을 하려면 반드시 포트 포워딩을 해 주어야 합니다. 위 화면을 보면 포트 포워딩 버튼이 활성화 되어 있는데 그 버튼을 클릭하면 아래와 같은 포트 포워딩 규칙 이라는 창이 팝업됩니다.

여기서, SSH 접속을 위한 22번 포트를 열고, 웹페이지 접속을 위한 80포트, 그 외에 필요한 포트들을 추가 설정합니다.


그러면 localhost로 버철박스에서 생성한 버철머신에 접속이 가능합니다. 

우분투를 설치하면 아래와 같은 화면을 만날수 있겠죠~!!


80포트가 열려있는지도 확인합니다. 아래와 같이 netstat 명령어를 이용하면 80 포트가 열려 있는지 확인할 수 있습니다. apache에서 80 포트를 지금 LISTEN하고 있네요~!!


그런데 문제는 여기서... localhost에 접속이 안된다는겁니다. ㅠㅠ 


이 방법 저 방법 모든 방법을 동원해서 테스트를 이리도 해보고 저리도 해보고... 원인 분석을 어떻게 해야 할지 감이 안오더군요~!! 그래서 어쩔수 없이 기술 커뮤니티에 물어봤습니다. 정말 많은 분들이 도움을 주셨습니다. 도움 주신분들 정말 감사드립니다. 기술 커뮤니티가 좋다는것을 알고 있었지만, 다시 한번 더 좋다는걸 느꼈던 것 같습니다. 




이렇게 해서 도움을 받아 80포트를 잡아 먹은 프로그램을 찾을 수 있었습니다. 제가 윈도우즈 8을 사용을 하는데, 커맨드 명령어 창을 열어 netstat를 입력하면 모든 네트워크 상태를 확인할 수 있습니다. 그런데, 지금은 리스닝 되고 있는 포트만 검색해야 하므로, 관리자 권한으로 커맨드 명령어 창을 열어야 합니다. 관리자 권한으로 열지 않으면 명령어가 실행이 되질 않더라구요~!


이렇게 관리자 권한으로 연 명령어창에서 netstat -napb tcp | more 라는 명령어를 입력하면 아래와 같이 윈도우즈에서 LISTENING 중인 프로그램 정보를 확인할 수 있습니다. 이런 명령어 정보를 몰라서 지금까지 삽질을 한것이 아닐까 하는 생각이 들면서... 이번 기회에 netstat 명령어에 대해 알아보아야겠다 라는 생각이 들었습니다. 결과를 보니 얼마전에 외국아이들과 일하기 위해 설치한 Skype가 바로 문제가 된 것이였습니다. ㅠㅠ Skype가 80 포트를 잡고서 안 놔주더라구요~~ 


그래서, 바로 Skpye 옵션을 탐색해 보니 아래와 같은 화면에서 "추가로 들어오는 연결에 80 및 443 포트 사용 이라는 문구에 체크가 되어 있지 뭐예요~!! 그래서, 바로 이 옵션을 해제하고 적용을 했습니다.


그리고, 나서 테스트를 해보니 그동안 열리지 않았던 80포트가 잘 열리더라구요~!!


다시 윈도우즈 커맨드 명령어 창에서 아래와 같이 명령어를 실행해 보니 이번에는 Skype가 아닌 VirtualBox가 제대로 80 포트를 LISTENING라도록 되어 있더군요~!! 


이번 문제를 해결하면서 netstat 명령어에 대해 알아보았습니다. 정말 정리를 잘 해 놓은 블로그가 있어 몇군데 링크를 남겨 볼까 합니다. 여러분들도 시간되실때 한번씩 들어가서 보시면 도움이 많이 되실 것 같네요~!! 


http://www.dsun.kr/8

http://linuxism.tistory.com/48

http://najuung.tistory.com/41



이상 버철박스(VirtualBox)에서 80 포트가 안 열릴 때 문제를 해결하기 위한 삽질기였습니다. 

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2013.05.09 22:10

그동안 잠시 다른일을 하느라 바뻐서 글을 쓰지 못했는데 오늘 정말 오랜만에 글을 올려봅니다.

오늘은 하이퍼 바이저의 종류와 클라우드 컴퓨팅에서 주로 사용하는 하이퍼바이저의 종류에 대해서 조사를 한번 해 보았습니다. 물론 오늘 올리려고 하는 글들은 이미 많은 사람들이 정의를 잘 해 놓아서 굳이 내가 정리를 할 필요성이 있을까? 하다가 이곳 저곳 산재되어 있는 정보들을 한곳에 정리해 보는 차원으로 글을 써 보았습니다.

 

 

* 출처 : http://ko.wikipedia.org/wiki/%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4%EC%A0%80

 

 

하이퍼 바이저의 종류

Native or Bare-metal
: 하이퍼바이저가 해당 하드웨어에서 직접 실행되며 게스트 운영 체제는 하드웨어 위에서 2번째 수준으로 실행된다.
- IBM z/VM, POWER Hypervisor(PR/SM)
- Citrix XenServer
- Xen
- VMware ESX Server, ESXi
- L4 Microkernel
- MS Hyper-V
- KVM

 

Hosted
: 호스트 운영체제에서 실행되며 VM 내부에서 동작되는 게스트 운영 체제는 하드웨어에서 3번째 수준으로 실행된다.
- VMWare Server, Workstation, Fusion
- QEMU
- MS Virtual PC, Virtual Server
- Oracle VirtaulBox
- SWsoft Parallels Workstation, Desktop

 

 

주요 클라우드 플랫폼
- 클라우드 스택      : 복수 하이퍼바이저 지원(KVM, XEN, ESXi, OVM, 베이메탈)
- 유칼립투스          : 복수 하이퍼바이저 지원(XEN, KVM, ESXi)
- V클라우드 디렉터 : VM웨어에서 개발한 제품으로 VM웨어 제품 전용지원
- 오픈스택             : KVM, XEN, QEMU

 

 

클라우드 플랫폼에서 가장 많이 사용하는 하이퍼바이저
KVM, Xen, VMware ESXi

 

 

하이퍼바이저별 Image Format
- KVM        : img(Raw), qcow2(qemu) vmdk(vmware)
- VMWare   : vmdk
- VirtualBox : vdi, vmdk, qcow2, vhd
- Hyper-V   : vhd, vmdk, vdi
- XEN, XENServer : qcow2, vhd

 

 

Image Format 약자
- qcow2 : QEMU Copy On Write 2
- vdi : Virtual Disk Image
- vmdk : VMware Virtual Disk Development Kit
- vhd : Virtual Hard Disk

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2013.03.14 13:09

가상화를 보다보면 가장 많이 나오는 단어가 바로 전가상화와 반가상화 라는 단어일 것이다. 


쉽게 말해 

가상화를 지원하는 CPU를 직접 사용해 Windows를 설치할 수 있으면 전가상화라 생각하면 되고, 

그 이외에 리눅스와  같은  오픈소스들만 설치할 수 있으면 반가상화라고 생각하면 된다.


오픈스택의 기본 하이퍼바이저KVM은 윈도우를 게스트로 설치할 있으므로 전가상화를 지원한다고 볼 수 있다. 

KVM이 설치되지 않은 서버에는 QEMU를 설치하는데 QEMU는 대표적인 반가상화 지원 하이퍼바이저다.

그런데 KVMQEMU를 기반으로 돌아가는 하이퍼바이저이므로 반가상화와 전가상화를 모두 지원한다고 볼 수 있다.



          



아래 주소들은 전가상화와 반가상화의 개념들을 상세하게 설명해 놓은 사이트 혹은 블로그 주소이다. 



저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2013.02.27 23:22

몇일전에 LG Xnote X360 시리즈의 울트라북을 하나 샀다. 정말 얇고 슬림한것이 기존에 들고 다니던 노트북에 비하면 무겁지도 않고 속도도 상당히 빠르다. 여하튼 노트북 샀다고 자랑하려고 이 글을 쓰는 건 아니구, ...


노트북을 구매하고 가상화를 하기 위해 Virtual Box를 설치했다. 그리고, Windows가 설치되어 있는 Host OS에서 Virtual Box에 설치한 Ubuntu 12.04 Server Guest OS로 SSH 연결이 잘 안되어 이틀동안 삽질하다가 오늘에서야 어떻게 연결을 하면 되는지 알아냈다. 그래서 그 방법을 적어놓어 놓고자 한다. 다음에 또 이런일이 발생하게 되면 분명히 또 기억이 안 날 것이기 때문에,... ^^;;


1. 나는 우선 무선 네트워크인 Wifi 환경에서 Virtual Box를 설치했다. 이렇게 되면 Network 속성에 Virtual Box Host Only Network가 생성이 된다. 이 Virtual Box Host Only Network와 Wifi를 연결해 Network Bridge를 만든다. 아래 그림처럼 말이다.


2. 이렇게 Network Bridge를 생성하고 DOS창에서 IP 정보를 확인한다. 



3. 그리고서 Virtual Box에서 Ubuntu 인스턴스를 하나 생성한다. 이때 네트워크 설정은 기본 NAT에 아래그림처럼 추가로 VirtualBox Host-Only Network를 하나를 더 선택한다.


4. 위와 같은 정보로 Ubuntu를 설치한 후 "/etc/network/interfaces"의 네트워크를 정보를 아래와 같이 변경한다.

** 통신을 하기 위해서는 IP 주소가 같은 Network 대역안에 존재해야 한다. 그러므로 address를 Windows에 확인한 IP의 같은 네트워크 주소대로 설정해야 한다.


5. 위와 같이 네트워크 정보를 수정한 후 Neworking을 Restart 하거나 서버를 재부팅한 후 HOST PC은 Windows의 DOS 창에서 ping을 한번 테스트 해 본다.


이때 Ping 테스트가 잘 되면 SSH 로 Guest OS인 Ubuntu에 접속이 가능하다. 단 Wifi는 장소에 따라 자주 변경이 일어나므로 추천을 하지는 않는다. 그러나, 회사에서 테스트를 하게 될 경우에는 대부분 고정 IP를 받아 사용하게 되므로 무선 네트워크로 설정할 때보다 안정적이다.

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.10.09 09:45

오늘은 Putty를 활용해서 Amazon AWS나 Openstack과 같은 클라우드에서 생성한 Ubuntu VM Instance에 접근시 접근 방법에 대해 블로깅 해 보도록 하겠다. 


1. 우선, Putty를 다운로드 받아야 한다. putty(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) 사이트에 가서 putty.exe와 puttygen.exe를 다운로드받는다.



2. 다운로드 받은 puttygen.exe를 실행한다. 그리고, VM을 생성할때 다운로드 받은 key.pem 파일을 Import한다. Import는 탑 메뉴의 Conversions > Import 메뉴를 클릭하면 쉽게 Import 할 수 있다. 그리고 나서 Save private key 버튼을 클릭해 저장한다.



3. vm 생성시 할당받은 Amazon의 Elastic IP 혹은 Openstack의 Floating IP를 Putty Host Name에 입력한다.



4. 그리고, 좌측 트리 메뉴의 Connection > SSH > Auth를 클릭한다. 아마도 Private key file for authentication 항목이 보일것이다. 그 항목에 좀 전에 puttygen에 의해 저장한 key.ppk 파일을 임포트한다.



5. Open 버튼을 클릭하고, login as: 에 user Id를 입력하면 그때부터 VM으로 생성한 Ubuntu Server를 사용할 수 있다.


저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.09.10 17:56

오랜만에 다시 Hadoop을 테스트하기 위해 Shell 창을 열어 Hadoop명령어를 치려니 왠지 뭔가 생소하게 느껴지는 것이 새롭다. 오늘은 그 동안 삽질하면서 설치한 Hadoop에 책에서 나오는 코딩 된 HDFS 소스 파일들을 컴파일하고 실행하는 방법을 남겨보고자 한다.

 

그리고, 이번 테스트를 하면서 앞에서 실수한 부분을 다시 수정하고자 한다. 앞에서 하둡을 설치할 때 나는 자바 버전을 1.7 버전으로 설치를 하였었다. 그런데, 자바파일 컴파일을 하는 과정에서 컴파일이 되지 않고 컴파일은 되었다 할지라도 실행과정에서 java version 이 맞지 않는다는 오류를 발견할 수 있었다. 그래서, 하둡 홈폴더에 있는 build.xml 파일을 확인해서 보니, 자바버전이 1.6 버전으로 되어 있다는 것을 알았고, 설치되어 있는 1.7 버전을 삭제하고 다시 1.6버전으로 재 설치하였다. 그리고 나서 다시 컴파일을 하고 실행을 하니 정상적으로 테스트해 볼 수 있었다.

 

우선, JAVA로 된 샘플 소스를 코딩 해야한다. 다음에 나와 있는 소스 샘플은 한빛미디어 “Hadoop 완벽가이드에 있는 URLCat이라는 소스로써 복사해서 붙여도 무방은 하나 그래도 이왕 공부 하는거 하나하나 타이핑을 해 보면 더 좋지 않을까?


1   import java.io.InputStream;

2   import java.net.URL;

3    

4   import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;

5   import org.apache.hadoop.io.IOUtils;

6    

7   public class URLCat {

8    

9           static {

10                  URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

11          }

12   

13          public static void main(String[] args) throws Exception {

14                  InputStream in = null;

15                  try {

16                          System.out.println(args[0]);

17                          in = new URL(args[0]).openStream();

18                          IOUtils.copyBytes(in, System.out, 4096, false);

19                  } finally {

20                          IOUtils.closeStream(in);

21                  }

22          }

23  }


이렇게 해서 타이핑 한 소스를 하둡이 설치되어 있는 소스 폴더(사용자 임의 지정 가능)에 옮긴다. Vi 에디터를 통해 간단하게 복사해서 붙여넣기 하고 저장하면 끝난다.


~!! 이번에는 컴파일을 한번 해 보도록 하자. 아주 중요하다. 책에 나오지 않는다. 한국 웹사이트나 블로그에도 안 나온다. 해외사이트에서도 찾기 힘들다. 일본 사이트에서 가서 겨우겨우 찾아서 볼 수 있었다.

 

우선, 하둡 홈 폴더에 들어가서 build 폴더를 생성한다.

$ cd hadoop-1.0.3

$ mkdir build

$ cd build

$ mkdir classes

 

생성이 되었으면 이제 컴파일을 해보자. 컴파일 공식은 다음과 같다. 우선 클래스 패스를 지정하자. Hadoop을 사용하여 소스를 코딩 했다면 반드시 Hadoop 홈폴더에 있는 hadoop-core 파일이 필요하다. 그러므로 클래스 패스는 하둡 홈에 있는 hadoop-core 파일을 써주고, 컴파일 된 클래스 파일이 저장될 위치를 –d 옵션을 통해 지정해 준다. 이 위치는 아까 위에서 생성한 build 폴더 밑에 classes 폴더로 지정하면 된다. 다음은 컴파일 하고자 하는 자바파일명을 써주면 된다.


$ javac –classpath $HADOOP_HOME/hadoop-core-1.0.3.jar –d [class_path] [filename].java


그럼 컴파일 예제를 한번 보자.


이제 실행을 한번 해 볼까? 다음과 같이 입력하자.

$ hadoop URLCat hdfs://localhost/[경로]/[파일명]

 

나 같은 경우에는 localhost로 하지 않고 IP를 지정해주었기 때문에 지정한 IP PortURL 경로를 잡아주었다. 하둡의 웹 인터페이스로 미리 하둡에 올려둔 파일의 경로를 알아보자.


이제 테스트를 해 보면 파일에 있는 내용이 콘솔창으로 보일 것이다.



요즘 꼭 지켜줘야 할 것 같은 참조한 사이트나 블로그의 URL을 꼭 남겨주는 센스라고나 할까? 참조 블로그를 남겨본다.


참조 블로그 : http://techme.lofter.com/post/ccd6e_1dd8c8

http://caoruntao.iteye.com/blog/996120

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.08.29 17:27
나는 이런 Hadoop 명령어 정리를 해 놓은 블로그나 웹사이트를 검색할 수 없었기 때문에 블로그로 정리해 공유하고자 한다. 


실은 이것보다도 더 큰 이유는 몇일동안 Hadoop을 공부하면서 왜 서버를 내렸다 올리면 HDFS가 실행이 안 될까? 하는 의문을 가졌기 때문이다. 구글링을 해보고 책을 봐도 특별한 해답이 보이질 않았는데, 오늘  드디어 그 비밀을 알아냈다.


하둡 설치 폴더에서 hadoop을 보면 hadoop은 스크립트 파일이다. 특정 언어로 프로그래밍한 것이 아니라, 단순한 Linux Shell Script 라는 것이다. hadoop 명령을 그냥 치면 다음과 같이 hadoop 명령어들이 나오는데, 해답은 저 명령어 안에 있었다.


그래서 오늘은 hadoop 명령어들을 한번 정리해 보도록 하겠다.


Usage: hadoop [--config confdir] COMMAND

where COMMAND is one of:

  namenode -format     format the DFS filesystem

  secondarynamenode    run the DFS secondary namenode

  namenode             run the DFS namenode

  datanode             run a DFS datanode

  dfsadmin             run a DFS admin client

  mradmin              run a Map-Reduce admin client

  fsck                 run a DFS filesystem checking utility

  fs                   run a generic filesystem user client

  balancer             run a cluster balancing utility

  fetchdt              fetch a delegation token from the NameNode

  jobtracker           run the MapReduce job Tracker node

  pipes                run a Pipes job

  tasktracker          run a MapReduce task Tracker node

  historyserver        run job history servers as a standalone daemon

  job                  manipulate MapReduce jobs

  queue                get information regarding JobQueues

  version              print the version

  jar <jar>            run a jar file

  distcp <srcurl> <desturl> copy file or directories recursively

  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive

  classpath            prints the class path needed to get the

                       Hadoop jar and the required libraries

  daemonlog            get/set the log level for each daemon

 or

  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.


그림과 함께 보도록 하자. 우리의 이해를 더 높여줄 것이다. 

아래 그림은 http://hadoop.apache.org 에 있는 HDFS 아키텍처이다.



hadoop namenode -format

말 그대로 namenode을 포맷한다. hadoop은 기본적으로 namenode라는 저장공간을 가지고 있으며, 그곳에 디렉토리를 생성하기도 하고, 파일을 업로드하기도 한다. 그런데 이 명령어를 실행하면 namenode 안의 모든 내용들이 삭제된다. 그러니 처음 Hadoop을 설치했을때만 사용해야 한다.


hadoop secondarynamenode

하둡은 분산파일 시스템이라고 했다. namenode가 하나만 존재할리가 없다. master 에 존재하는 namenode 말고, 

그외의 slave 에 존재하는 namenode를 클라이언트가 접속해 사용할 수 있도록 Running 시킨다.


hadoop namenode

아래 분석이 내용이 틀리다는 사실을 오늘 알아냈다. namenode 포맷을 하면 /tmp 폴더에 hadoop namenode가 생성이 되는데 이 폴더는 서버를 내렸다가 올리면 사라진다. 그러므로 서버를 shutdown시키면 안되는 것이다. 

이 namenode 명령어는 namenode를 Running 시키는 명령어인데, start-all.sh나 start-dfs.sh를 실행하면 자동으로 함께 실행된다. 전에 서버를 내렸다가 올렸을때 namenode가 실행되지 않은 이유는 namenode 폴더가 없었기 때문이였다.

서버를 내렸다가 올리면 hdfs가 실행이 되지 않는 이유는 바로 이 명령어 때문이였다. 

서버를 재시작 했을 경우에는 namenode가 서버가 종료되면서 같이 종료가 되는지 서버를 시작하면 자동으로 올라오지 않는다. 그렇기 때문에 이 명령어를 실행시켜 꼭 master server의 namenode을 Running 시켜줘야 한다. 이 명령어가 바로 그 명령어다.


hadoop datanode

이 명령어는 실 데이터를 저장하는 datanode를 Running 시키는 명령어이다. 이 명령어는 start-all.sh나 start-dfs.sh를 실행하면 자동으로 실행이 된다.


hadoop dfsadmin

dfsadmin은 DFS Admin Web UI에서 확인할 수 있는 내용들을 linux command로 hdfs server 정보를 확인할 수 있는 명령어이다. 이 명령어에는 다양한 옵션들이 존재하는데 요건 다음 번 포스팅에서 작성하도록 하겠다.


hadoop mradmin

mradmin 명령어는  Service, Queues, UserGroup, SuperUserGroup, Node등의 정보를 다시 refresh 하는 기능들로 구성이 되어 있다.


hadoop fsck

fsck 명령어는 DFS filesystem을 체킹할 수 있는 Utility인데, 해당 Path의 파일을 move하거나 삭제, 파일 목록을 확인하는 등등의 7가지 관련 옵션들이 존재한다.


hadoop fs

우리가 가장 많이 사용하는 명령어가 바로 이 fs 명령어일 것이다. fs 명령어는 파일에 대한 모든 system 명령어를 제공한다.

그래서, 명령어 설명도 제일 잘 되어 있다. 그러므로 여기서는 설명을 생략하도록 하겠다. 


o Hadoop Shell Commands : http://hadoop.apache.org/common/docs/r0.17.2/hdfs_shell.html

o Hadoop 파일시스템 명령어 정리 : http://blog.acronym.co.kr/370


hadoop balancer

이 명령어는 hadoop cluster간의 balancing을 맞추기 위한 명령어이다.


hadoop fetchdt

fetchdt 명령어는 NameNode로부터 delegation 토큰 파일을 회수한다. 사전에는 delegation이 대표단, 파견단 이런 뜻으로 나오는데 대표 토큰 파일을 말하는것인지도 모르겠다.


hadoop jobtracker

MapReduce job Tracker node를 Running 시키는 명령어로 start-all.sh 나 start-mapred.sh 를 실행하면 자동으로 실행된다.


hadoop pipes

이 명령어는 Job을 실행시키기 위해 directory path나 jar file, java class file 등을 연결시켜 주는 명령어이다. pipes 명령어에는  이와 관련된 10개의 옵션들이 있다.


hadoop tasktracker

MapReduce task Tracker node를 Running 시키는 명령어로 start-all.sh 나 start-mapred.sh 를 실행하면 자동으로 실행된다.


hadoop historyserver

standalone 데몬의 history server를 Running 시키는 명령어인데 이 명령어 역시 start-all.sh나 start-mapred.sh를 실행하면 자동으로 실행된다.


hadoop job

현재 실행되고 있는 mapreduce job의 상태를 확인한다든가 kill 시킨다든가 job list를 확인할 때 쓰는 명령어로 관련 옵션이 13개의 command 옵션이 존재한다.


hadoop queue

job을 실행할때 사용하는 queue의 정보를 조회해 온다.


hadoop version

hadoop version은 버전 정보를 보여준다.


hadoop jar <jar>

우리가 자바로 프로그래밍한 jar 파일을 실행할 때 사용하는 명령어이다. 


hadoop distcp <srcurl> <desturl>

hdfs://A:8020/user/foo/bar 식으로 생긴 srcurl에서 desturl로 파일을 복사하는 기능인데 목적지 URL로 Overwrite 할 수 있으며, 삭제도 할 수 있다. 이외에도 다양한 옵션들이 존재한다.


hadoop archive -archiveName NAME -p <parent path> <src>* <dest> 

이 명령어 좀 복잡한데 하둡의 아카이브를 생성하는 명령어란다.


hadoop classpath

하둡에 설정되어 있는 관련 클래스패스들을 보여준다.


hadoop daemonlog

이건 하둡의 데몬의 log을 남길때 log 레벨을 설정하거나 정보를 확인할 수 있다.


hadoop CLASSNAME

이 명령어는 자바로 프로그래밍한 자바 클래스 파일을 실행시켜준다고 했는데 잘 안된다. 오류가 발생한다. 요건 나도 잘 모르겠다. 이걸 어떻게 실행하는건지 알아냈다. 다음번 포스팅에서 그 비밀을 알려주도록 하겠다.



이상으로 23개의 Hadoop 명령어를 살펴보았다. 제일 좋은건 이렇게 남이 써 놓은 글만 보지 말고 직접 실행해 보고 눈으로 확인해 보길 바란다. 그렇지 않으면 내것이 되지 않기 때문이다. 

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.08.27 18:11

오늘은 지난 시간에 이어 여기 저기 블로그를 뒤져 가면서 Hadoop 환경설정을 한번 해 보았다. 실은 지난 시간에 설치한 Hadoop을 오늘 테스트 해 보았는데 계속 접속이 안되어서 오늘 새로 설치를 했다. ㅠ 그래서 잃어버릴지 몰라 Hadoop 환경설정에 대한 내용을 간단하게 정리하도록 하겠다.


1.     Hadoop > conf > core-site.xml 에 다음과 같이 입력한 후 저장한다.


2.     Hadoop > conf > hdfs-site.xml 에 다음과 같이 입력한 후 저장한다.


3.     Hadoop > conf > mapred-site.xml 에 다음과 같이 입력하고 저장한다.

 

4.     이번에는 SSH를 한번 설정해 보자. 다음과 같이 입력한다.

ssh-keygen –t rsa

 

위와 같이 입력을 하고 Enter를 계속 치면 아래와 같이 key가 발급될 것이다.



5.     그럼 생성한 키를 ~/.ssh/authorized_keys 폴더에 복사를 한다.

 

그럼 ssh 설정이 제대로 되었는지 localhost로 다음과 같이 접속을 해본다.

 

6.     이제는 네임 노드를 포맷팅한다. 이것만 하면 드디어 환경설정이 끝이 났다이제 하둡을 실행하고 Web UI를 확인해 보자.

 

7.     Hadoop를 실행하는 명령어들은 다음과 같다.

$ start-all.sh       //HDFS와 맵리듀스 모두 실행

$ start-mapred.sh  //맵리듀스만 실행

$ start-dfs.sh      //HDFS만 실행

 

$ stop-all.sh       //HDFS와 맵리듀스 모두 중단

$ stop-mapred.sh  //맵리듀스만 중단

$ stop-dfs.sh      //HDFS만 중단

 

위의 명령어들은 hadoop을 설치한 폴더의 bin 디렉토리에 가면 위에서 본 명령어들을 확인할 수 있다.

 

8.     그럼 이제 Hadoop 을 실행해 보자.

 

9.     이제 맵리듀스의 Web UI HDFS Web UI를 확인할 수 있다.

-      맵리듀스 Web UI (http://localhost:50030)


-      HDFS Web UI (http://localhost:50070)


10.  Web UI를 모두 확인해 보았다. 그럼 디렉토리를 만들어 보고, 데이터를 복사해 보고, 해당 데이터의 단어 개수를 체크하는 테스트를 한번 해보자.

 

-      abc라는 디렉토리를 생성한다.

hadoop dfs –mkdir abc


Web UI를 통해서 확인해 보라. 방금 생성한 abc라는 디렉토리가 보일것이다.

 

-      이번에는 미리 만들어 놓은 whyhadoop.txt 라는 파일을 한번 올려보자.

hadoop dfs –put whyhadoop.txt abc/


올린 파일도 Web UI를 통해 확인해 볼 수 있다.


-      마지막으로 올린 파일의 단어 개수를 한번 세어보자

hadoop jar hadoop-1.0.3/hadoop-examples-1.0.3.jar wordcount abc out


MapReduce 결과 단어의 개수는 총 585개란다.


 

참조 블로그 : http://blog.acronym.co.kr/329

http://imdsoho.tistory.com/entry/Hadoop-%EC%84%A4%EC%B9%98#recentTrackback

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.08.23 15:27

작년 10월 무렵에 하둡을 한번 설치를 해 본적이 있었다. 그때는 메뉴얼도 잘 안나와 있고, 무슨 소리인지 잘 몰라서 고개만 갸우뚱거리다가 그냥 넘어갔는데, 요번에 하둡을 다시 설치해 볼일이 생겨 구글링을 해 보니 작년하고 다르게 쉬운 메뉴얼들이 많이 나와 있었다. 그래서, 가장 간단하면서도 빠르고 쉽게 하둡을 설치할 수 있는 방법을 글로 적어보도록 하겠다.


대부분의 리눅스에는 OpenJDK가 설치되어 있다. 

하둡은 자바이기 때문에, 자바를 함께 설치를 해야하는데 sun jdk가 가장 궁합이 잘 맞는다고 한다.


그래서, 이번에는 Ubuntu에 자바 설치하는 것부터 삽질해 보았다.


1.     Sun jdk1.7을 설치한다.  Oracle jdk7을 설치해야하는줄 알았는데, 나중에 프로그래밍을 하는데 Java Version이 안 맞는다는 오류가 발생을 했다. 그래서 설치한 jdk7을 다시 다 삭제를 해야만 했다. ㅠㅠ 그래서 sun-java6-jdk를 설치해야 하는데 기가막히게 설명을 잘 해놓은 블로그를 찾았다. (http://ammoguy.springnote.com/pages/354463) 여기 들어가면 완전 친절하게 써 놓았으니 참고해서 자바를 설치하길 바란다.

$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt-get update

$ sudo apt-get install oracle-jdk7-installer 

 

2.     http://ftp.daum.net/apache/hadoop/common/stable/ 에서 hadoop-1.0.3.tar.gz 을 다운로드 받아 압축을 푼다.




3.     $HOME 디렉토리의 .profile을 열어 다음과 같은 내용을 추가한다.

export JAVA_HOME="/usr/lib/jvm/default-java"

export HADOOP_HOME="/home/nalee/hadoop-1.0.3"

 




4.     다음과 같은 명령어로 터미널창의 환경변수를 적용해 준다.

$ source ~/.profile 

 

5.     Hadoop Home > conf > hadoop_env.sh 파일을 열어서 4번에서 입력한 것처럼 JAVA_HOME을 다음과 같이 수정한다.

# export JAVA_HOME=/usr/lib/j2sdk1.5-sun

to

export JAVA_HOME=/usr/lib/jvm/default-java


6.     이제 간단하게 테스트를 한번 해 보자

-      Hadoop Version 알아보기




-      간단한 데이터 수집해 보기

$ mkdir input 

$ cp conf/*.xml input 

$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 

$ cat output/*


참조 블로그 :

http://crazia.tistory.com/742

http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.08.08 11:30

나는 얼마전부터 국민강사 김미경 원장님의 eclass 온라인 강좌를 듣기 시작했다. 요즘 듣고 있는 강좌는 아트 스피치 강좌 중 실전편으로 오늘 들게 된 강의에 스테이쳐코리아 한국 지사장이 나와서 스피치를 하고 김미경 원장님에게 코칭을 받는 과정이다. 그런데 이분이 스피치 주제로 한 것이 바로 Dirty Electricity였다. 그래서 내용을 듣다 보니 지금 내가 연구하고 있는 홈 클라우드와도 밀접한 관련이 있겠구나? 하는 생각이 문득 스치고 지나갔다.


그래서 요 Dirty Electricity에 대해 구글신과 네이버에게 물어보았다. 

Dirty Electricity는 쉽게 말해 그냥 "전자파"라는 생각을 하면 된다. 우리가 주변에서 쉽게 찾아 볼 수 있는 생활가전제품들~ 그리고, 일할때 늘 보고 있는 컴퓨터, 밥 먹을때도 화장실 갈때도 늘 들고 다니는 스마트 폰, 스마트 패드 등등에서 전자파가 나오고 있었다. 물론 이미 다른 알겠지만 말이다. 그래서 곰곰히 생각을 해 보니 요즘 와이파이다 뭐다 해서 각종 SNS며, 클라우드니 뭐니를 떠들며, 각종 가전제품에 와이파이가 가능하도록 제품을 만들어 내고, 그런것들을 홈 클라우드로 묶느니 어쩌느니 하는 것들이 전부 전자파를 유념 하지 않았다는 사실을 알았다. 전자파가 좋지 않다는 것은 아마도 조금만 관심을 갖고 있는 사람들이라면 누구나 다 알고 있을 것이다.




유투브에 보면 Dirty Electricity에 대한 실험을 한 동영상이 있다. 동영상을 보면 우리 주변에 얼마나 많은 전자파가 발생이 되는지를 확인할 수 있을 것이다.


http://www.youtube.com/watch?v=VhiZCaI5N50



그런데 이런 전자파을 차단해 주는 필터가 있다고 한다. 구글과 네이버에 의하면 이미 세파 라고 하는 콘센트형 전자파 차단 필터가 있으며, 스테이쳐 코리아에서 이번에 개발한 콘센트에 꽃기만 하면 되는 전자파 차단 필터가 개발이 되어 판매 예정이다.



그럼, 우리는 또 한번 생각해 볼 수 있다. 이렇게 전자파 차단 필터를 개발하는 것도 좋지만, 가전제품 내에 특히 요즘 나오는 스마트한 가전제품 개발시 제품 내에 전자파 차단 필터를 내장할 수는 없는 것일까? 



저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Cloud2012.08.06 15:42

저는 작년 9월부터 클라우드라는 업무를 접하면서 아직도 클라우드 안에서 놀고 있는 30대 직장인입니다. 그럼과 동시에 한 아이의 엄마이자 한 남자의 아내요~!! 그 이름은 바로 주부입니다. 


요즘 제가 관심있게 지켜 보고, 연구하고 있는 것 중 하나가 바로 홈 클라우드입니다. 아무래도 주부이다 보니, 가족 중심의 집안에서 편리하게 클라우드를 활용할 방법은 없을까? 하고 생각한 것이 바로 홈 클라우드였습니다. 

요즘은 가전제품들이 점점 똑똑해 지고 있습니다. 스마트폰을 넘어 스마트 TV, 스마트 냉장고, 스마트 청소기, 스마트 카메라, 스마트 세탁기까지  모든 전자제품 앞에 스마트가 붙기 시작하였고, 그것들은 모두 인터넷 즉 wifi가 되고 있다는 것입니다.


그럼, 대체 클라우드는 무엇인가? 라는 말을 많이 하죠~!!

관점별로도 보고, 서비스 측면에서 보기도 하고, 기술적인 측면에서 보기도 합니다. 다양한 각도와 다양한 시각에서 클라우드를 정의하고 있습니다. 그런데 그런걸 다 떠나서 제가 생각한 클라우드는 이렇습니다. 인터넷이 가능한 기기만 있으면 (예를 들어 PC, 스마트 폰, 스마트 패드 등 대표적이겠죠~!!) 그 기기를 통해 나만의 저장공간을 할당받고, 나만의 웹서버를 가지고 있으며, 그런 것들을 활용해 데이터나 영화, 음악, 사진 등을 저장하고, 나만의 웹서버에서 홈페이지를 생성할 수 있는 다양한 서비스 그런 것들을 관리하기 위한 기술이 바로 클라우드인 것입니다.





저는 그 중에서도 아이들, 주부, 청소년, 아빠들까지도 좋아하는 미디어 서비스에 대해 다시 한번 생각해 보았습니다.

미디어 서비스에는 어떤 것들이 있을까요? 가장 대표적인것으로 사진, 음악, 라디오, 영화, 만화, UCC(사용자들이 직접 찍은 동영상), 우리네 주부들이 좋아하는 드라마, 대한민국 아저씨들이 좋아하는 스포츠 프로그램, 아이들이 좋아하는 만화 및 키즈 프로그램 등 다양한 컨텐츠 들이 존재합니다. 


어제 시간이 되질 않아 보지 못한 드라마나 스포츠 프로그램을 다시 볼 수 있고, TV를 통해 보다가 스마트폰을 통해 또 다시 주방에서 요리를 하면서 다시 볼 수 있다면, 얼마나 좋을까요? 그것도 가전제품이 알아서 해 준다면, 얼마나 좋을까요?

아침에는 설정해 놓은 시간에 맞추어 자동으로 TV 뉴스가 나오고, 아이들이 공부해야 하는 시간에는 자동으로 EBS 프로그램을 볼 수 있다면, 육아로 인해 극장 갈 시간조차 없는 엄마, 아빠를 위해 최신 흥행 영화를 볼 수 있게 해 준다면 얼마나 좋을까요?

똑똑한 스마트 기기들이 사용자의 연령층을 알고, 청소년이나 아이들에게 적정 프로그램을 추천해 주는 시스템이 있다면 우리 주부들의 마음이 아마도 조금은 편안해 질 것입니다.


그럼 이런 다양한 컨텐츠는 어떤 기기들을 통해서 봐야하는 걸까요? 스마트 폰, 스마트 패드, PC, TV, 냉장고, 전자레인지 등 우리가 흔하게 가정에서 사용하는 가전제품내에서 연동이 되어 볼 수 있다면 얼마나 좋을까? 라는 생각을 감히 해 보았습니다.

그럼 이런 스마트 기기들을 사용할려면 모든 제품이 전기에 연결이 되어 있어야 하고, 전기세는 얼마나 많이 나올까? 라는 의문을 우리네 주부들이라면 당연히 한번 쯤은 생각해 보지 않을까요? 


요즘 TV광고를 보면 스마트 그린이니 뭐니 하며, 에너지 절약을 외치는 광고들이 아주 많이 나오고 있습니다. 스마트한 생활을 하면서, 에너지도 절약하고, 전기세도 적게 내는 그런 스마트한 가전제품을 만들어야 하지 않을까요? 내가 사용한 에너지 소비 패턴을 분석해주고, 모니터링하여 다음번에는 이렇게 한번 사용해 보시라는 에너지 절약실천 방법들을 추천을 해 준다면 더 좋겠죠~!!!


다양한 스마트 기기들이 개발되고, 그리고 판매되고 있습니다. 

무작정 주의에서 좋다고 해서 구매하고, 개발할 것이 아니라 정말 우리에게 필요한 건 무엇인지, 무엇이 지금의 우리네 세대와 우리네 아이들 세대를 위한 길인지를 다시 한번 쯤 생각해 보는 시간을 갖는 건 어떨까요?

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang