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. 使用HTTP訪問Web服務器Android
- 7. java.lang.NoClassDefFoundError:org/apache/hadoop/hdfs/BenchmarkThroughput
- 8. 無法訪問使用IP地址的centos上的Apache服務器
- 9. 使用REST服務訪問Hadoop數據
- 10. 在Linux CentOs上運行node.js服務器
- 11. 從python訪問服務器上的Hadoop
- 12. apache web服務器部署問題
- 13. 使用Java監控Apache Web服務器
- 14. Apache Calcite - 使用SQL訪問RESTFul服務
- 15. Genymotion訪問本地Web服務器
- 16. 訪問Web服務
- 17. 設置Apache Web服務器 - noob問題
- 18. Apache Web服務器的配置問題
- 19. apache web服務器託管問題
- 20. Hadoop HDFS問題
- 21. Apache服務器上的VirtualHost - CentOS
- 22. 在Centos Linux服務器上設置Subversion
- 23. 在專用服務器上安裝多個Web服務器。 CentOS
- 24. Apache CXF Web服務問題
- 25. 配置Apache Web服務器以使用代理服務器
- 26. 遠程訪問Apache Web服務器mac os X
- 27. Microsoft Azure Apache Web服務器不可訪問
- 28. .NET XML Web服務,使用類無法訪問Web服務類
- 29. 從互聯網訪問Apache服務器
- 30. 阻止訪問我的Apache服務器