如何在Windows10上运行spark流媒体应用程序?

mfuanj7w  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(460)

我在mswindows1064位上运行了一个spark流应用程序,它使用spark mongo连接器在mongodb中存储数据。
每当我运行spark应用程序时,甚至 pyspark 我得到以下例外:
原因:java.lang.runtimeexception:hdfs上的根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

我使用本地安装的hadoop3.0.0alpha1 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:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
我似乎错过了hadoop的本机库,在我的操作系统上,这也表明,我需要重新编译 libhadoop.so.1.0.0 对于64位平台。
在哪里可以找到64位windows 10的本机库?还是有别的办法解决这个问题?是从图书馆来的吗?

eqqqjvef

eqqqjvef1#

首先,您不必安装hadoop就可以使用spark,包括带或不带mongodb的spark流模块。
由于您使用的是windows,因此存在已知的ntfs的posix不兼容问题,因此您必须 winutils.exePATH 因为spark在幕后使用hadoopjar(用于文件系统访问)。你可以下载 winutils.exe 从https://github.com/steveloughran/winutils. 从下载一个 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阅读了apachehadoop项目的官方答案:在windows上运行hadoop时遇到的问题。
下面的信息是无害的,你可以放心地忽略它。 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform

相关问题