[컴] Windows 10 에서 Apache Spark 사용

 

Windows 10 에서 Apache Spark 사용

Spark overview

다음 링크를 참고하자.

다운로드 및 설치

Spark 는 HDFS 와 YARN 을 위해서 Hadoop(하둡) 의 client library 들을 사용한다. 그래서 donwload 에는 Hadoop 일부가 같이 packaged 되어 있다. Hadoop 이 없는 버전을 다운로드 할 수도 있다.

Java, Scala 에서는 Maven 을 이용해서, Python 에서는 PyPI 를 이용해서 Spark 를 설치할 수 있다.

아래 링크에서 download 를 하자. 그리고 압축을 풀면 설치는 끝난다.

여기서는 다음 path 에 설치했다.

d:\a\apps\spark-3.1.1-bin-hadoop2.7

그리고 <spark_root>\bin\spark-shell.cmd 를 실행하자.


D:\a\apps\spark-3.1.1-bin-hadoop2.7\bin>spark-shell.cmd
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/D:/a/apps/spark-3.1.1-bin-hadoop2.7/jars/spark-unsafe_2.12-3.1.1.jar) to constructor java.nio.DirectByteBuffer(long,int)
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
21/03/17 20:49:38 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
        at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:382)
        at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:397)
        at org.apache.hadoop.util.Shell.<clinit>(Shell.java:390)
        at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80)
        at org.apache.hadoop.security.SecurityUtil.getAuthenticationMethod(SecurityUtil.java:611)
        at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:274)
        at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:262)
        at org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(UserGroupInformation.java:807)
        at org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:777)
        at org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:650)
        at org.apache.spark.util.Utils$.$anonfun$getCurrentUserName$1(Utils.scala:2476)
        at scala.Option.getOrElse(Option.scala:189)
        at org.apache.spark.util.Utils$.getCurrentUserName(Utils.scala:2476)
        at org.apache.spark.SecurityManager.<init>(SecurityManager.scala:79)
        at org.apache.spark.deploy.SparkSubmit.secMgr$lzycompute$1(SparkSubmit.scala:368)
        at org.apache.spark.deploy.SparkSubmit.secMgr$1(SparkSubmit.scala:368)
        at org.apache.spark.deploy.SparkSubmit.$anonfun$prepareSubmitEnvironment$8(SparkSubmit.scala:376)
        at scala.Option.map(Option.scala:230)
        at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:376)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:894)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1030)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1039)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
21/03/17 20:49:38 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://DESKTOP-3TJIL3S:4040
Spark context available as 'sc' (master = local[*], app id = local-1615981782598).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.1.1
      /_/

Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 15.0.1)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 21/03/17 20:49:52 WARN ProcfsMetricsGetter: Exception when trying to compute pagesize, as a result reporting of ProcessTree metrics is stopped


scala> sc
res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@60339ff4

scala>

참고로 위의 상황은 Hadoop 을 설치하지 않은 상황이다. 윈도우즈에서 하둡의 설치는 See Also 1. 을 참고하자.

example 파일 실행

다음 경로에 example file 이 있다.

<spark_root>\examples\src\main

java example 은 아래처럼 실행할 수 있다. 아래처럼 실행하면 JavaSparkPi class가 실행된다.

<spark_root>/bin/run-example SparkPi 10

다음 command 를 이용하면, Spark 를 interactively 하게 실행할 수 있다. --master option 은 master URL 을 지정하는 option 이다. 그래서 아래는 local 에서 실행하겠다는 뜻이다. 그리고 뒤에 붙은 [2] 는 thread 2개를 사용하겠다는 뜻이다.

./bin/spark-shell --master local[2]

See Also

  1. Install Hadoop 3.3.0 on Windows 10 Step by Step Guide - Kontext
  2. 쿠...sal: [컴] Databricks 사용해서 apache spark 사용해보기
  3. SPARKSQL vs RDBMS Database Query Benchmark pdf  
  4. 쿠...sal: [컴] hadoop - spark 테스트 환경

References

  1. Overview - Spark 3.1.1 Documentation

댓글 없음:

댓글 쓰기