gpt4 book ai didi

ant - 尝试使用 Fuse 挂载 HDFS。无法编译 libhdfs

转载 作者:可可西里 更新时间:2023-11-01 15:03:34 27 4
gpt4 key购买 nike

我正在尝试编译 libhdfs(一个允许外部应用程序与 hdfs 交互的 native 共享库)。这是我使用 Fuse 挂载 Hadoop 的 hdfs 必须采取的几个步骤之一。

编译似乎进行了一段时间,但以“BUILD FAILED”和以下问题摘要结束-

commons-logging#commons-logging;1.0.4:在 commons-logging#commons-logging 中找不到配置;1.0.4:“master”。 org.apache.hadoop#Hadoop;working@btsotbal800 commons-logging 需要它

log4j#log4j;1.2.15:在 log4j#log4j;1.2.15 中找不到配置:'master'。 org.apache.hadoop#Hadoop;working@btsotbal800 log4j 需要它

现在,我对此有几个问题,因为我用来做这件事的书没有详细说明这些东西到底是什么。

  1. Hadoop 使用的是 commons-logging 和 log4j 库吗?
  2. 这些库似乎位于 $HADOOP_HOME/lib 中。虽然它们是 jar 文件。我应该提取它们,尝试更改一些配置,然后将它们重新打包回 jar 中吗?
  3. 上述错误中的“master”是什么意思?是否有不同版本的库?

提前感谢您提供的任何见解。

最佳答案

如果您使用的是cloudera hadoop(cdh3u2),则不需要构建fuse项目。

您可以在目录 $HADOOP_HOME/c++/lib 中找到二进制文件 (libhdfs.so*)

在 fuse 挂载之前更新“$HADOOP_HOME/contrib/fuse-dfs/src/fuse_dfs_wrapper.sh”如下

HADOOP_HOME/contrib/fuse-dfs/src/fuse_dfs_wrapper.sh

#!/bin/bash

for f in ${HADOOP_HOME}/hadoop*.jar ; do
export CLASSPATH=$CLASSPATH:$f
done

for f in ${HADOOP_HOME}/lib/*.jar ; do
export CLASSPATH=$CLASSPATH:$f
done

export PATH=$HADOOP_HOME/contrib/fuse-dfs:$PATH
export LD_LIBRARY_PATH=$HADOOP_HOME/c++/lib:/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server/
fuse_dfs $@

LD_LIBRARY_PATH 包含这里的目录列表
"$HADOOP_HOME/c++/lib"包含 libhdfs.so 和
“/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server/”包含 libjvm.so\#修改/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/server/为你的java_home

使用以下命令挂载hdfs

fuse_dfs_wrapper.sh dfs://localhost:9000/ /home/510600/mount1

使用以下命令卸载

fusermount  -u /home/510600/mount1 

我只在hadoop伪模式下测试了fuse,没有在集群模式下测试

关于ant - 尝试使用 Fuse 挂载 HDFS。无法编译 libhdfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6699851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com