기본 콘텐츠로 건너뛰기

.NET 에서의 빅 데이터 시나리오들은?

빅 데이터들에 대한 정보를 찾으면 거의 대부분은 자바 오픈 소스를 기준으로 언급이 된다. 물론 하둡등 오픈 소스들이 자바진영에서 활발하게 사용되고 있기 때문이기도 하겠지만, .NET 에서도 하둡과의 연계나 자체적인 Azure 활용을 통한 시나리오들이 존재할 것이라고 생각한다. Windows Azure 도 정형화된 또는 비 정형화된 데이터 저장 옵션을 제공하고 있으며 데이터로 부터 BI 를 추출하고 분석하는 다양한 도구들을 제공하고 있다. 따라서 이번에는 .NET 진영의 빅 데이터 시나리오를 실용적인 측면에서 소개한 정보들을 정리해 보도록 한다. 출처 : http://www.windowsazure.com/en-us/develop/net/scenarios/big-data/ 이제 순차적으로 하나씩 실제 적용 가능한 샘플을 시리즈로 검토해 보도록 한다. 시리즈 1 – Azure 에서 VM 상의 MongoDB 와 Web Site 의 연계에 대해 검토한다. 시리즈 2 – Azure 에서 하둡 작업을 실행하고, Excel Add-in 기능을 이용하여 데이터를 분석하는 것에 대해 검토한다. 시리즈 3 – Apache Mahout 를 이용해서 단순한 추천 엔진을 생성하는 것에 대해 검토한다.

빅 데이터 분석을 위한 시작점. 데이터 수집!!

  빅 데이터 분석을 위해서는 당연히 입력 데이터가 있어야 한다. 그리고 과연 빅 데이터에서 입력 데이터라는 것은 무엇인지에 대한 것도 정리가 필요할 듯 하다. 데이터 수집 하둡의 배치 처리가 아무리 훌륭하고, 클러스터의 규모가 아무리 크다고 해도 일단 데이터가 하둡의 파일시스템 (HDFS) 에 저장되어 있어야 하며, 실 시간으로 처리를 하고 싶어도 처리할 데이터가 원하는 시간 내에 실 시간 처리 프로세서로 전달되지 않으면 아무 소용도 없다. 분석에 필요한 데이터가 데이터베이스에 저장되어 있었다면 분석 용도에 맞게 데이터를 가공 처리하거나 변환 작업등의 분석 업무를 수행할 수 있겠지만, 데이터가 파일 시스템으로 저장되어 있다면 데이터의 포맷이나 형식이 상이하기 때문에 원하는 데이터 형태로 변환하고 처리하는 프로그램을 직업 구현하거나 다양한 도구들을 이용해서 사전 작업을 한 후에 데이터베이스에 적재하는 작업이 필요하다. (즉, 비 정형 데이터를 정형화 데이터로 처리하는 과정이 필요하다는 의미) 위와 같은 작업도 데이터들이 동일한 시스템에 있다면 다행이겠지만, 분석 대상이 될 데이터들이 서로 다른 별도의 시스템에 존재한다면, 이 데이터들을 가져오기 위한 데이터 수집 과정이 필요하다. 대량의 데이터라면 HTTP 나 별도의 전송 프로그램을 쓸 수도 있겠지만, 대부분은 FTP 들을 사용하는 경우가 많다. 보안 문제가 있다면 SFTP 를 이용하면 되지만 FTP라는 것이 트랜잭션을 지원하지 않기 때문에 데이터가 정확하게 주고 받아진 것인지를 확인하기가 어렵다는 단점이 존재한다. 따라서 전송할 때는 전송의 완료여부를 검증하기 위해서 데이터 파일 뿐만 아니라 체크 파일도 같이 전송하는 방법을 쓰게 된다. 이런 문제들을 해결하기 위한 솔루션들로는 IBM의 MQ File Transfer Edition 과 같은 것들이 있다. ( 참고자료 ) 현실적으로는 여러 개의 시스템과 연동해서 데이터를 가져오는 것이 문제가 아니라 시스템들에 연동되는 API 나 인터페이스들을 ...

Hadoop 이 뭐지?

빅 데이터에 대해서는 점차 자세히 알아 보고 개념을 구체화 시키도록 하고, 이번에는 Hadoop 에 대해서 간략하게 정리해 보도록 한다. Big Data 란? 정보토신산업진흥원(ETRI) 에서는 빅 데이터는 "기존 데이터에 비해서 너무 크기 때문에 기존 방법이나 도구로 수집, 저장, 검색, 분석, 시각화가 어려운 정형 또는 비 정형 데이터를 의미한다." 고 정의하고 있다. 그러나 빅 데이터는 단순히 정량적인 차원으로만 접근해서는 한계가 존재한다. 데이터라는 것은 지속적으로 발전 증가하는 과정에 있고, 산업별 / 시장별로 다르게 적용되기 때문이다. 따라서 빅 데이터를 이해하기 위해서는 빅 데이터의 3 대 요소를 이해할 필요가 있다. 3 대 요소란 "크기 (Volume), 속도 (Velocity), 다양성 (Variety)" 이라고 보면 된다. Volume Terabytes Records Transactions Tables Files Velocity Batch Near time Real time Streams Variety Structured Unstructured Semistructured All the above 데이터 양은 인류가 지금까지 생산한 데이터보다 최근 2년에 만들어진 데이터가 더 많을 것이라는 이야기가 있을 정도다. 그 만큼 양도 양이지만, 데이터의 종류 또한 매우 다양한다. 이렇게 급격한 데이터의 급증에는 "컴퓨팅, 모바일의 발전, SNS 매체" 라는 환경이 존재하면서 부터이다. 페이스북이나 트위터와 같은 SNS 의 출현이 데이터의 양의 폭발을 촉진하게 된 것이다. 빅 데이터라는 것은 결국 이렇게 많은 데이터들 중에서 전혀 연관이 없어 보이는 다량의 데이터를 분석하여 그 속에서 의미있는 정보나 패턴을 읽어내어 다변화된 현대 사회를 보다 정확하게 예측하기 위한 것이다. KBS1 에서 방영된 프로그램에서는 샌프란시스코의 빅 데이터 활용...

Cloud Computing + Personal + Big Data

2010년도 부터인가? IT 시장의 화두가 클라우드 (Cloud) 였다. 전 세계의 모든 IT 업체들이 클라우드 컴퓨팅 전략을 발표했고, 실제로도 IT 환경은 변화되고 있는 중으로 보인다. 2012년을 지나 이제 2013년이다. 아직도 클라우드 컴퓨팅 이슈는 살아 숨쉰다. 다만, 실제 클라우드 컴퓨팅으로 IT 업계가 생각만큼의 실적을 가지지 못한 것으로 보인다. 그리고 이슈의 중심도 클라우드 자체라기 보다는 Big Data 나 Personal Cloud 로 변화되고 있는 듯 하다. 그럼 Big Data라는 것은 무엇일까? 지금은 정보의 홍수 속에 뭍혀서 모든 사람들이 지내고 있다. 의미있는 데이터와 전혀 의미없는 데이터까지 정말 정보의 바다에 빠진 것 같다. 클라우드 컴퓨팅이 기반이 되어 이런 넘쳐나는 데이터들에서 의미있는 데이터들을 만들어내는 것이 "Big Data" 의 본질이 아닐까 한다. 많은 정보의 처리와 분석에 대한 베이스로서의 클라우드와 사용자들이 사용하는 다양한 스마트 기기들 (스마트 폰, 타블렛 PC 등) 을 한 곳의 접점으로 모아줄 수 있는 Personal Cloud 와 SNS 기반의 정보 교류를 가능하게 하는 정보 유통뿐만 아니라 개인들에 맞춤화된 정보 제공인 Big Data 까지... 결국 모든 IT 이슈들이 자체적인 것을 벗어나 점차 융합되고 연결된 모습으로 양상을 바꿔가고 있는 것으로 보인다. 이미 우리들은 알게 모르게 Big Data의 속에 있다. 기업들은 보다 유용한 정보를 가공해서 소비자에게 제공하여 이윤을 창출하고 있고, 개인들 역시 제공되는 정보를 통해서 보다 정제된 정보를 제공받을 수 있기 때문이다. 따라서 기업의 경영 패터다임과 기업 환경의 변화에 발 맞춘 Big Data 분석의 기술 이슈에 대한 검토와 검증이 필요한 시점이다. 어쩌면 이미 늦은 것일 수도 있다. 그럼 실제 Big Data라는 것은 어떻게 사용되고, 어떤 문제점이 존재하는지를 알아보도록 하자. 가장 기본...

C# Interop - C# 과 C API 상호 운영성

C# 은 강력한 기능과 클래스들을 제공하기만 Window Application 의 작성을 위해서는 C 로 작성된 Library를 가져다 사용해야 하는 경우가 많이 발생한다. C# 은 기본적으로 포인터를 지원하지 않고, 관리되는 코드의 메모리 관리체계가 근본적으로 C와는 차이가 많기 때문에 C 와의 호환을 위해서는 특수한 기법을 사용해야 한다. 이를 위해서 제공되는 것이 C# 의 PInvoke 와 Marshalling 이다. 1. Using C DLL (PInvoke : Platform Invocation Service) C# 은 C DLL 의 관리되지 않는 코드 함수를 호출할 수 있도록 플랫폼 호출 서비스 (PInvoke)를 제공한다. 일반적으로 C 로 작성된 DLL 이나 WIN32 API 를 호출하는 용도로 사용된다. 1.1 DLL 함수의 정의 PInvoke 를 이용해서 WIN32 API를 정의하는 방법은 "DllImport" 를 이용하는 것으로 DllImportAttribute 클래스를 사용하여 특성 정의를 하면 된다. public DllImportAttribute( string dllName) 즉, 사용하려는 DLL 의 파일명을 파라미터로 지정하고 실제 사용하려는 함수는 특성의 바로 아래에 함수 선언을 하면 된다. 예) USER32.dll 의 MessageBox 함수 정의 using System.Runtime.InteropServices [DllImport(“user32”)] public static extern int MessageBox( int hWnd, String pText, String pCaption, int uType); 위의 예와 같이 선언하고 C# 코드에서 "MessageBo" 라는 이름으로 실제 함수를 호출할 수 있다. 단, 반드시 해당 함수는 "static extern" 으로 선언되어야 한다 . 1.2 Dll...