Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-3293

bin\winutils.exe not found when running MiniAccumuloCluster under Windows

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Not A Problem
    • None
    • None
    • mini
    • None
    • MS Windows

    Description

      When running JUnit-Tests on Windows with the MiniAccumuloCluster, the file bin\winutils.exe is needed, which is searched in the path, given by the system variable HADOOP_HOME. This worked fine with the MiniAccumuloCluster 1.4.4.

      When I try the same with Accumulo 1.6, I get the error

      14/10/24 16:57:40 ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
      java.io.IOException: Could not locate executable C:\Users\jsbaue\AppData\Local\Temp\1414162594270-0\bin\winutils.exe in the Hadoop binaries.
      	at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:318)
      	at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:333)
      	at org.apache.hadoop.util.Shell.<clinit>(Shell.java:326)
      	at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
      

      which basically says, that bin\winutils.exe is now searched in the temporary path, given to the MiniAccumuloCluster. When I try to put the file bin\winutils.exe in that path, I get an error, saying that the path has to be empty.

      I fixed this problem by changing accumulo\minicluster\src\main\java\org\apache\accumulo\minicluster\impl\MiniAccumuloClusterImpl.java:

      I exchanged Line 309-310:

          // hadoop-2.2 puts error messages in the logs if this is not set
          builder.environment().put("HADOOP_HOME", config.getDir().getAbsolutePath());
      

      with the following lines:

          env = System.getProperty("hadoop.home.dir");
          if(env == null) 
              env = System.getenv("HADOOP_HOME");
          // hadoop-2.2 puts error messages in the logs if this is not set
          if(env == null)
              env = config.getDir().getAbsolutePath();
          builder.environment().put("HADOOP_HOME", env);
      

      This fixes the bug on Windows. I did no checks on Linux.
      Could you check, if you chould change this in the next version of the MiniAccumuloCluster or help me with an other solution? Thanks!

      Attachments

        Activity

          People

            Unassigned Unassigned
            jsbaue Johannes Bauer
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: