posted by 권오성의 Biomedical Engineering 2014. 8. 22. 14:27

-리듀스(Map-Reduce)는 구글이 분산 컴퓨팅을 지원하기 위한 목적으로 제작하여, 2004년 발표한 소프트웨어 프레임워크입니다. 이 프레임워크는 대용량 데이터를 신뢰할 수 없는 컴퓨터로 구성된 분산 클러스터 환경에서 대규모 데이터를 병렬로 처리하기 위해 개발되었습니다.

 

-리듀스의 혁신적인 부분은 데이터 집합에 대한 쿼리를 입력 받아, 분할 한 후, 여러개의 노드에서 병렬로 처리하는데 있습니다. 이러한 분산 처리는 단일 장비에서 처리하기에는 부적합한 대규모 데이터 처리 문제를 해결합니다.

 

 [ 분산 환경에서의 Map-Reduce 실행 ]

 

위의 그림은 네임노드(NameNode)의 잡트랙커(JobTracker)가 데이터노드(DataNode)의 테스크트랙커(TaskTracker)에게 일을 분배해 주는 개념도입니다. 데이터노드는 컴퓨터 한대라고 생각하시면 되며, -리듀스 함수들은 컴퓨터 마다 상주하여 병렬로 작업을 수행함으로써 대규모 데이터를 짧은 시간안에 처리할 수 있습니다.

 

 

SMAQ (Storage, Map-Reduce and Query) 시스템

-리듀스가 널리 활용되기 시작하면서 스토리지(Storage), -리듀스(Map-Reduce), 쿼리(Query) 레이어로 구성된 빅데이터 시스템 스택(Stack)이 탄생하였습니다. SMAQ 시스템은 오픈소스로 일반 범용 하드웨어에서 분산 운용되는 것을 특징으로 합니다.

  

[ SMAQ 시스템 ]

 


리눅스(Linux), 아파치(Apache), MySQL, PHP 레이어로 구성된 범용 LAMP(Linux, Apache, MySQL, PHP) 스택이 웹 애플리케이션의 지평을 바꾸어 놓은 것과 마찬가지로 SMAQ 시스템은 빅데이터 처리의 지평을 확대하는데 큰 역할을 하고 있으며, 데이터 중심의 제품 및 서비스의 새로운 시대를 선도할 것입니다.

 

 

-리듀스(Map-Reduce)의 개념

-리듀스는 맵 단계와 리듀스 단계로 처리 과정을 나누어 작업합니다. (map)은 흩어져 있는 데이터를 관련 있는 데이터끼리 묶는 작업을 통해서 임시 데이터 집합으로 변형되며, 리듀스(Reduce)는 맵 작업에서 생성된 임시 데이터 집합에서 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업을 진행합니다.

 

 

  

[ Map-Reduce 작업 ]

 

 -리듀스 처리 순서

맵리듀스가 분산, 병렬 처리하기 좋은 이유는 입력 데이터에 대한 맵 함수는 동시에 독립적으로 병렬 처리할 수 있는 구조이기 때문입니다. 다음 그림을 통해서 맵-리듀스 작업 순서에 대해서 알아보겠습니다.

  

[ -리듀스 처리 방법 ]

 

 

 분할(Splitting)

입력 파일의 값을 라인 단위로 분할합니다.

 

 매핑(Mapping)

분할된 라인 단위 문장을 맵(Map) 함수로 전달하면, 맵 함수는 공백을 기준으로 문자를 분리한 후에 단어의 개수를 계산합니다. 맵 함수를 거치면서 임시 데이터 결과가 메모리에 저장됩니다.


 셔플링(Shuffling)

메모리에 저장되어 있는 맵 함수의 출력 데이터를 파티셔닝과 정렬을 해서 로컬 디스크에 저장한 후에 네트워크를 통해 리듀서의 입력 데이터로 전달합니다.


 리듀싱(Reducing)

리듀스(Reduce) 함수는 단어 목록들을 반복 수행하면서 합을 계산하여 표시합니다.

 

 

-리듀스의 문제점

최근까지 하둡은 HDFS의 대규모 데이터를 처리하는 계층으로 맵-리듀스를 선택했습니다. 하지만 최근 소개된 차세대 하둡으로 알려진 얀(YARN, Yet Another Resource Negotiator)은 하둡 환경의 맵-리듀스에 대한 의존성을 제거하였습니다.

이러한 변화에는 맵-리듀스가 가지고 있는 확장성 문제와 처리 속도가 느리다는 제약사항 때문입니다. -리듀스의 이러한 한계로 인하여 많은 개발업체들이 속도 향상를 위하여 다른 방법을 생각하도록 유도하였습니다. ( 예를 들면 IBM의 어댑티브 맵-리듀스(Adaptive Map-Reduce)을 들수 있다.)

  

[ 하둡 2.0 스택 ]

 

위의 그림을 보시면 하둡 2.0에서는 클러스터 리소스 관리(Cluster Resoruce Management)를 맵-리듀스 대신에 얀(YARN)이 담당하고 있습니다. 얀은 기존의 맵-리듀스 API와의 호환성을 유지하면서도 타 회사에서 개발된 다양한 도구에서도 실행될 수 있도록 확장성을 부여하였습니다. 이를 통해서 속도가 느린 맵-리듀스의 단점을 해결할 수 있는 기반을 마련한 것입니다.


posted by 권오성의 Biomedical Engineering 2014. 8. 13. 21:01

플랫폼(Platform)이란?

 

플랫폼 전성시대라는 말을 들어보셨나요?! 플랫폼이라는 용어는 IT업계에서 뿐만 아니라 각종 신문기사나 뉴스에서 많이 보셨을 거라고 생각되는데요! 그렇다면 소프트웨어 업계에서 플랫폼이란 어떻게 정의할 수 있으며, 그 영향력은 어떨까요? 금번 포스팅에서는 플랫폼에 대해 알아보고자 합니다-!

 

<플랫폼(Platform)이란?>

 

플랫폼(Platform)Plat(평평한 땅, 라틴어 어원 : plate) form(형태, 라틴어 어원 : forme)가 합쳐진 말로 단상, 무대 혹은 기차역에서 사람들이 타고 내리기 위한 평평한 땅을 일컫는 말입니다.

 즉, 일반적으로는 (뉴스 기사 등에서 많이 보시는 용어는) 어떠한 기반이 되는 장() 혹은 기초가 되는 틀/규격 등을 말합니다. 핸디소프트 등의 IT 업계에서 말하는 플랫폼도 이와 같은 맥락입니다 

 

* Computing platform

          : a framework on which applications may be run

           ​[ 출처 : 영문 위키디피아 발췌, http://en.wikipedia.org/wiki/Platform ]

 

  

 위의 영어 표현을 보시면 명확히 와 닿을 거라고 생각하는 데요- 가장 쉬운 예로 Windows 운영체제를 들 수 있습니다. Windows 위에서 각종 프로그램들이 작동할 수 있습니다. 또 다른 예로는 모바일 플랫폼으로 불리는 애플의 iOS와 구글의 Android OS와 소셜네트워크 서비스(SNS)인 페이스북도 플랫폼이라고 할 수 있습니다.

 그렇다면, 이쯤에서,


<왜 플랫폼을 주목하는가?>


플랫폼 전성시대’, ‘플랫폼 전쟁등 플랫폼은 막강한 영향력을 갖는다고 평가받고 있는데요. 그 이유는 무엇일까요? 前 구글 CEO였던 에릭 슈미트는 구글, 애플, 페이스북 그리고 아마존 이들이 IT 세계를 지배할 수 있는 것은 플랫폼을 기반으로 하고 있기 때문이다.” 라고 말했습니다. 실제로 모바일 운영체제 세계 시장 점유율에서 90% 이상의 독점적 위치를 애플(iOS)과 구글(Android)이 차지한 것을 플랫폼 때문이라고 볼 수 있습니다 

플랫폼과 함께 등장하는 용어는 생태계인데요. 애플의 예로 풀어보겠습니다.

애플 생태계를 살펴보자면, 아이튠즈와 앱스토어와 같은 구조를 통해서 앱의 생산자와 구매자가 만나게 되며, 거래가 이루어질 때 애플은 수수료에 대한 수익을 얻게 됩니다. 그런데 애플기기를 사용하는 유저는 아이튠즈와 앱스토어로만 동기화가 가능하기에 애플 유저라면 계속 사용할 수 밖에 없는 구조가 됩니다. 



비슷한 구조로 구글은구글 플레이’, 마이크로소프트는윈도 스토어마켓을 운영하고 있습니다.

이제 이해가 가시나요? 이렇듯 이미 우리가 사용하는 스마트폰이 플랫폼의 영향력 아래 있습니다. 애플의 예에서 보듯 울타리 격인 플랫폼의 중요성이 크기에, 비단 모바일 뿐만 아니라 사용자들을 한 울타리(플랫폼)에서 머물게 하려는 플랫폼 전쟁이 계속 진행되고 있으며, 그 중요성은 더욱 커질 것으로 예상되고 있습니다.  

posted by 권오성의 Biomedical Engineering 2014. 8. 13. 20:47

 SaaS, PaaS, IaaS ?!  

SaaS란 무엇일까요?! 들어본 적이 없으신 분들도 있을 테고, 클라우드와 IT에 관심이 있는 분들 중에서도 정확한 개념을 알고 싶으신 분들을 위해! SaaS, PaaS, IaaS의 개념과 차이점에 대해서 알아보고자 합니다-!! 

먼저, 클라우드에 대해서 짚고 넘어가겠습니다. 

 <클라우드? 클라우드 컴퓨팅?>

 

 

 

클라우드가 뭐예요?

- “ 클라우드 컴퓨팅(cloud computing)은 인터넷 기반(cloud)의 컴퓨팅(computing) 기술을 의미한다. 인터넷 상의 유틸리티 데이터 서버에 프로그램을 두고 그때 그때 컴퓨터나 휴대폰 등에 불러와서 사용하는 웹에 기반한 소프트웨어 서비스이다.” [위키백과 발췌]

- 위와 같이, 많은 분들이 스마트폰과 통신사와 포탈에서 제공하는 서비스로 접하셨던 그 클라우드가 맞습니다. 쉽게 말해, 컴퓨터나 스마트폰 같은 기기들에서는 일시적으로 정보를 보관/사용하고, 정보의 저장, 관리 등은 클라우드라는 다른 공간에서 이루어지는 개념입니다. 현재는 대체로 클라우드 컴퓨팅이라는 용어가 간단하게 클라우드로 사용되고 있습니다.

  

∙ 근데, 왜 클라우드예요?

- 인터넷을 구름 모양의 다이어그램으로 표현하는 것에서 클라우드라는 이름이 유래되었다고 합니다. 클라우드가 구름처럼 무형의 제3의 공간이라는 면에서 참 어울리는 것 같습니다.

- 높은 효율성과 비용 절감의 이점으로 많은 IT 관련 기업 및 연구기관에서 클라우드 컴퓨팅을 매년 주요 IT 이슈로 전망하고 있습니다. 하지만, 정보가 모두 저장된 서버가 공격 당하면 모든 정보가 유출될 가능성이 있다거나, 아직까지 우려되고 고려해야 할 점들도 많이 있습니다.

 

 <SaaS, PaaS, IaaS>

∙ 클라우드 컴퓨팅은 전달하는 서비스 형태가 어떤 것이냐에 따라 SaaS, PaaS, IaaS로 분류합니다.

SaaS (Software as a Service)

- SaaS (Software as a Service)는 소프트웨어를 설치하는 것이 아니라 서비스 형태로 제공하는 것입니다. 가장 대표적인 것이 온라인 오피스 소프트웨어인 구글의 문서도구(Docs)가 있으며, 이밖에 메일과 웹하드 서비스도 SaaS라고 할 수 있습니다.

 

PaaS (Platform as a Service)

- 어플리케이션이나 서비스가 실행되는 환경을 제공하는 것입니다. SaaS의 개념을 개발 플랫폼에 확장한 방식으로 볼 수 있습니다. 대표적으로 구글 앱엔진을 들 수 있습니다.

 

IaaS (Infrastructure as a Service)

서- 버, 스토리지, 데이터 베이스 등과 같은 시스템이나 서비스를 구축하는데 필요한 IT 자원을 서비스 형태로 제공하는 것입니다. 아마존의 AWS EC3, S3 등의 서비스 IaaS라고 볼 수 있습니다.

posted by 권오성의 Biomedical Engineering 2014. 8. 13. 19:58

빅데이터란 과연 무엇인가? 기존 데이터에 비해 방대하게 커진 데이터를 말한다.

하둡 프로그래밍(Hadoop Programming)은 빅데이터 시스템중 하나로 빅데이터의 기술 처리를 위해 태어난 분산파일시스템이다. 하둡은 분산파일 시스템과, 맵리듀스(mapreduce)로 구성되어있다.

하이브(hive)는 하둡프로그램을 쉽게 처리하기 위한 솔루션이다. 또한 데이터베이스들을 담고 있는 윈도 레지스트리(Windows Registry)에서 가장 높은 수준의 조직을 일컫기도 한다. 하이브는 하둡을 데이터웨어하우스(DW)로 운영할 수 있게 해주며, 수많은 레지스트리의 논리를 구분할 때 사용할 수 있다는 강점이 있다.

R프로그래밍은 통계학 정보를 처리하는 분석 과정이며, 통계 계산과 그래픽을 위한 프로그램 언어이자 소프트웨어 환경이다. R은 기타 유료 통계시스템인 SAS, SPSS와 비교해도 성능면에서 큰 차이가 안 나 요즈음 새롭게 떠오르는 프로그래밍 방식이다.

posted by 권오성의 Biomedical Engineering 2007. 11. 26. 11:27
ZigBee는 IEEE802.15.4기반의 저속, 저전력, 저가의 무선개인영역 통신 기술

ZigBee는 저전력, 저가격, 사용의 편리성을 가진 근거리 무선네트워크의 대표적 기술 중의 하나로 IEEE 802.15.4 표준의 PHY층과 MAC층을 기반으로 상위 프로토콜 (Protocal)과 응용을 규격화한 기술로 원격제어 및 관리의 응용에 적합한 홈 오토메이션 등의 적용되며, 유비쿼터스 센서 네트워크 환경 구축에 중추적 역할을 담당할 기술이다.

 

ZigBeeWPAN의 국제표준 중의 하나로 무선이 갖는 장점 뿐만 아니라  구조까지 간단해서 크기가 작으며 설계가 쉽고 개발비용도 적게 든다. 칩셋 가격이 $1정도로 낮아질 전망이며, 저 전력인 반면 통신은 매우 안정적이다.

최근 홈네트워크와 유비쿼터스에 대한 관심이 높아지면서 저속의 수십미터 이내 근거리 ZigBee 통신이 크게 주목 받고 있다. ZigBee 기술은 정부가 주도하는IT839 3대 인프라 중에 하나인u-센서 네트워크의 구현에 중추적인 기술로 고려된다.

ZigBee를 표준화 할때 응용의 촛점을 원격검침, 원격제어 또는 원격 모니터링에만 집중하므로 현재 대단한 인기를 얻고 있다.  ZigBee의 최적 응용 분야는 어떤 곳일까? 전송이 가끔씩 이루어지는 전문용어로 말하면 듀티사이클(duty cycle)이 낮은 저속통신의 응용 분야이다. 따라서 ZigBee의 응용 분야로는 디지털홈 구현, 빌딩자동화, 공장자동화  등의 유비쿼터스 환경의 구현이다. ZigBee 표준을 준수하는 기기들 간에는 서로 통신할 수 있어 네트워크를 구성하여 운용할 수 있는 상호운용성을 제공하는 것이 표준의 근본 취지이다. 예로서 가정의 전등제어, 가전제품, TV, 냉 난방, 문의 개폐보안 등을 하나의 네트워크로 통합할 수 있다.

정부 주도의 u-IT839에서 ZigBee기술은 다음과 같이 활용됩니다. 따라서 정부, 기업, 연구소 등에서 대단히 관심이 많은 기술이며, 국제 표준화작업에도 국내의 삼성이 Promote회원사(가장높은 지위의 12개사)이며, Etri등 연구소와 많은 기업이 회원사로 참여하고 있습니다.

국내에서는 임베디드(Embedded) 혹은 SoC(System On Chip)관련 업체들을 위주로 초소형 센서를 이용하여 무선으로 네트워크를 구성하고 통신하는 무선 센서네트워크를 지원하는 장비를 개발하고 있다. 대부분의 업체들은 ZigBee 기반으로 하는 호환 장비를 개발하고 있고

ZigBee 지원하는 제품개발을 하는 업체들은 대부분 해외에서 개발된 ZigBee칩을 사용하고, ZigBee프로토콜 스택을 구현하고 있다.

posted by 권오성의 Biomedical Engineering 2007. 5. 29. 15:43

닷넷은 컴파일을 해도 기계어 바이너리 실행파일을 만들지 않는다. 대신 중간언어로 표현되는 가상 어셈블리어를 만들고 이를 런타임에 실행하는 방법을 사용한다. 형태적으로 보면 인터프리팅과 컴파일링의 중간쯤에 해당한다. 그러다 보니 당연히 기계어로 직접 컴파일하는 기존의 방법에 비해서 속도가 떨어지게 된다. 그렇다면 도데체 얼마나 떨어지게 되는 것일까?

모든 프로그램에 대하여 일반적으로 얼마나 속도저하가 있다고 말하기는 다소 어려운 부분이있다. 그래서 속도게 가장 민감한 3D게임의 예가가 있다. Vertigo Software는 닷넷의 속도 비교와 기존 C코드를 닷넷으로 포팅하는 예를 QuakeII를 통해서 보여주었다.

이 프로젝트에서는 현재 GPL로 되어 있는 QuakeII 소스를 네이티브 C++로 포팅하고 다시 이것을 매니지드 C++(C++.NET)으로 포팅하였다. 기존 QuakeII소스는 C 코드인데 이것을 C++로 포팅하는데 4일, 다시 이것을 C++.NET으로 포팅하는 데 하루, 그위에 C++.NET으로 새로운 기능(레이더)를 추가하는데 이틀이 걸렸다고 한다.

결론적으로 QuakeII를 닷넷으로 포팅한 결과 네이티브에 비하여 15%속도 손실이 있었다고 한다. 이 수준은 매우 미미해서 테스터들은 속도저하를 전혀 실감하지 못했다고 한다. 많은 연산을 수행하는 3D엔진이 이정도이면 대부분의 일반적인 비지니스 로직은 거의 아무런 속도 손실이 없다고 봐도 과언이 아니다. 그러므로 닷넷으로 만든 어플리케이션에 대해서 속도가 저하될 것을 우려할 필요는 전혀 없다는 것이다.

오히려 기존 코드를 닷넷으로 포팅할경우 닷넷 라이브러리와 기존 라이브러리를 동시에 사용할수 있기 때문에 프로그래밍 작업이 한결 자유로워진다. 닷넷으로 포팅되면 아래와 같은 이점이 생긴다.

1. 메모리 관리를 가비지컬렉션(Garbage Collection)을 사용하거나 프로그램으로 직접 컨트롤 할 수 있다.
2. 닷넷 프레임웍을 메쏘드 사용하거나 기존 윈도우 API를 사용하거나 마음대로 선택할 수 있다.
3. 닷넷 프레임웍 클래스와 STL같은 기존 라이브러리를 동시에 사용이 가능해진다.

QuakeII 포팅에 대한 자세한 내용은 아래 링크를 참고 하기 바란다.(영문)
http://www.codeproject.com/managedcpp/Quake2.asp#xx677031xx

[펌] http://www.code99.net/tabid/791/mid/1496/newsid1496/3/Default.aspx