Hadoop Web UIのようにHDFSからディレクトリとファイルを作成および削除できるWebアプリケーションを構築しています。 HDFSにディレクトリを作成することさえできません。javaサーブレットを使用してHDFS内にディレクトリを作成します
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.net.URI;
// Extend HttpServlet class
public class Saurab extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String hdfsUri = "hdfs://saurab:9000/";
String dirName = "ekbana113";
FileSystem hdfs = null;
Configuration con = new Configuration();
try {
con.addResource(new Path("/home/saurab/hadoopec/hadoop/etc/hadoop/core-site.xml"));
con.addResource(new Path("/home/saurab/hadoopec/hadoop/etc/hadoop/hdfs-site.xml"));
hdfs = FileSystem.get(URI.create(hdfsUri), con); //hdfs is null, I don't know why ?
} catch (IOException e) {
e.printStackTrace();
}
try {
hdfs.mkdirs(new Path(hdfsUri + "/" + dirName)); // Null pointer exception
} catch (IOException e) {
e.printStackTrace();
}
}
}
私は自分のWebアプリケーションを起動するためにTomcatサーバーを使用していますthis question を追いました。 Hadoopが稼働しています。私は戦争ファイルを作成し、そのwarfileを/opt/tomcat/webapps/
に入れました。その後、私はしたsaurab:8080/servlet-name/mapper-url
これは正しい方法ですか、または私はひどく間違っていますか?
あなたの問題は何ですか? Webアプリケーションページにアクセスすることはできませんか?あなたは例外を取得していますか?問題が何であるかを正確に理解することなく誰でも助けることができるのではないかと疑う。 – Serhiy
まあ、hdfs変数はヌルなので、FileSystemオブジェクトが作られていないことを意味する。私はなぜこの変数nullが混乱していたのですか?このプログラムをjavaアプリケーションとして実行すると 'FileSystem.get()'がファイルシステムオブジェクトを返し、hdfs機能を使用することができますが、サーブレットやWebアプリケーションから行うとnullになります。 – Saurab
構成が正しく渡されていないため、nullの可能性があります。ファイルを提供する代わりに、手動で設定を試したことがありますか?以下のようになります: 'con.set(" fs.defaultFS "、" hdfs://example.org/ ");'など? – Serhiy