Vídeo: Ajuda Linux - Dia 84 - Ferramentas de Big Data - Apache Hadoop 2024
O HDFS é um dos dois principais componentes do framework Hadoop; o outro é o paradigma computacional conhecido como MapReduce. Um sistema de arquivos distribuídos é um sistema de arquivos que gerencia o armazenamento em um conjunto de máquinas em rede.
HDFS armazena dados em blocos , unidades cujo tamanho padrão é 64MB. Os arquivos que você deseja armazenar em HDFS precisam ser divididos em blocos de tamanho de bloco que são armazenados de forma independente em todo o cluster. Você pode usar o comando de linha fsck para listar os blocos que compõem cada arquivo no HDFS, da seguinte forma:
% hadoop fsck / -files -blocks
Como o Hadoop está escrito em Java, todas as interações com HDFS são gerenciadas através da API Java. Tenha em mente, no entanto, que você não precisa ser um guru Java para trabalhar com arquivos no HDFS. Várias interfaces Hadoop, construídas em cima da API Java, agora são de uso comum (e esconder Java), mas a mais simples é a interface de linha de comando; use a linha de comando para interagir com HDFS nos exemplos fornecidos.
Você acessa o shell do sistema de arquivos Hadoop executando uma forma do comando hadoop. Todos os comandos hadoop são invocados pelo script bin / hadoop. (Para recuperar uma descrição de todos os comandos hadoop, execute o script hadoop sem especificar nenhum argumento.) O comando hadoop possui a sintaxe
hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
The - A opção config confdir substitui o diretório de configuração padrão ($ HADOOP_HOME / conf), para que você possa personalizar facilmente a configuração do ambiente Hadoop. As opções genéricas e as opções de comando são um conjunto comum de opções que são suportadas por vários comandos.
Comandos do shell do sistema de arquivos Hadoop (para interfaces de linha de comando), obtenha identificadores de recursos uniformes (URIs) como argumentos. Um URI é uma seqüência de caracteres que é usado para identificar um nome ou um recurso da Web.
A string pode incluir um nome de esquema - um qualificador para a natureza da fonte de dados. Para HDFS, o nome do esquema é hdfs, e para o sistema de arquivos local, o nome do esquema é um arquivo. Se você não especificar um nome de esquema, o padrão é o nome do esquema especificado no arquivo de configuração. Um arquivo ou diretório no HDFS pode ser especificado de forma totalmente qualificada, como neste exemplo:
hdfs: // namenodehost / parent / child
Ou simplesmente pode ser / parent / child se o arquivo de configuração apontar para hdfs: // namenodehost.
Os comandos do shell do sistema de arquivos Hadoop, que são semelhantes aos comandos de arquivos do Linux, possuem a seguinte sintaxe geral:
hadoop hdfs dfs - file_cmd
Os leitores com alguma experiência anterior do Hadoop podem perguntar: "Mas o que sobre o comando hadoop fs?"O comando fs está obsoleto na série de lançamento Hadoop 0. 2, mas ainda funciona no Hadoop 2. Use o hdfs dfs em vez disso.
Como você pode esperar, você usa o comando mkdir para criar um diretório no HDFS, assim como você faria no Linux ou em sistemas operacionais baseados em Unix. Embora o HDFS tenha um diretório de trabalho padrão, / user / $ USER, onde $ USER é seu nome de usuário de login, você precisa criá-lo usando a sintaxe
$ hadoop hdfs dfs -mkdir / user / login_user_name
Por exemplo, para criar um diretório chamado "joanna", execute este comando mkdir:
$ hadoop hdfs dfs -mkdir / user / joanna
Use o comando Hadoop put para copiar um arquivo de seu sistema de arquivos local para HDFS:
$ hadoop hdfs dfs -put file_name / user / login_user_name
Por exemplo, para copiar um arquivo chamado dados. txt para este novo diretório, execute o seguinte comando de colocação:
$ hadoop hdfs dfs -put data. txt / user / joanna
Execute o comando ls para obter uma lista de arquivos HDFS:
$ hadoop hdfs dfs -ls. Encontrados 2 itens drwxr-xr-x - joanna supergroup 0 2013-06-30 12: 25 / usuário / joanna -rw-r - r-- 1 joanna supergroup 118 2013-06-30 12: 15 / usuário / joanna / dados. txt
A listagem do arquivo se divide como descrito nesta lista:
-
A coluna 1 mostra o modo de arquivo ("d" para o diretório e "-" para o arquivo normal, seguido das permissões). Os três tipos de permissão - ler (r), escrever (w) e executar (x) - são os mesmos que você encontra em sistemas baseados em Linux e Unix. A permissão de execução para um arquivo é ignorada porque você não pode executar um arquivo no HDFS. As permissões são agrupadas pelo proprietário, grupo e público (todos os outros).
-
A coluna 2 mostra o fator de replicação para arquivos. (O conceito de replicação não se aplica aos diretórios.) Os blocos que compõem um arquivo no HDFS são replicados para garantir a tolerância a falhas. O fator de replicação, ou o número de réplicas mantidas para um arquivo específico, é configurável. Você pode especificar o fator de replicação quando o arquivo for criado ou posterior, através do seu aplicativo.
-
As colunas 3 e 4 mostram o arquivo proprietário e grupo . Supergroup é o nome do grupo de superusores e um superusuário é o usuário com a mesma identidade que o processo NameNode. Se você começar o NomeNodo, você é o superusuário por enquanto. Este é um grupo especial - os usuários regulares terão seus usuários pertencerem a um grupo sem características especiais - um grupo que é simplesmente definido por um administrador Hadoop.
-
A coluna 5 mostra o tamanho do arquivo, em bytes ou 0 se for um diretório.
-
As colunas 6 e 7 mostram a data e a hora da última modificação, respectivamente.
-
A coluna 8 mostra o nome não qualificado (o que significa que o nome do esquema não está especificado) do arquivo ou diretório.
Use o comando Hadoop get para copiar um arquivo do HDFS para o sistema de arquivos local:
$ hadoop hdfs dfs -get nome_do_ilheiro / usuário / nome_do_usuário_usuário
Use o Hadoop rm comando para excluir um arquivo ou um diretório vazio:
$ hadoop hdfs dfs -rm nome_do_ilheiro / usuário / login_user_name
Use o comando hadoop hdfs dfs -help para obter ajuda detalhada para cada opção.