Moje lokalne urządzenie nie ma instalacji hdfs. Chcę pobrać pliki ze zdalnego klastra hdfs. Jaki jest najlepszy sposób, aby to osiągnąć? Czy muszę get
pliki z hdfs do jednego z maszyn klastra fs, a następnie użyć ssh, aby je odzyskać? Chcę móc to zrobić programowo poprzez wypowiedzenie skryptu bash.Pobieranie plików ze zdalnego HDFS
Odpowiedz
Oto kroki:
- Upewnij się, że łączność pomiędzy hostem a gromady docelowej
- Konfiguracja hosta jako klient, trzeba zainstalować kompatybilne pliki binarne Hadoop. Również twój host musi być uruchomiony przy użyciu tego samego systemu operacyjnego.
- Upewnij się, że te same pliki konfiguracyjne (core-site.xml, HDFS-site.xml)
- można uruchomić komendę
hadoop fs -get
aby pobrać pliki bezpośrednio
Ponadto istnieją alternatywy
- Jeśli skonfigurowano Webhdfs/httpFS, możesz faktycznie pobierać pliki za pomocą curl lub nawet przeglądarki. Możesz napisać scrashpy bash jeśli skonfigurujesz Webhdfs.
Jeśli Twój komputer nie może mieć zainstalowanych plików binarnych Hadoop jako klienta, możesz użyć poniższych instrukcji.
- umożliwić hasło mniej logowanie z hosta do jednego węzła w klastrze
- polecenie uruchomienia
ssh <user>@<host> "hadoop fs -get <hdfs_path> <os_path>"
- następnie polecenie scp do kopiowania plików
- można mieć powyżej 2 komendy w jednym skrypcie
Następne pytanie. W jaki sposób [httpFS] (https://hadoop.apache.org/docs/r2.6.0/hadoop-hdfs-httpfs/index.html) porównuje się do rozwiązania "klienta hadoop fs -get" pod względem wydajności? –
httpFS i webhdfs są takie same. Możesz pobrać za jego pomocą, nie ma potrzeby stosowania plików binarnych. –
co jeśli chodzi o wydajność? Czy szybsze jest używanie plików binarnych zamiast korzystania z httpFS? może powinienem zacząć kolejny wątek –
Wypróbuj DistCp: https://hadoop.apache.org/docs/r1.2.1/distcp.html –