Czy mają być równi?
ale dlaczego polecenia „ hadoop fs
” pokazują, hdfs files
podczas gdy polecenia „ hdfs dfs
” pokazują pliki lokalne?
tutaj jest informacja o wersji hadoopa:
Hadoop 2.0.0-mr1-cdh4.2.1 Subversion git: //ubuntu-slave07.jenkins.cloudera.com/var/lib/jenkins/workspace/CDH4.2.1-Packaging-MR1/build/cdh4/mr1/2.0.0 -mr1-cdh4.2.1 / source -r Skompilowane przez jenkins w poniedziałek, 22 kwietnia, 10:48:26 PDT 2013
hdfs dfs
pokazać pliki HDFS też.Odpowiedzi:
Poniżej znajdują się trzy polecenia, które wydają się takie same, ale mają niewielkie różnice
FS odnosi się do ogólnego systemu plików, który może wskazywać na dowolne systemy plików, takie jak lokalny, HDFS itp. Więc może być używany, gdy masz do czynienia z różnymi systemami plików, takimi jak Local FS, (S) FTP, S3 i inne
dfs jest bardzo specyficzny dla HDFS. działałby w przypadku operacji związanych z HDFS. To jest przestarzałe i powinniśmy zamiast tego używać hdfs dfs .
to samo co 2nd ie działałoby dla wszystkich operacji związanych z HDFS i jest zalecaną komendą zamiast hadoop dfs
poniżej znajduje się lista podzielona na
hdfs
polecenia.Więc nawet jeśli używasz hadoop dfs , będzie wyglądać na zlokalizowanie hdfs i delegowanie tego polecenia do hdfs dfs
źródło
hadoop fs
odnosi się do dowolnego systemu plików, lokalnego lub hdfs, jak hadoop zdecydował się pokazać zawartość katalogu głównego HDFS, gdy to zrobięhadoop fs -ls /
? Ponadto, jak mogę powiedzieć hadoopowi, aby wyświetlał zawartość mojego lokalnego katalogu głównego po uruchomieniuhadoop fs -ls /
polecenia?file
schematu w identyfikatorach URI przekazanych jako argument dohadoop fs
poleceń (nphdoop fs -ls file:///
.). Jeśli nic nie jest powiedziane, domyślnie jest tohdfs
schemat AFAIK (hdoop fs -ls /
==hadoop fs -ls hdfs:///
).hadoop fs -ls file:///
, skoro istnieją bardziej tradycyjne sposoby wyświetlania plików lokalnych?https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
Powłoka systemu plików (FS) zawiera różne polecenia podobne do powłoki, które bezpośrednio współdziałają z rozproszonym systemem plików Hadoop (HDFS), a także innymi systemami plików obsługiwanymi przez Hadoop, takimi jak Local FS, WebHDFS, S3 FS i inne.
Wszystkie polecenia powłoki FS przyjmują jako argumenty identyfikatory URI ścieżek. Format URI to schemat: // urząd / ścieżka. Dla HDFS schematem jest hdfs, a dla lokalnego FS schematem jest plik. Schemat i uprawnienia są opcjonalne. Jeśli nie zostanie określony, używany jest domyślny schemat określony w konfiguracji. Plik lub katalog HDFS, taki jak / parent / child, można określić jako hdfs: // namenodehost / parent / child lub po prostu jako / parent / child (zakładając, że twoja konfiguracja wskazuje na hdfs: // namenodehost).
Większość poleceń w powłoce FS zachowuje się jak odpowiadające im polecenia Uniksa. Różnice są opisane przy każdym z poleceń. Informacje o błędzie są wysyłane na stderr, a dane wyjściowe na stdout.
Jeśli używany jest HDFS,
jest synonimem.
źródło
fs odnosi się do dowolnego systemu plików, może to być lokalny lub HDFS, ale dfs odnosi się tylko do systemu plików HDFS. Więc jeśli potrzebujesz uzyskać dostęp / przesłać dane między różnymi systemami plików, fs jest drogą do zrobienia.
źródło
Z tego, co wiem, nie ma różnicy między
hdfs dfs
ihadoop fs
. Są to po prostu różne konwencje nazewnictwa oparte na używanej wersji Hadoop. Na przykład notatki w 1.2.1 używają,hdfs dfs
podczas gdy 0.19 używahadoop fs
. Zwróć uwagę, że poszczególne polecenia są opisane dosłownie. Są używane identycznie.Zauważ również, że oba polecenia mogą odnosić się do różnych systemów plików w zależności od tego, co określisz (hdfs, file, s3 itp.). Jeśli na liście nie ma żadnego systemu plików, przywracane są ustawienia domyślne określone w konfiguracji.
Używasz Hadoop 2.0.0 i wygląda na to ( na podstawie dokumentacji 2.0.5 ), że wersje Alpha używają
hadoop fs
i są ustawione na używanie HDFS jako domyślnego schematu w twojej konfiguracji.hdfs dfs
Komenda może być pozostawiony z przed, a ponieważ nie określono w konfiguracji, może być po prostu nie stawili się do lokalnego systemu plików.Więc po prostu trzymałbym się
hadoop fs
i nie martwiłbym się zbytnio, ponieważ w dokumentacji są identyczne.źródło
FS odnosi się do ogólnego systemu plików, który może wskazywać na dowolne systemy plików, takie jak lokalny, HDFS itp. Jednak dfs jest bardzo specyficzny dla HDFS. Więc kiedy używamy FS , może on wykonywać operacje z / do lokalnego lub rozproszonego systemu plików Hadoop do miejsca docelowego. Ale określenie operacji DFS odnosi się do HDFS.
Poniżej znajdują się fragmenty dokumentacji hadoopa, która opisuje te dwie powłoki jako różne powłoki.
Powłoka FS Powłoka FileSystem (FS) jest wywoływana przez bin / hadoop fs. Wszystkie polecenia powłoki FS przyjmują jako argumenty identyfikatory URI ścieżek. Format URI to schemat: // autority / ścieżka. Dla HDFS schematem jest hdfs, a dla lokalnego systemu plików schematem file. Schemat i uprawnienia są opcjonalne. Jeśli nie zostanie określony, używany jest domyślny schemat określony w konfiguracji. Plik lub katalog HDFS, taki jak / parent / child, można określić jako hdfs: // namenodehost / parent / child lub po prostu jako / parent / child (zakładając, że twoja konfiguracja wskazuje na hdfs: // namenodehost). Większość poleceń w powłoce FS zachowuje się jak odpowiadające im polecenia Uniksa.
DFShell Powłoka HDFS jest wywoływana przez bin / hadoop dfs. Wszystkie polecenia powłoki HDFS przyjmują jako argumenty identyfikatory URI ścieżek. Format URI to schemat: // autority / ścieżka. Dla HDFS schematem jest hdfs, a dla lokalnego systemu plików schematem file. Schemat i uprawnienia są opcjonalne. Jeśli nie zostanie określony, używany jest domyślny schemat określony w konfiguracji. Plik lub katalog HDFS, taki jak / parent / child, można określić jako hdfs: // namenode: namenodeport / parent / child lub po prostu jako / parent / child (zakładając, że twoja konfiguracja wskazuje na namenode: namenodeport). Większość poleceń w powłoce HDFS zachowuje się jak odpowiadające im polecenia systemu Unix.
Z powyższego można więc wywnioskować, że wszystko zależy od konfiguracji schematu. Używając tych dwóch poleceń z absolutnym URI, tj. Schemat: // a / b zachowanie powinno być identyczne. Tylko domyślna skonfigurowana wartość schematu dla pliku i hdfs odpowiednio dla plików fs i dfs jest przyczyną różnicy w zachowaniu.
źródło
fs
= system plikówdfs
= rozproszony system plikówfs
= inne systemy plików + rozproszone systemy plikówFS odnosi się do ogólnego systemu plików, który może wskazywać na dowolne systemy plików, takie jak lokalny, HDFS itp. Jednak dfs jest bardzo specyficzny dla HDFS. Więc kiedy używamy FS, może on wykonywać operacje z / do lokalnego lub rozproszonego systemu plików Hadoop do miejsca docelowego. Ale określenie operacji DFS odnosi się do HDFS.
Wszystko zależy od konfiguracji schematu. W przypadku korzystania z tych dwóch poleceń z bezwzględnym URI, tj
scheme://a/b
. Zachowanie powinno być identyczne. Tylko domyślna skonfigurowana wartość schematu odpowiednio dlafile://
ihdfs://
dlafs
idfs
jest przyczyną różnicy w zachowaniu.źródło