获取hadoop管道以在具有文件访问权限的os x上工作

时间:2015-10-21 11:55:16

标签: c++ macos hadoop

如果这个问题很简单,我很抱歉,但是尽管在Google上花了几个小时,我还是无法正确解决它...

我已经在OS X 10.8上从源代码编译并安装了hadoop 2.5.2。我认为一切顺利,即使编译本地库有点痛苦。

为了验证我的安装,我尝试了像hadoop一样附带的示例:

$ hadoop jar /Users/per/source/hadoop-2.5.2-src/hadoop-dist/target/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar  pi 2 5

让我回来了

Job Finished in 1.774 seconds
Estimated value of Pi is 3.60000000000000000000

所以这似乎表明hadoop至少在工作,我想。

由于我的最终目标是使用管道从C ++程序中使用文件I / O,我还尝试以下作为中间步骤:

$ hdfs dfs -put etc/hadoop input
$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep input output 'dfs[a-z.]+'

这似乎也有效(如产生正确的输出)。

然后,最后,我尝试了wordcount.cpp示例,但这不起作用,虽然我无法理解如何修复它。错误信息非常清楚。

 2015-10-21 13:38:33,539 WARN org.apache.hadoop.security.UserGroupInformation: No groups available for user per
 2015-10-21 13:38:33,678 INFO org.apache.hadoop.security.JniBasedUnixGroupsMapping: Error getting groups for per: getgrouplist: error looking up group. 5 (Input/output error)

很明显,我不知道文件权限,但是什么?我的hdfs-site.xml文件看起来像这样,我试图完全关闭权限检查。

 <configuration>
  <property>
   <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
   <name>dfs.web.ugi</name>
    <value>per</value>
  </property>
  <property>
   <name>dfs.permissions</name>
    <value>false</value>
   </property>
 </configuration>

但我很困惑,因为我至少似乎能够在hdfs中的文件上使用grep(根据上面的内置示例)。

非常感谢任何反馈。我正在以自己的身份运行所有这些,所以我还没有为hadoop创建一个新用户,因为我现在只在笔记本电脑上本地运行它。

编辑:根据以下讨论,使用终端窗口的一些额外输出进行更新:

<snip>
 15/10/21 14:47:41 INFO mapred.MapTask: bufstart = 0; bufvoid = 104857600
 15/10/21 14:47:41 INFO mapred.MapTask: kvstart = 26214396; length = 6553600
 15/10/21 14:47:41 INFO mapred.LocalJobRunner: map task executor complete.
 15/10/21 14:47:41 WARN mapred.LocalJobRunner: job_local676909674_0001
 java.lang.Exception: java.lang.NullPointerException
     at    org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
     at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
 Caused by: java.lang.NullPointerException
     at org.apache.hadoop.mapred.pipes.Application.<init>(Application.java:104)
     at org.apache.hadoop.mapred.pipes.PipesMapRunner.run(PipesMapRunner.java:69)
     at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
     at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
 <snip>

如果相关,我可以添加更多

0 个答案:

没有答案