Artigo Diretório
Combinação de conhecimento básico do Hadoop
Um, estrutura básica do hadoop
1. O que é big data? Quais são as características?
Dados massivos, dados que não podem ser coletados e gerenciados com ferramentas tradicionais e exigem alto poder de computação.
Recursos:
Volume 4V : Grande tráfego
Variedade:
Velocidade diversificada : Alta velocidade
Valor: Baixo valor A
teoria vem do artigo bigtable do Google
2. Estrutura de código aberto de big data do Hadoop
O projeto de código aberto de nível superior do Apache, a fim de resolver o problema de armazenamento distribuído de big data e computação distribuída de big data, é produzida uma estrutura de código aberto.
A diferença entre big data distribuído e distribuído
tradicional é tradicionalmente distribuída. A comparação do distribuído tradicional depende do desempenho de cada nó. A velocidade de execução, que nó é lento, avisa o desempenho de qual nó.
Big data é distribuído para usar espaço para melhorar o desempenho.
Componente principal:
Estrutura de armazenamento distribuído: hdfs
Estrutura de computação distribuída:
estrutura de gerenciamento distribuído MapReduce : yarn (hadoop 2. x start)
Dois, hdfs
1. O que é hdfs
É essencialmente um sistema de arquivos, mas é um sistema de arquivos distribuído. Os arquivos grandes armazenados são divididos em vários blocos de blocos e armazenados em nós diferentes. Ao mesmo tempo, há vários dados de backup em outros nós. A segurança é alta e é adequado para processar arquivos grandes. Arquivo (GB ~ PB)
2. O processo de gravação de arquivos:
O cliente envia uma solicitação de gravação para o namenode, e o namenode lê as informações de fsimage e edita para verificar se é gravável;
se for gravável, ele precisa calcular as informações de bloco do arquivo gravado, gerar informações de metadados, gravá-las nas edições e enviá-lo de volta de forma síncrona Lado do cliente; O
lado do cliente primeiro grava no datanode mais próximo nos metadados, e este datanode espalha solicitações para outros datanodes;
depois que todas as gravações são concluídas, todos os datanodes relatam as informações completas para o namenode ;
namenode confirma as edições de gravação (Salvar), caso contrário, as edições serão excluídas; as
edições e fsimage serão copiadas e mescladas pelo secondaryNamenode (processado em tempo livre);
3. O processo de leitura de arquivos:
O cliente envia uma solicitação ao namenode, o namenode lê as informações de fsimage e edita e retorna as informações de metadados ao cliente de acordo com o endereço enviado pelo cliente. O cliente lê os dados do datanode mais próximo de acordo com as informações de metadados , e o datanode espalha a solicitação.
4. Comandos comumente usados:
(1) 客户端命令:hdfs dfs
hdfs dfs -mkdir -p 递归创建目录
hdfs dfs -rmr 删除目录
hdfs dfs -lsr 递归查看目录
hdfs dfs -put 从本地目录hdfs的目录
hdfs dfs -copyToLocal hdfs的目录下载到本地目录
hdfs dfs -appendToFile 追加文件
(2) 管理命令:hdfsadmin
(3) oev和oiv: 分别查看edits 和fsimage
5. As funções de trabalho de Namenode, datanode e secondaryNamenode
Namenode: gerencie metadados, interaja com clientes, gerencie datanode e secondaryNamenode
Datanode: responsável por ler e gravar dados, enviando pulsações para namenode regularmente.
SecondaryNamenode: namenode secundário mescla fsimage e editslog e é responsável por gerenciar o backup de dados
6 、 API Java
Configuration conf; 对象获取对应的配置信息
FileSystem fs; 由conf对象创建对象的文件系统
由文件系统执行各种增删改查等操作
Três, Fios
1. O papel do fio
Apresentado a partir do hadoop2.0, o objetivo principal é compartilhar a pressão de gerenciamento do MapReduce, e outros códigos de estrutura de computação MapReduce podem ser usados.
2 、 ResourceManager 和 NodeManager
Todas as solicitações de trabalho são gerenciadas pelo ResourceManager, que também gerencia o NodeManager.
NodeManager corresponde principalmente às tarefas do ResourceManager, gerencia o ciclo de vida do contêiner, envia pulsações para resourceManager e gerencia o consumo de recursos do datanode
3. O mecanismo de operação do Yarn
(1) Quando o cliente envia uma tarefa de computação, o ResourceManager aceita a solicitação, cria um Appmanager e o APPmanager realimenta os diretórios jobid e hdfs para o cliente, e o cliente carrega pacotes jar específicos e dados temporários e informações de dados de destino;
(2) ResourceManager cria ResourceSchedular após obter informações de metadados do namenode e gera um arquivo de cronograma bruto (planejamento do projeto) com base nas informações de metadados para obter os recursos que requerem vários datanodes e quantos blocos de dados cada datanode envolverá;
(3) O nodeManager com baixo consumo de recursos cria o AppMaster para replicar especificamente a operação do shedule.
O AppMaster primeiro vai para o diretório hdfs para obter pacotes jar específicos e arquivos temporários e outras informações, calcula os recursos específicos exigidos por cada datanode e relata para ResourceSchedular, atualiza o arquivo shedule e se aplica a permissões de recursos do AppManager ao mesmo tempo;
(4) Após o AppMaster obter a permissão, ele envia a tarefa de criação de Container para o NodeManager correspondente de acordo com o arquivo shedule. Cada Container cria um taskTraker correspondentemente, baixa pacotes jar e arquivos temporários de hdfs, cria tarefas específicas como MapTask e ReduceTask e começa a executar o pacote jar. Durante o processo de execução, o Container realimenta o progresso de cada estágio para o AppMaster em tempo real, e realimenta sua pulsação para o NodeManager. Depois que a execução é concluída, os resultados são retornados gradualmente ao lado do cliente. NameNode grava as edições correspondentes;
四 、 MapReduce
1. Qual é a versão do MapReduce?
No hadoop 1.0, o cálculo de big data e o gerenciamento de tarefas de trabalho foram replicados, e o gerenciamento de tarefas de trabalho foi processado por jobTraker e taskTraker; no
hadoop 2.0, a função de computação distribuída de big data foi focada
2. O mecanismo de MapReduce
distribui as funções a serem executadas para cada nó na forma de um pacote jar, e cada nó executa a função do pacote jar.
A computação distribuída tradicional consiste em concentrar os dados do nó no nó de computação, e o nó de computação irá executá-lo uniformemente.
3. A
fase de mapa do fluxo de trabalho MapReduce : aceitar tarefas, fragmentos de texto correspondentes, dividir em linhas, formar pares de valores-chave <deslocamento, conteúdo de uma linha>, entrar na fase de Mapa, carregar arquivos de cache na configuração e ler no mapa Pegue uma linha de conteúdo para processamento de negócios, escreva-a por meio de pares de valores-chave e entre no buffer de anel até que exceda 80% e comece a estourar.
Estágio de embaralhamento: do início da gravação de estouro para o estágio de embaralhamento, partição (ou seja, o resultado de tomar o restante do número de nós após o hash da saída da chave pelo mapa) e classificação dos resultados da partição (classificação rápida ) para garantir que as partições de arquivos pequenos sejam ordenadas e mescladas. Para arquivos grandes, certifique-se de que a partição esteja ordenada. De acordo com os resultados da partição, o conteúdo da partição é distribuído aos nós correspondentes e um nó é mesclado em um arquivo grande para garantir a ordem na partição. De acordo com o agrupamento de chaves, o grupo correspondente a cada chave entra na fase de redução. A
fase de redução: Após a conclusão do processo de negócios, cada nó tem um arquivo e cada redutor grava os dados por sua vez
4 、 API Java
TestMapper extends Mapper<LongWritable,Text,...,...>{
Map(LongWritable key,Text value,Context context){
对value做处理
context.write(...,...);
}
}
TestReducer extends Reducer<...,...,...,...>{
Map(... key,Iterable<...> value,Context context){
...
}
}
TestDriver{
Main{
Configuration conf; //模拟一个hadoop配置实例
Job job=Job.getInstance(conf); //模拟向这个hadoop发送job请求
对driver、mapper和reducer等的配置
对输出格式的映射
对输入输出文件地址的映射
运行
}
}