首页 > 解决方案 > 'winutils' 如何像 hadoop 一样工作?它的作用是什么?

问题描述

当我编写在 hadoop 上执行操作的 spark 应用程序时,Winutils 被映射为 hadoop home。但只是想了解 winutils 如何使这成为可能?

标签: apache-sparkhadoophive

解决方案


Spark 不需要安装 Hadoop 集群,可以在本地安装,但需要使用 Hadoop 代码库中的一个元素,称为“WinUtils”。这允许管理 HDFS 文件系统需要本地文件系统的 POSIX 文件系统权限。更多细节在这里。

Spark 要求您为 Hive 元存储使用的临时目录设置 POSIX 兼容权限,默认为C:\tmp\hive

WinUtils 提供 POSIXchmod以及其他POSIX 命令

不过,这似乎没什么大不了的,可以消除对 winutils 的依赖。阅读这篇文章:没有 winutils.exe 的 Windows 上的 Apache Spark - 由于硬编码修复,这不能用作永久解决方案,例如:

   private void loadPermissionInfo() {
      IOException e = null;
      try {
        /*  String output = FileUtil.execCommand(new File(getPath().toUri()), 
            Shell.getGetPermissionCommand());*/
        // Let put it hard instead of calling winutils.exe 
          String output = "drwx-wx-wx|1|xxxxx|yyyyyyy|0|Jun|21|2018|"+getPath();   

但是该代码肯定会让您更好地了解 winutils 的用途。


推荐阅读