0
A
回答
2
我不明白你acyually问,我假设你正在设计一些Web应用程序,并希望从中获得HDFS,对不对? 要操纵HDFS,我们使用Hadoop API。因此,您可以使用Hadoop API轻松访问HDFS。使用java Apache wickets来开发你的web应用程序,因为它可以让你使用java和HTML来设计网站。您可以轻松导入Hadoop API类以访问HDFS。
另一种方式是, 如果你不想使用Hadoop API来访问HDFS,我们通常使用终端操纵HDFS。例如:
要在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将包含相同的文本将不得不出现在外壳的在那里调用命令的结果。你可以调用任何具有多达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机器上运行。
相关问题
- 1. Linux Apache Web服务器:无法从Windows访问mchine
- 2. 到Web服务器远程访问在Linux上
- 3. Linux CentOS 6负载均衡器和Web服务器选择
- 4. Apache Linux web服务器上的node.js
- 5. 从Mac OSX访问Centos Apache服务器(在Parallels 10中托管)
- 6. 使用REST服务访问Hadoop数据
- 7. apache web服务器部署问题
- 8. Apache Calcite - 使用SQL访问RESTFul服务
- 9. Genymotion访问本地Web服务器
- 10. 访问Web服务
- 11. 在专用服务器上安装多个Web服务器。 CentOS
- 12. Apache Web服务器的配置问题
- 13. 设置Apache Web服务器 - noob问题
- 14. Apache CXF Web服务问题
- 15. 不使用Hadoop/HDFS使用hive metastore服务
- 16. 从互联网访问Apache服务器
- 17. 阻止访问我的Apache服务器
- 18. 着访问HDFS
- 19. .NET XML Web服务,使用类无法访问Web服务类
- 20. 为Web应用程序设置Linux服务器(Apache)
- 21. mod_rewrite阻止mod_DAV_SVN访问,CPanel CentOS服务器
- 22. Apache Web服务器缓存
- 23. nginx和apache web服务器
- 24. 不能在8080端口访问服务器(禁止)的Centos 6.5的Apache 2.2.15
- 25. 可以在Linux Web服务器上使用PHP访问MS Access数据库吗?
- 26. 使用powershell2访问wcf web服务
- 27. 使用jQuery访问远程Web服务
- 28. 使用jQuery Mobile访问Web服务
- 29. 服务器问题空白页 - Apache,Linux,Joomla
- 30. 我在访问Linux服务器时遇到“SSH访问”问题