如何在Windows 10上运行Spark Streaming应用程序?

时间:2016-12-26 18:06:12

标签: windows hadoop apache-spark pyspark

我在MS Windows 10 64位上运行Spark Streaming应用程序,使用spark-mongo-connector在MongoDB中存储数据。

每当我运行Spark应用程序时,即使pyspark我也会遇到以下异常:

  

引起:java.lang.RuntimeException:HDFS上的root scratch dir:/ tmp / hive应该是可写的。目前的权限是:rw-rw-rw -

完整堆栈跟踪:

Caused by: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
  at org.apache.hadoop.hive.ql.session.SessionState.createRootHDFSDir(SessionState.java:612)
  at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:554)
  at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
  ... 32 more

我使用 Hadoop 3.0.0 alpha1 ,我在本地安装了HADOOP_HOME环境变量,指向Hadoop dir和%HADOOP_HOME%\binPATH的路径环境变量。

所以我尝试做以下事情:

> hdfs dfs -ls /tmp
Found 1 items
drw-rw-rw-   -          0 2016-12-26 16:08 /tmp/hive

我尝试按以下方式更改权限:

hdfs dfs -chmod 777 /tmp/hive

但是这个命令输出:

  

WARN util.NativeCodeLoader:无法为您的平台加载native-hadoop库...使用适用的builtin-java类

我的操作系统似乎缺少Hadoop的原生库,在查看之后,我还需要重新考虑64位平台的libhadoop.so.1.0.0

在哪里可以找到适用于Windows 10 64位的本机库? 还是有另一种解决方法吗?来自图书馆的aprt?

1 个答案:

答案 0 :(得分:1)

首先,您不必安装Hadoop来使用Spark,包括使用或不使用MongoDB的Spark Streaming模块。

由于您在Windows上存在已知的NTFS问题。 POSIX不兼容,因此您必须在winutils.exe中拥有PATH,因为Spark确实使用了Hadoop jar(用于文件系统访问)。您可以从this question and answer下载winutils.exe。如果您不知道应该使用哪个版本,请从hadoop-2.7.1下载一个(但它应该真正反映您的Spark Streaming构建的Hadoop版本,例如Spark 2.0.2的Hadoop 2.7.x)。

创建c:/tmp/hive目录并以管理员身份执行以下操作(又名以管理员身份运行):

winutils.exe chmod -R 777 \tmp\hive

PROTIP 请阅读https://github.com/steveloughran/winutils以获取Apache Hadoop项目的正式答案。

以下信息无害,您可以放心地忽略它。

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform