Eles deveriam ser iguais?
mas, porque os hadoop fs
comandos " " mostram o hdfs files
enquanto os hdfs dfs
comandos " " mostram os arquivos locais?
aqui estão as informações da versão do hadoop:
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 Compilado por jenkins em Seg 22 de abril 10:48:26 PDT 2013
hdfs dfs
show os arquivos hdfs também.Respostas:
A seguir estão os três comandos que parecem iguais, mas têm diferenças mínimas
FS está relacionado a um sistema de arquivos genérico que pode apontar para qualquer sistema de arquivos, como local, HDFS etc. Portanto, isso pode ser usado quando você estiver lidando com sistemas de arquivos diferentes, como FS local, (S) FTP, S3 e outros
dfs é muito específico para HDFS. funcionaria para operação relacionada ao HDFS. Isso se tornou obsoleto e devemos usar hdfs dfs em seu lugar.
o mesmo que o segundo, isto é, funcionaria para todas as operações relacionadas ao HDFS e é o comando recomendado em vez do hadoop dfs
abaixo está a lista categorizada como
hdfs
comandos.Portanto, mesmo se você usar hadoop dfs , ele procurará localizar hdfs e delegará esse comando para hdfs dfs
fonte
hadoop fs
relacionado a qualquer sistema de arquivos como local ou hdfs, como o hadoop escolhe mostrar o conteúdo do diretório raiz HDFS quando eu façohadoop fs -ls /
? Além disso, como posso dizer ao hadoop para mostrar o conteúdo do meu diretório raiz local quando executo ohadoop fs -ls /
comando?file
esquema nos URIs passados como argumento parahadoop fs
comandos (por exemplohdoop fs -ls file:///
). Se nada for dito, o padrão éhdfs
schema, AFAIK (hdoop fs -ls /
==hadoop fs -ls hdfs:///
).hadoop fs -ls file:///
, embora existam maneiras mais tradicionais de listar arquivos locais?https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
O shell File System (FS) inclui vários comandos semelhantes a shell que interagem diretamente com o Hadoop Distributed File System (HDFS), bem como outros sistemas de arquivos que o Hadoop suporta, como Local FS, WebHDFS, S3 FS e outros.
Todos os comandos do shell FS usam URIs de caminho como argumentos. O formato URI é scheme: // authority / path. Para HDFS, o esquema é hdfs, e para FS local, o esquema é arquivo. O esquema e a autoridade são opcionais. Se não for especificado, o esquema padrão especificado na configuração será usado. Um arquivo HDFS ou diretório como / pai / filho pode ser especificado como hdfs: // namenodehost / pai / filho ou simplesmente como / pai / filho (considerando que sua configuração está definida para apontar para hdfs: // namenodehost).
A maioria dos comandos no shell FS se comportam como comandos Unix correspondentes. As diferenças são descritas com cada um dos comandos. As informações de erro são enviadas para stderr e a saída é enviada para stdout.
Se HDFS estiver sendo usado,
é um sinônimo.
fonte
fs refere-se a qualquer sistema de arquivos, pode ser local ou HDFS, mas dfs refere-se apenas ao sistema de arquivos HDFS. Portanto, se você precisar acessar / transferir dados entre sistemas de arquivos diferentes, fs é o caminho a percorrer.
fonte
Pelo que posso dizer, não há diferença entre
hdfs dfs
ehadoop fs
. Eles são simplesmente convenções de nomenclatura diferentes com base na versão do Hadoop que você está usando. Por exemplo, as notas em 1.2.1 usamhdfs dfs
enquanto 0.19 usahadoop fs
. Observe que os comandos separados são descritos literalmente. Eles são usados de forma idêntica.Observe também que ambos os comandos podem referir-se a sistemas de arquivos diferentes, dependendo do que você especificar (hdfs, arquivo, s3, etc). Se nenhum sistema de arquivos estiver listado, eles retornam ao padrão que é especificado em sua configuração.
Você está usando o Hadoop 2.0.0 e parece (com base na documentação 2.0.5 ) que as versões Alpha usam
hadoop fs
e estão definidas para usar o HDFS como o esquema padrão em sua configuração. Ohdfs dfs
comando pode ter sido deixado de antes e, como não foi especificado na configuração, pode estar apenas assumindo o padrão do sistema de arquivos local.Então, eu apenas continuaria
hadoop fs
e não me preocuparia muito, pois na documentação, eles são idênticos.fonte
FS está relacionado a um sistema de arquivo genérico que pode apontar para qualquer sistema de arquivo, como local, HDFS etc. Mas dfs é muito específico para HDFS. Portanto, quando usamos FS, ele pode executar operações com sistema de arquivos de / para local ou hadoop para destino. Mas a especificação da operação DFS está relacionada ao HDFS.
Abaixo estão os trechos da documentação do hadoop que descreve esses dois como shells diferentes.
Shell FS O shell FileSystem (FS) é invocado por bin / hadoop fs. Todos os comandos do shell FS usam URIs de caminho como argumentos. O formato do URI é scheme: // autority / path. Para HDFS, o esquema é hdfs, e para o sistema de arquivos local, o esquema é file. O esquema e a autoridade são opcionais. Se não for especificado, o esquema padrão especificado na configuração será usado. Um arquivo HDFS ou diretório como / pai / filho pode ser especificado como hdfs: // namenodehost / pai / filho ou simplesmente como / pai / filho (considerando que sua configuração está definida para apontar para hdfs: // namenodehost). A maioria dos comandos no shell FS se comportam como comandos Unix correspondentes.
DFShell O shell HDFS é invocado por bin / hadoop dfs. Todos os comandos do shell HDFS usam URIs de caminho como argumentos. O formato do URI é scheme: // autority / path. Para HDFS, o esquema é hdfs, e para o sistema de arquivos local, o esquema é file. O esquema e a autoridade são opcionais. Se não for especificado, o esquema padrão especificado na configuração será usado. Um arquivo HDFS ou diretório como / pai / filho pode ser especificado como hdfs: // namenode: namenodeport / pai / filho ou simplesmente como / pai / filho (considerando que sua configuração está definida para apontar para namenode: namenodeport). A maioria dos comandos no shell HDFS se comportam como comandos Unix correspondentes.
Portanto, pode-se concluir que tudo depende da configuração do esquema. Ao usar esses dois comandos com URI absoluto, ou seja, esquema: // a / b, o comportamento deve ser idêntico. Apenas é o valor do esquema configurado padrão para arquivo e hdfs para fs e dfs, respectivamente, que é a causa da diferença de comportamento.
fonte
fs
= sistema de arquivosdfs
= sistema de arquivos distribuídofs
= outros sistemas de arquivos + sistemas de arquivos distribuídosFS está relacionado a um sistema de arquivo genérico que pode apontar para qualquer sistema de arquivo, como local, HDFS etc. Mas dfs é muito específico para HDFS. Portanto, quando usamos FS, ele pode executar operações com sistema de arquivos de / para local ou hadoop para destino. Mas a especificação da operação DFS está relacionada ao HDFS.
Tudo depende da configuração do esquema. Ao usar estes dois comandos com URI absoluto, ou seja,
scheme://a/b
o comportamento deve ser idêntico. Apenas é o valor do esquema configurado padrão parafile://
ehdfs://
parafs
e,dfs
respectivamente, que é a causa da diferença de comportamento.fonte