如何在 Windows 10 上运行 Spark Streaming 应用程序?
Posted
技术标签:
【中文标题】如何在 Windows 10 上运行 Spark Streaming 应用程序?【英文标题】:How to run Spark Streaming application on Windows 10? 【发布时间】:2016-12-26 18:06:11 【问题描述】:我在 MS Windows 10 64 位上运行一个 Spark Streaming 应用程序,它使用 spark-mongo-connector 在 MongoDB 中存储数据。
每当我运行 Spark 应用程序时,即使是 pyspark
我也会收到以下异常:
原因:java.lang.RuntimeException:HDFS 上的根暂存目录:/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 目录的路径,%HADOOP_HOME%\bin
在PATH
环境变量中。
所以我尝试执行以下操作:
> hdfs dfs -ls /tmp
Found 1 items
drw-rw-rw- - 0 2016-12-26 16:08 /tmp/hive
我尝试更改权限如下:
hdfs dfs -chmod 777 /tmp/hive
但是这个命令输出:
警告 util.NativeCodeLoader:无法为您的平台加载 native-hadoop 库...在适用的情况下使用内置 java 类
我的操作系统似乎缺少 Hadoop 的本机库,在查找后似乎我需要重新编译 64 位平台的 libhadoop.so.1.0.0
。
在哪里可以找到适用于 Windows 10 64 位的本机库? 还是有另一种解决方法?来自图书馆?
【问题讨论】:
【参考方案1】:首先,您不必安装 Hadoop 即可使用 Spark,包括带或不带 MongoDB 的 Spark Streaming 模块。
由于您使用的是 Windows,因此存在与 NTFS 的 POSIX 不兼容的已知问题,因此您必须在 PATH
中包含 winutils.exe
,因为 Spark 确实在幕后使用 Hadoop jar(用于文件系统访问)。您可以从https://github.com/steveloughran/winutils 下载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阅读Problems running Hadoop on Windows 获取 Apache Hadoop 项目的官方答案。
下面的消息是无害的,您可以放心地忽略它。
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform
【讨论】:
如果有,请确保在控制面板中定义了HADOOP_HOME
和 PATH
环境变量,这样当您执行 Spark Streaming 应用程序时,Spark 将使用 winutils.exe
作为其自己的低-水平的东西。
实际上确实更改了权限,但 spark 仍然显示相同异常的输出
如何运行 Spark 应用程序?在您启动 Spark 应用程序后,您能否从一开始就将整个输出粘贴到异常中?使用 gist.github.com 粘贴整个输出(如果足够短,也可以将其粘贴到您的问题中)。
我打开一个管理员 cmd 然后:cd C:\spark-2.0.2-bin-hadoop2.7\bin
然后我运行这个pyspark --conf spark.mongodb.input.uri=mongodb://127.0.0.1/db_name.collection_name --packages org.mongodb.spark:mongo-spark-connector_2.11:2.0.0
这是gist link 的错误
你能把set %HADOOP_HOME%
和set %PATH%
加到要点上吗?您也可以将%HADOOP_HOME%\bin\winutils.exe ls \tmp\hive
添加到要点中吗?从命令行中删除 --conf
和 --packages
,因为现在不需要它们。我认为我们离找到解决方案更近了!以上是关于如何在 Windows 10 上运行 Spark Streaming 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章