Mac(OS X 10.11)에 올인원인 Spark 개발 환경 구축
Mac에서 Hadoop을 움직이기 때문에 실용적이지는 않지만 최소한의 개발 환경으로는 가치가 있다고 생각합니다.
환경
Hadoop 설치
이번에는 Homebrew를 사용합니다.
$ brew install hadoop
Hadoop 설치가 끝나면 native-hadoop 라이브러리를 만듭니다.
※ 이것이 없으면 이하의 에러가 나와 Hadoop가 기동하지 않습니다
util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
$ hadoop version
Hadoop 2.7.2
...
Compiled with protoc 2.5.0
$ curl -O http://ftp.jaist.ac.jp/pub/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2-src.tar.gz
※ 버전은 갖추는 것
$ brew install protobuf250
$ brew install maven
$ cd hadoop-2.7.2-src/hadoop-common-project/hadoop-common/
$ sudo mvn -P native compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Apache Hadoop Common 2.7.2
[INFO] ------------------------------------------------------------------------
[INFO]
...
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: xx:xx min
[INFO] Finished at: xxxx-xx-xxTxx:xx:xx+09:00
[INFO] Final Memory: 32M/254M
[INFO] ------------------------------------------------------------------------
$ ls target/native/target/usr/local/lib/
libhadoop.1.0.0.dylib libhadoop.a libhadoop.dylib
작성한 라이브러리를
/Library/Java/Extensions
에 넣으십시오.Hadoop 설정
이 기사를 참고로했습니다.
Mac에서 hadoop을 조금 움직여보십시오.
버전이 다르므로
$HADOOP_HOME
/usr/local/Cellar/hadoop/2.7.2
Hadoop 시작
$ cd /usr/local/Cellar/hadoop/2.7.2/sbin/
$ ./start-all.sh
Unable to load native-hadoop library〜
가 나오면 java.library.path
가 /Library/Java/Extensions
로 설정되어 있는지 확인하십시오.※ 기동시에 이하의 에러가 나옵니다만, Java1.7에서의 해결 방법을 찾을 수 없었던 일과, 동작은 하기 때문에 스루 했습니다.
Unable to load realm info from SCDynamicStore
Spark 샘플 프로젝트 만들기
여기에서 다운로드합니다.
h tp // w w.ぃght ben d. 코 m / 아 c 치아와 r / 드 w ぉ 아 d
$ curl -O https://downloads.typesafe.com/typesafe-activator/1.3.10/typesafe-activator-1.3.10-minimal.zip
해동·배치하면 PATH에 등록해 두면 편리합니다.
~/.bash_profile
export ACTIVATOR_HOME=/usr/local/Cellar/activator-1.3.10-minimal
export PATH=$ACTIVATOR_HOME/bin:$PATH
$ source ~/.bash_profile
이번에는 MovieLens 1M을 사용합니다.
$ curl -O http://files.grouplens.org/datasets/movielens/ml-1m.zip
$ unzip ml-1m.zip
$ cd ml-1m
$ hadoop fs -mkdir /input/
$ hadoop fs -put ratings.dat /input/
$ hadoop fs -ls -R /
drwxr-xr-x - root supergroup 0 2016-xx-xx xx:xx /input
-rw-r--r-- 1 root supergroup 24594131 2016-xx-xx xx:xx /input/ratings.dat
Activator에서 프로젝트를 만듭니다.
$ activator new SparkSample
Fetching the latest list of templates...
Browse the list of templates: http://lightbend.com/activator/templates
Choose from these featured templates or enter a template name:
1) minimal-akka-java-seed
2) minimal-akka-scala-seed
3) minimal-java
4) minimal-scala
5) play-java
6) play-scala
(hit tab to see a list of all templates)
> 4
OK, application "SparkSample" is being created using the "minimal-scala" template.
...
Spark 라이브러리와 명령줄 실행을 위한 플러그인을 설정합니다.
minimal-scala
의 프로젝트라면 project/plugins.sbt
가 없다고 생각하므로 작성해 주세요.project/plugins.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.6")
build.sbt
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.11" % "1.6.1",
"org.scalatest" %% "scalatest" % "2.2.4" % "test"
)
enablePlugins(JavaAppPackaging)
샘플 코드
이번에는 데이터를 얻을 수 있는지 소통을 확인하는 코드를 작성합니다.
별도로 이번 환경에서 간단한 추천 로직을 구현할 예정입니다.
Hello.scala
package com.example
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object Hello {
def main(args: Array[String]): Unit = {
val conf = new SparkConf()
.setAppName("SparkSample")
.setMaster("local")
val sc = new SparkContext(conf)
val textFile = sc.textFile("hdfs://localhost:9000/input/ratings.dat")
println(s"###file line count=${textFile.count}")
sc.stop
}
}
실행
위의 소스를 컴파일하고
ratings.dat
의 행 수를 출력합니다.$ cd SparkSample
$ activator compile
...
[info] Done updating.
[info] Compiling 1 Scala source to /xxx/SparkSample/target/scala-2.11/classes...
[success] Total time: 36 s, completed 2016/xx/xx xx:xx:xx
$ activator stage
...
[info] Done packaging.
[success] Total time: 11 s, completed 2016/xx/xx xx:xx:xx
$ cd target/universal/stage/bin/
$ ./sparksample
16/xx/xx xx:xx:xx INFO SparkContext: Running Spark version 1.6.1
...
###file line count=1000209
결과(1,000,209행)가 출력되었습니다.
실제 파일의 행 수와 일치합니다.
$ cat ratings.dat | wc -l
1000209
덤
IntelliJ의 SBT Console에서
Unable to load native-hadoop library〜
오류가 발생하면 Preferences...에서 java.library.path
를 설정하면 좋습니다.Reference
이 문제에 관하여(Mac(OS X 10.11)에 올인원인 Spark 개발 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shinpr/items/fc856b33a1e8be07ffc9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)