Я запускаю кластер Hadoop на облачной платформе Google, используя облачное хранилище Google в качестве серверной части для постоянных данных. Я могу подключиться к главному узлу по ssh с удаленного компьютера и запустить команды Hadoop fs. В любом случае, когда я пытаюсь выполнить следующий код, я получаю ошибку тайм-аута.
Код
FileSystem hdfs =FileSystem.get(new URI("hdfs://mymasternodeip:8020"),new Configuration());
Path homeDir=hdfs.getHomeDirectory();
//Print the home directory
System.out.println("Home folder: " +homeDir);
// Create a directory
Path workingDir=hdfs.getWorkingDirectory();
Path newFolderPath= new Path("/DemoFolder");
newFolderPath=Path.mergePaths(workingDir, newFolderPath);
if(hdfs.exists(newFolderPath))
{
hdfs.delete(newFolderPath, true); //Delete existing Directory
}
//Create new Directory
hdfs.mkdirs(newFolderPath);
При выполнении команды hdfs.exists() я получаю сообщение об ошибке тайм-аута.
Ошибка
org.apache.hadoop.net.ConnectTimeoutException: вызов с gl051-win7/192.xxx.1.xxx на 111.222.333.444.bc.googleusercontent.com:8020 не удался из-за исключения времени ожидания сокета: org.apache.hadoop. net.ConnectTimeoutException: тайм-аут 20000 миллисекунд при ожидании готовности канала к подключению. ch : java.nio.channels.SocketChannel[ожидание подключения remote=111.222.333.444.bc.googleusercontent.com/111.222.333.444:8020]
Известно ли вам о каких-либо ограничениях на использование API-интерфейсов Java Hadoop против Hadoop на Google Cloud Platform?
Спасибо!