gpt4 book ai didi

apache - 使用 APACHE Web 服务器、Linux CentOS 访问 HDFS HADOOP

转载 作者:可可西里 更新时间:2023-11-01 16:34:38 26 4
gpt4 key购买 nike

如果我有一个 apache 网络服务器作为目录,我如何访问 HDFS 集群以上传和修改文件,我想做什么配置?

非常感谢

最佳答案

我不明白你在问什么,我假设你正在设计一些网络应用程序,你想从它访问 HDFS,对吧?为了操作 HDFS ,我们使用 Hadoop API。因此,您可以使用 Hadoop API 轻松访问 HDFS。使用 java Apache wickets 开发您的 web 应用程序,因为它可以让您使用 java 和 HTML 来设计网站。然后您可以轻松导入 Hadoop API 类来访问 HDFS。

另一种方式是,如果不想使用Hadoop API访问HDFS,我们一般使用terminal来操作HDFS。例如:

hadoop fs -put <file name> <dir name> 

上传数据到HDFS。使用 java 的“ProcessBuilder”类,您可以通过它从 java 程序内部调用任何 shell 命令。我给 ypu 代码以从 java 程序内部调用 shell 命令:

protected final String executeCommand2(String [] parts)
{
int len = parts.length;
ProcessBuilder builder;
if(len==0) return null;
else if(len==1) builder = new ProcessBuilder(parts[0]);
else if(len==2) builder = new ProcessBuilder(parts[0],parts[1]);
else if(len==3) builder = new ProcessBuilder(parts[0],parts[1],parts[2]);
else if(len==4) builder = new ProcessBuilder(parts[0],parts[1],parts[2],parts[3]);
else if(len==5) builder = new ProcessBuilder(parts[0],parts[1],parts[2],parts[3],parts[4]);
else if(len==6) builder = new ProcessBuilder(parts[0],parts[1],parts[2],parts[3],parts[4],parts[5]);
else if(len==7) builder = new ProcessBuilder(parts[0],parts[1],parts[2],parts[3],parts[4],parts[5],parts[6]);
else if(len==8) builder = new ProcessBuilder(parts[0],parts[1],parts[2],parts[3],parts[4],parts[5],parts[6],parts[7]);
else return null;
builder.redirectErrorStream(true);
Process process = null;
String newstr="" , oldstr = "";
try{
process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((newstr = br.readLine()) != null)
{
oldstr = oldstr+"\n"+newstr;

}
process.waitFor();
}catch(Exception e)
{
newstr = "Exception = " + e;
oldstr = oldstr+"\n"+newstr;

}
int exitCode = process.exitValue();
if(exitCode == 0)
{
newstr="Successfull termination "+exitCode ;
oldstr = oldstr+"\n"+newstr;
}
else
{
newstr="abrupt termination "+ exitCode;
oldstr = oldstr+"\n"+newstr;
}
newstr="##################################";
oldstr = oldstr+"\n"+newstr;
if(oldstr.length() > 2000)
oldstr = "";
return oldstr;
} // function ends here

调用上面的函数如下:

String resultLines = executeCommand2(new String[]{
"sh",
"<absolute path to hadoop script present in $HADOOP_HOME/conf",
"fs",
"-put",
"absolute path to your yourfile.txt",
"input HDFS dir"
});

resultLines 将包含与在 shell 上调用命令的结果相同的文本。您可以调用最多有 7 个参数的任何 shell 命令。当然,您可以修改该函数以接受带有更多参数的 shell 命令。希望对你有帮助。

请注意,如果您使用的是 tomcat apache web 服务器,请使用与您的 linux 帐户用户名相同的用户名登录服务器,以便您有权访问本地驱动器上的脚本。为此,编辑/var/lib/tomcat6/conf firectory 中的 tomcat-users.xml 文件。添加以下行:

 <role rolename="manager"/>
<role rolename="admin"/>
<user username="your linux user name" password="your passwd" roles="admin,manager"/>

就是这样。

另请注意,如果您使用 processbuilder 类机制来构建您的应用程序,那么您的应用程序将成为 linux 特定的并且不会在 windows 机器上运行。

关于apache - 使用 APACHE Web 服务器、Linux CentOS 访问 HDFS HADOOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316197/

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