2016-12-26 144 views
1

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

每当我跑星火应用,甚至pyspark我得到以下异常:

引起:了java.lang.RuntimeException:根目录划伤:HDFS上的/ tmp /蜂巢应该是可写的。当前的权限是: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α1,我自己安装与本地环境HADOOP_HOME变量指向路径Hadoop dir和%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 

,但该命令的输出:

WARN 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 jars(用于文件系统访问)。您可以从https://github.com/steveloughran/winutils下载winutils.exe。如果您不知道应该使用哪个版本(但它应该真正反映Spark Streaming的Hadoop版本,例如用于Spark 2.0.2的Hadoop 2.7.x),请从hadoop-2.7.1下载一个。

创建c:/tmp/hive目录,然后执行以下的管理员(又名以管理员身份运行):

winutils.exe chmod -R 777 \tmp\hive 

普罗蒂普阅读Problems running Hadoop on Windows为Apache Hadoop项目的正式答复。

下面的消息是无害的,你可以放心地忽视它。

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

+0

如果你拥有了它,请确保您定义的'控制面板中HADOOP_HOME'和'PATH'环境变量,所以当你执行你的星火流媒体应用,星火会用'winutils.exe'为自己低级别的东西。 –

+0

实际上,事实上确实改变了权限,但spark仍然显示相同异常的输出 – MrRobot

+0

如何运行Spark应用程序?在启动Spark应用程序到异常之后,能否从一开始就粘贴整个输出?使用gist.github.com粘贴整个输出(或者将它粘贴到你的问题上,如果够短的话)。 –

相关问题