다운로드
작성자: admin 작성일시: 2016-04-07 21:26:19 조회수: 12941 다운로드: 539
카테고리: 개발/운용 환경 태그목록:

데이터 분석 환경

데이터 분석 환경의 변화

실제로 데이터를 수집, 저장하고 분석작업을 수행하는 것은 컴퓨터 프로그램이므로 계산 환경은 데이터 분석에서 가장 먼저 고려해야 하는 중요한 요소이다. 데이터 분석을 위한 계산 환경이란 컴퓨터 하드웨어, 운영체제, 분석용 프로그램 등을 모두 통틀어 말한다. 아무리 많은 데이터와 좋은 분석 모형이 있어도 실제로 데이터 가공과 분석을 수행할 계산 환경이 이를 받쳐주지 못한다면 아무런 소용이 없을 것이다.

최근 데이터 분석을 위한 계산 환경은 빠르게 변화하고 있으므로 우선 이러한 변화에 대해 알아볼 필요가 있다. 과거에는 윈도우 운영체제를 가진 개인용 데스크톱 컴퓨터에 이미 만들어진 상업용 분석 프로그램을 설치하고 데이터 분석가가 이 프로그램의 기능을 사용하여 분석을 수행하는 것이 일반적이었다. 분석 결과는 분석가에 의해 정리되어 구두 혹은 문서로 현업에 활용되었다. 따라서 분석가의 분석 능력은 분석 프로그램의 기능과 분석가가 분석 프로그램의 사용법을 얼마나 잘 아느냐에 좌우되었다. 현재는 주로 리눅스 운영체제 기반의 서버에 R이나 파이썬 기반의 분석 라이브러리를 설치하고 이 라이브러리를 사용하여 분석가가 직접 데이터 분석 프로그램을 개발한다. 분석 결과는 실제 업무를 실행하는 서버로 전달되어 바로 업무에 사용되는 경우가 많다.

인터넷 쇼핑몰 사이트에서 고객에게 상품을 추천하는 경우를 살펴보자. 과거에는 데이터 분석가가 고객 특성에 따른 상품 구매 패턴, 예를 들어 최근 한 달 동안 2번 이상 구매한 상품은 또다시 구매한다는 규칙을 찾아내어 이를 개발자에게 넘겨주면 웹사이트 개발자가 해당 규칙을 웹사이트에 구현하였다. 따라서 시간 혹은 사람에 따라 달라지는 복잡한 규칙은 현업에 적용하기 어려웠다. 이제는 데이터 분석가가 이러한 규칙을 찾는 작업 자체를 수행하는 머신러닝 알고리즘을 개발하고 이 알고리즘이 찾아낸 결과는 실시간으로 웹사이트에 전달되어 현업에서 바로 사용된다.

  • 과거의 데이터 분석 환경
    • 개인용 데스크톱 컴퓨터
    • 윈도우운영체제
    • 특정 분석 전용 애플리케이션
    • GUI 메뉴로 분석 실행
  • 현재의 데이터 분석 환경
    • 서버 컴퓨터
    • 리눅스운영체제
    • 분석 프로그램 작성용 라이브러리
    • R/Python 등으로 분석 프로그램 작성

데이터 분석 환경의 변화

그림 2.1 : 데이터 분석 환경의 변화

데이터 분석 환경의 구성

최근의 데이터 분석 환경은 어떻게 구성되어 있을까?

하드웨어나 운영체제는 클라우드 기반의 리눅스 서버 사용이 늘고 있다. 금융권과 같이 확고한 신뢰성이 요구되는 곳에서는 아직도 메인프레임이나 유닉스를 사용하고 있지만, 중소형 사업체에서는 비용 절감을 위해 리눅스를 사용하는 곳이 많다. 리눅스는 윈도우나 유닉스보다 비용이 저렴하며 최신의 머신러닝 라이브러리와 도구들이 리눅스 환경에 최적화되 있는 경우가 많다. 따라서 데이터 분석가도 리눅스 운영체제를 잘 다룰 수 있어야 한다. 텍스트 기반의 콘솔에서 돌아가는 vi 편집기나 리눅스 도구의 사용법은 물론 셸 스크립트의 작성도 할 줄 알아야 한다.

데이터의 용량이나 처리 수준이 한 대의 컴퓨터로는 불가능한 정도로 커지는 경우가 많아지면서 클러스터(cluster)를 사용한 분산 컴퓨팅(distributed computing) 환경이 필요하다. 딥러닝과 같은 대용량의 계산에서는 그래픽 처리 유닛(GPU)이 필요하게 된다. 이러한 분산 컴퓨팅이나 GPU를 개인이나 소규모 조직 내에 자체적으로 갖추는 것은 비용이 많이 들기 때문에 최근에는 아마존과 같은 대규모 데이터 센터가 제공하는 클라우드 서비스를 많이 사용한다. 클라우드 서버를 사용하면 설치 및 운영 비용을 절감할 수도 있으며 무엇보다 상황에 따른 확장이 쉽다.

과거에는 분석용 프로그래밍 언어로 SAS, SPSS, S+ 등을 많이 사용하였으나 최근에는 파이썬의 사용이 급증하고 있다. 특히 머신러닝과 딥러닝 분야의 라이브러리가 풍부하기 때문에 데이터 분석에 있어 파이썬 프로그래밍 능력은 필수라고 할 수 있다.

  • 최근의 데이터 분석 환경의 구성 예

    • 리눅스 운영체제
    • 텍스트 기반의 콘솔 환경
    • 분산 컴퓨팅
    • GPU 사용
    • 클라우드 서비스 사용
    • 파이썬 프로그래밍 언어

리눅스

리눅스(Linux)는 리누스 토르발스가 개발한 커널에 기반을 둔 운영체제다. 리눅스는 포직스(POSIX) 커널과 호환성을 가지며 유닉스 시스템에서 사용하던 대부분의 운영체제 구성요소를 사용할 수 있다. 또한 소스코드가 공개되어 있고 무료이므로 원가 절감이 요구되는 기업 환경에서 많이 사용되고 있다.

리눅스 배포판은 리눅스 커널을 포함한 전체 운영체제를 말한다. 많이 사용되는 배포판은 페도라(fedora) 계열과 데비안(debian) 계열이다. 페도라 계열에서 가장 유명한 것은 레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux, RHEL)로 유상 유지보수 서비스를 제공하기 때문에 자본이 많고 안정성을 요구하는 대기업에서 많이 사용한다. CentOS는 레드햇 엔터프라이즈 리눅스와 호환되는 무료 버전이라고 볼 수 있다. 레드햇은 유지보수 서비스를 유상으로 제공하기 때문에 커널이나 라이브러리 등 구성요소의 업그레이드에 굉장히 보수적인 경향이 있다. 데비안 계열은 이와 반대로 개인 사용자 환경을 지향하며 지속적으로 커널 및 구성요소 업그레이드를 한다. 우분투(ubuntu)는 대표적인 데비안 계열 배포판이다. 최신 데이터 분석이나 머신러닝 라이브러리를 사용하고자 때는 우분투를 추천한다.

리눅스 커널을 사용하지 않지만 포직스 커널에 호환되는 운영체제로 freeBSD와 netBSD가 있다. 맥 운영체제인 OS X는 FreeBSD에 기반을 두고 있다.

  • 리눅스

    • 페도라 계열

      • 레드햇 엔터프라이즈 리눅스
      • CentOS
    • 데비안 계열

      • 우분투
  • BSD

    • freeBSD
    • netBSD
    • 맥 OS X

도커

리눅스 분산 컴퓨팅에서 빠질 수 없는 것이 도커(Docker)다. 도커는 리눅스에서 사용할 수 있는 운영체제 수준의 가상화 서비스이다. 보통 컨테이너 서비스(container service)라고 불린다.

도커는 흔히 하드웨어를 에뮬레이션하여 하나의 컴퓨터 위에 여러 운영체제를 가동하기 위한 하드웨어 수준의 가상 머신과 비교된다. 오라클의 버추얼박스(VirtualBox)나 마이크로소프트의 Windows Virtual PC는 하드웨어 수준의 가상 머신으로 윈도우 위에 리눅스를 가동한다거나 반대로 리눅스 위에 윈도우를 가동할 수 있다. 이 때 원래의 운영체제를 호스트(Host), 가상 운영체제를 게스트(Guest)라고 한다. 게스트 운영체제는 하드웨어 수준에서 운영체제를 에뮬레이션하므로 성능이 나쁘고 게스트 운영체제의 부팅 과정을 거쳐야 하므로 가상 프로세스를 시작하거나 종료하는 데 시간이 오래 걸린다. 이와 달리 도커는 호스트와 커널을 공유하는 운영체제 수준의 가상화 서비스이므로 버추얼박스처럼 서로 다른 운영체제를 가동할 수는 없지만 게스트 프로세스도 호스트 프로세스와 같은 속도와 성능으로 움직이며 가상화 프로세스를 시작하거나 종료하기 위한 추가 부담도 거의 없다.

리눅스 상의 애플리케이션을 설치하고 설정하는 과정은 윈도 운영체제에 비해 복잡하다. 그러나 도커 이미지를 사용하면 가상의 컴퓨터를 쉽게 클러스터 상의 노드에 복제할 수 있고 쉽게 설치 코드를 공유할 수 있으므로 운영 및 유지보수 부담이 적다.

  • Docker

    • 운영체제 수준의 가상화 서비스 (컨테이너 서비스)
    • 리눅스 커널 공유 (커널 버전 3.10 이상)
    • 게스트 프로세스 운용시 성능 저하 없음
    • 다양한 배포판의 동시 사용 가능
  • 오라클 버추얼박스

    • 하드웨어 수준의 가상화 서비스 (가상 머신)
    • 하드웨어 에뮬레이션
    • 게스트 프로세스 성능 저하
    • 윈도우 위에서 리눅스 사용 가능

저자는 R과 파이썬(Python) 기반으로 모든 분석 환경을 갖춘 datascienceschool/rpython 이라는 도커 이미지를 도커 허브(docker hub)라는 웹사이트를 통해 제공한다. 이 도커 이미지만 설치하면 추가적인 소프트웨어 설치 없이 이 책에서 사용하는 모든 예제 코드를 바로 실행할 수 있다. datascienceschool/rpython을 설치하고 사용하는 방법은 다음 절을 참조한다.

파이썬

파이썬 프로그래밍 언어는 1991년 귀도 반 로섬(Guido van Rossum)이 개발한 범용 객체 지향(OOP) 프로그래밍 언어이다. 인터프리터 기반의 언어이고 플랫폼 독립적이므로 어떤 운영체제에서도 사용가능하다.

파이썬이 데이터 분석 언어로서 널리 사용되는 이유 중의 하나는 NumPy, SciPy, Tensorflow 등 다양한 수치 해석 및 데이터 분석 라이브러리를 가지고 있기 때문이다. 또한 범용 언어로서 독립 실행 애플리케이션이나 웹 서버 등의 개발이 쉽고 다른 프로그래밍 언어와 연동이 쉽다는 것도 파이썬의 인기 요소이다.

다만 스크립트 언어이기 때문에 실행 속도가 C/C++ 등의 컴파일 언어보다 느리다. 그러나 핵심 코드만 C 언어 등을 사용하여 개발이 할 수 있고 Cython, Numba 등 다양한 최적화 옵션이 존재하며 최근에는 PyPy와 같은 JIT(Just-In-Time) 컴파일이 가능한 파이썬 구현도 개발되어 속도에 대한 부담이 점차 줄어들고 있다.

  • 파이썬

    • 범용 객체 지향 프로그래밍 언어

    • 장점

      • 다양한 수치해석 및 데이터 분석 패키지들
      • 독립 실행 애플리케이션, 웹 서버 개발 가능
      • 다른 프로그래밍 언어와 연동이 쉬움
    • 단점

      • 느린 속도

아나콘다 파이썬

파이썬도 패키지와 패키지 관리 유틸리티를 포함한 다양한 배포판이 존재한다. 2019년 현재 가장 널리 쓰이는 파이썬 배포판은 아나콘다(Anaconda) 배포판이다. 아나콘다 파이썬 배포판은 자체적으로 패키지 레포지토리 서버를 관리하며 각 운영체제에 맞게 미리 빌드된 패키지를 제공하므로 패키지 설치가 쉽다. 또한 패키지 사이의 의존성을 처리가 뛰어나고 파이썬 가상 환경을 자체적으로 제공한다는 장점이 있다. 아나콘다 배포판 기반으로 파이썬을 설치하고 사용하는 방법은 다음 절에서 자세히 설명한다.

질문/덧글

사용자에 의해 삭제되었습니다. hdba*** 2016년 12월 23일 6:59 오후

사용자에 의해 삭제되었습니다.

답변: os 관련 질문드립니다. 관리자 2016년 12월 23일 9:56 오후

데이터 분석 및 머신러닝과 관련된 대부분의 신규 라이브러리가 리눅스를 기반으로 나오는 경우가 많으므로 리눅스를 사용할 것을 추천합니다.

증권사 API를 통해 빅데이터 분석을 하려고 할 때 리눅스로 하면 불편함은 없는 지 궁금합니다. ukeb*** 2017년 1월 13일 7:10 오후

선생님 안녕하세요. 선생님의 파이썬 데이터 사이언스 강의를 들은 뒤 호기심이 생겨 열심히 따라해 보고 있는 개인 투자자입니다. 먼저 이런 사이트를 통해 귀중한 경험과 지식들을 배울 수 있게 해주신 점 진심으로 감사드립니다. (_ _)

현재 증권사 API를 통해 자료를 수집하고 분석하는 일을 고려해 보고 있는데요. 증권사 API의 경우 대부분 COM을 이용해서 만드는 걸로 알고 있는데, 리눅스를 사용할 때 충돌은 없을 지 궁금합니다. 현재 파이썬으로 증권사 API를 이용하는 코드를 짜고 있거든요. 저같은 초보자들은 언어나 환경을 바꾸는 일이 상당히 버거운 일이라 이렇게 질문을 드립니다.

API를 통해 각종 데이터를 수집하고 저장한 뒤 R이나 파이썬을 통해 불러와 투자 아이디어를 찾고 싶은데요. 생각보다 가야할 길이 머네요. 그래도 선생님과 같이 어깨를 빌려 주시는 거인들 덕분에 더 먼 곳을 그려볼 수 있는 듯 합니다. 항상 감사합니다.

답변: 증권사 API를 통해 빅데이터 분석을 하려고 할 때 리눅스로 하면 불편함은 없는 지 궁금합니다. 관리자 2017년 1월 15일 12:57 오후

현재 리테일 고객에게 리눅스용 API는 제공하는 증권사는 없는 것으로 알고 있습니다. 증권사 API를 사용하시려면 윈도우즈를 사용하는 방법밖에 없습니다.

안녕하세요 선생님! 도커를 사용해보려 합니다. sb99*** 2018년 8월 10일 4:00 오후

안녕하세요!! 너무 정리 잘 된 글을 포스팅 해주셔서 감사합니다.

다름이 아니라 이번에 컴퓨터를 새로 뽑으려 하는데, 데스크 탑 입니다.

제가 새로 생긴 데스크 탑에 데이터분석을 위한 리눅스 운영체제, 도커환경을 구축하면

제 노트북에서 데스크 탑 서버 환경에 접속하여, 데스크탑의 CPU, RAM, 그래픽카드 등의 자원은 온전히 쓸수 있는건가요?

예를 들어, 제 노트북에서 10초에 연산되는 작업을 도커를 통해 데스크탑과 연결하고 데스크탑의 자원을 활용하여 더 나은 연산작업을 수행할 수 있는지 알고 싶습니다.

또 노트북 사용자가 여러명이여도 되는지.. 자원을 동시에 사용할 수 있는지.. 확인하고 싶습니다~

긴 글 읽어주셔서 감사합니다.