У меня проблема с получением файла с хост-компьютера (windows) из клана hadoop, работающего на виртуальном боксе Ubuntu.Доступ к файлу на Hadoop Virtualbox Cluster
Я вижу кластер из хост-машины (http://192.168.56.105:8088/cluster) и Яваскрипт структуру папок на HDFS, но когда я пытаюсь прочитать файл я получаю эту ошибку:
org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1570018429-127.0.0.1-1484660807169:blk_1073742497_1673 file=/Item/part-r-00000
Когда я запускать этот скрипт на кластере vmbox ubuntu я получаю файл и исправляю.
Возможно, проблема заключается в namenode попытаться найти данные в другом месте (_1673?), Когда ip или пользователь отличается - но я не могу найти правильную конфигурацию этой проблемы.
Благодарим за консультацию.
Linux пользователь: wukkie
Это сценарий:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.PrivilegedExceptionAction;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.security.UserGroupInformation;
public class InsertReommendationToDB {
private static Configuration getConfiguration(){
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.56.105:54310/");
conf.set("hadoop.job.ugi", "wukkie");
return conf;
}
public static void main(String args[]){
try {
UserGroupInformation ugi = UserGroupInformation.createProxyUser("wukkie", UserGroupInformation.getLoginUser());
ugi.doAs(new PrivilegedExceptionAction<Void>() {
Path filepath = new Path("/Item/part-r-00000");
public Void run() throws Exception {
FileSystem fs = filepath.getFileSystem(getConfiguration());
FSDataInputStream inputStream = fs.open(filepath);
String line;
line = inputStream.readLine();
while(line != null){
System.out.println(line);
line = inputStream.readLine();
}
return null;
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}