Intro of Scala-Understading BigData(9)
Intro
학교 수강과목에서 학습한 내용을 복습하는 용도의 포스트입니다.
빅데이터 개념과 오픈소스인 아파치 하둡과 맵리듀스 및 스파크를 이용한 빅데이터 적용을 공부합니다.
맵 리듀스의 경우 사용하기에 다소 진입장벽이 있는편입니다.
스파크처럼 통합 환경을 제공하지 않아 원하는 유틸리티나 라이브러리를 별도로 연결해서 사용해야하기 때문입니다. 이를 해소하는 것이 스파크라는 분산 데이터 처리 통합 엔진입니다.
따라서 맵 리듀스로 먼저 공부해보고, 스파크로 넘어갑니다.
스파크 엔진의 경우 Java가 아닌 Scalar라는 언어로 사용하며, 기존 우리가 알고 있는 SQL을 통해 고급 질의가 가능하며, 시각화나 스트림 처리 및 기계학습등 까지의 높은 수준의 분석을 제공하는 통합 프레임 워크입니다.
빅데이터 컴퓨팅(분산시스템상의 분산처리 환경)의 기본 개념과 원리를 이해하고 이를 실습해보는 과정에서 2대 이상의 리눅스 클러스터 서버를 구축 및 활용할 것입니다.
빅데이터이해(1) 보러가기
빅데이터이해(2) 보러가기
빅데이터이해(3) 보러가기
빅데이터이해(4) 보러가기
빅데이터이해(5) 보러가기
빅데이터이해(6) 보러가기
빅데이터이해(7) 보러가기
빅데이터이해(8) 보러가기
빅데이터이해(10) 보러가기
이번 시간에는 스칼라 프로그래밍언어를 소개합니다.
스파크는 스칼라로 작성되었으며 많은 라이브러리를 가지고 있는 효율적인 프로그래밍언어입니다.
예제를 통해 속성으로 배웁니다.
Scalar 소개 및 설치
Scalar는 Scalable(확장 가능한) 언어라는 뜻을 내포합니다.
객체 지향이면서 함수형 프로그래밍언어죠.
함수형 프로그래밍 언어는 순수 함수를 작성할 수 있습니다.
즉, 같은 입력에 대해 항상 같은 출력을 반환하게되는 것이죠.
따라서 부작용이 없도록 설계합니다.
기존 Java의 복잡함을 극복하기 위해 2004년 M.Odersky가 개발한 언어로, 스칼라언어를 컴파일하게되면 Java 바이트코드를 생성합니다.
즉 JVM상에서 동작할 수 있는것이죠.
자바의 문법과 라이브러리를 그대로 사용 가능합니다.
참고로 Java에서 Scala로 변환은 대부분 가능하며, 반대의 경우는 다소 제한적입니다.
리눅스에서 Scala를 설치하려면 아래 과정을 따라해주세요.
다운로드 링크
scala 2.12.11 버전을 마스터 서버에 설치했습니다.
cd /usr/local/src
sudo wget https://downloads.lightbend.com/scala/2.12.11/scala-2.12.11.tgz
sudo mkdir scala
sudo tar -xvf scala-2.12.11.tgz -C scala
집해제까지하셨다면, home/.bashrc 를 편집하여 PATH 환경변수에 스칼라 경로를 추가해주세요.
...
export SCALA_HOME=/usr/local/src/scala/scala-2.12.11
export PATH=$SCALA_HOME/bin:$PATH
편집을 하셨으면 적용까지 진행해주시기 바랍니다.
source ~/.bashrc
환경변수를 설정했기때문에 scala 명령어를 입력하면 프롬트명이 바뀌는 것을 확인하실 수 있을 것입니다.
scala 기반 빌드 툴인 SBT도 함께 설치 해주겠습니다.
SBT는 java, scala 소스코드를 빌드해줍니다.
아파치 ivy를 사용하여 의존성관리를 해주며 apache maven 보다는 단순하고 쉽게 사용이 가능합니다.
로컬 저장소 디렉토리는 ~/ivy2/cache로 설치를 진행해주세요.
마찬가지로 마스터 서버에 설치해주시기 바랍니다.
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt
sbt 명령어로 SBT를 실행 가능합니다. 처음 실행 시 저장소 라이브러리 적재때문에 시간이 꽤 걸릴 겁니다.
Scala 기초
개인이 공부하고 포스팅하는 블로그입니다. 작성한 글 중 오류나 틀린 부분이 있을 경우 과감한 지적 환영합니다!