Foco no sistema de big data

Capítulo 1 Visão geral do sistema de computação de big data

1 Visão geral da estrutura de computação de big data

Computing framework : Uma abstração na qual as funções gerais correspondentes são fornecidas para que os usuários escrevam código para obter funções específicas, formando assim um software orientado a aplicativos.

Estrutura de computação de big data : estrutura de computação para big data.

HadoopGenericName

O processo de execução do Hadoop

imagem-20221115205701832

O processo operacional detalhado do Hadoop

imagem-20221115221408609

① Programa MapReduce
=> criar uma nova instância JobClient
=> solicitar um novo JobId de JobTasker e colocar recursos no HDFS, calcular o número de fragmentos e o número de tarefas de mapa
=> enviar o trabalho para JobTasker e obter o identificador de objeto de status do trabalho
= >As solicitações de envio de trabalho são colocadas na fila para agendamento
=> retire as informações de fragmentação do trabalho do HDFS e crie um número correspondente de agendamento TaskInProgress e tarefas de mapeamento de monitoramento

② Extrair recursos relacionados (pacote Jar, dados) do HDFS
=> Criar TaskRunner para executar a tarefa Map
=> Habilitar MapTask em uma JVM separada para executar a função map
=> Os dados intermediários do resultado são armazenados no cache periodicamente
=> O cache é gravado no disco
= > Cronograma de relatórios periódicos

③ Atribuir tarefas de redução
=> Criar TaskRunner para executar tarefas de redução
=> Iniciar ReduceTask em uma JVM separada para executar funções de redução
=> Baixar dados de resultados intermediários de nós de mapa
=> Arquivos temporários de resultados de saída
=> Reportar regularmente o progresso

④ Pesquisa JobClient para saber que a tarefa foi concluída
=> notificar o usuário

A diferença entre Trabalho e Tarefa

Trabalho : Um trabalho pode ser dividido em várias tarefas Mapear e Reduzir durante a execução

Tarefa : a unidade básica de transação para computação paralela

Agendador MapReduce

(FIFO) Agendador primeiro a entrar, primeiro a sair (padrão): A ordem dos trabalhos a serem executados: primeiro por prioridade, depois pelo tempo de chegada do trabalho, não suporta preempção

(Fair) Agendador justo : os recursos são compartilhados de forma justa entre os usuários, os recursos são compartilhados entre várias tarefas carregadas pelos usuários e a preempção de recursos é suportada

(Capacidade) agendador de capacidade : Calcula a proporção entre o número de tarefas em execução em cada fila e os recursos de computação que devem ser alocados, calcula uma fila com a menor proporção e, em seguida, seleciona um trabalho da fila para executar de acordo com FIFO

2 classificações após o mapa

Classificação rápida dentro do arquivo (Sort): Após a função map processar os dados de entrada, ela armazenará os dados intermediários em um ou vários arquivos da máquina local e fará uma classificação rápida nos registros dentro desses arquivos

Mesclar e classificar vários arquivos (Mesclar): após a execução da tarefa Mapear, esses arquivos classificados serão mesclados e classificados, e os resultados classificados serão enviados para um arquivo grande

Processo de processamento de tarefas MapReduce

Big data a ser processado => partição => enviar para o nó principal => enviar para o nó do mapa, fazer algum trabalho de classificação de dados (combinar) => enviar para o nó de redução

Tratamento de nó de falha

Os pontos de verificação são definidos periodicamente no nó mestre para verificar a execução de todo o trabalho de computação

Falha no nó mestre: quando uma tarefa falha, ela pode ser reexecutada a partir do ponto de verificação válido mais recente, evitando a perda de tempo para calcular do zero.

Falha do nó de trabalho: Se o nó principal detectar que o nó de trabalho não obtém uma resposta, o nó de trabalho é considerado inválido. O nó mestre reagendará as tarefas com falha para outros nós de trabalho para execução.

Desvantagens do MapReduce 1.0

  • JobTracker é o ponto de processamento centralizado do Map-reduce, e há um único ponto de falha.
  • O JobTracker concluiu muitas tarefas, resultando em consumo excessivo de recursos. Quando houver muitos trabalhos de redução de mapa, isso causará uma grande sobrecarga de memória.
  • É muito simples usar o número de tarefas map/reduce como recursos e não leva em conta a ocupação da CPU/memória.

FIO

imagem-20221115231012981

2 Estrutura de computação em lote de big data

Fagulha

conceito RDD

  • Conjuntos de dados distribuídos resilientes
  • Cada RDD pode ser dividido em várias partições, e diferentes partições de um RDD podem ser computadas em paralelo em diferentes nós no cluster
  • RDD é uma coleção de partições de registro somente leitura e não pode ser modificado diretamente. Os RDDs só podem ser criados a partir de conjuntos de dados em armazenamento físico estável ou executando operações de transformação determinística em outros RDDs
  • As operações de conversão entre diferentes RDDs formam dependências, que podem realizar o processamento do pipeline de dados e evitar o armazenamento intermediário de dados

Operações em RDDs

  • Dividido em "ação" (ação) e "transformação" (transformação) dois tipos

  • As interfaces de conversão fornecidas pelo RDD são muito simples e são todas operações de conversão de dados granulares , como map, filter, groupBy, join, etc.

  • Transformações Ações Persistência
    • Criar novos conjuntos de dados a partir de conjuntos de dados existentes
    • Cálculos preguiçosos. Eles só são executados quando a ação é executada
    • Retornar dados para um driver ou dados de saída para um sistema de armazenamento após o cálculo • Cache conjuntos de dados na memória para operações subsequentes
    • Opcionalmente armazenado em disco, na RAM ou em um híbrido
    Map(func)
    Filter(func)
    Distinct()
    Count()
    Reduzir(funcionar)
    Coletar
    Take()
    Persistir()
    Cache()

processo de execução RDD

  • Criar: ler em fontes de dados externas
  • O RDD passa por uma série de operações de "transformação", cada vez que um RDD diferente é gerado para a próxima operação de transformação
  • O último RDD é transformado pela operação "Action" e enviado para uma fonte de dados externa
  • Vantagens: chamada preguiçosa, pipeline, evita espera síncrona, não há necessidade de salvar resultados intermediários, cada operação se torna simples

A razão para a alta eficiência do RDD

  • Tolerância a falhas: replicação ou registro de dados, características RDD
  • Os resultados intermediários são mantidos na memória e os dados são transferidos entre várias operações RDD na memória, evitando sobrecarga desnecessária de leitura e gravação no disco
  • Os dados armazenados podem ser objetos Java, evitando serialização e desserialização desnecessárias de objetos

conceito básico

  • DAG: Gráfico Acíclico Direcionado (Directed Acyclic Graph)
  • Executor: é um processo executado no nó do trabalhador (WorkerNode), responsável por executar a Tarefa
  • imagem-20221121202016155

projeto de arquitetura

imagem-20221115232957239 imagem-20221116110254314

Operação aleatória

imagem-20221116104657828

Divisão de palco

  • A base da divisão de fase é a dependência estreita e a dependência ampla: a dependência estreita é muito benéfica para a otimização do trabalho e a dependência ampla não pode ser otimizada

  • Toda operação RDD é uma bifurcação/junção

  • Divida o palco: execute a análise reversa no DAG, desconecte ao encontrar dependências amplas e mescle ao encontrar dependências estreitas

    imagem-20221116105218320

processo de operação RDD

imagem-20221116110810412

Mecanismo de tolerância a falhas RDD

imagem-20221116111043971

Mecanismo de armazenamento no Spark

  • Cache RDD: incluindo memória e cache baseado em disco

    Cache de memória = tabela hash + estratégia de acesso

  • Persistência de dados Shuffle: deve ser armazenado em cache no disco

Capítulo 2 Sistema de Gerenciamento de Big Data

Definição de banco de dados: Um banco de dados é uma coleção organizada e compartilhável de dados armazenados em um computador por um longo período.

DBMS

  • Database Management System (Sistema de gerenciamento de banco de dados) é uma camada de software de gerenciamento de dados localizada entre o usuário e o sistema operacional.
  • A principal função do DBMS
    • Função de definição de dados: fornece linguagem de definição de dados (DDL) para definir objetos de dados no banco de dados.
    • Função de manipulação de dados: fornece linguagem de manipulação de dados (DML), que é usada para manipular dados para realizar operações básicas no banco de dados (consultar, inserir, excluir e modificar).
    • Operação e gerenciamento de banco de dados
    • Funções de criação e manutenção de banco de dados

DBS

  • Um sistema de banco de dados (Database System, DBS para abreviar) refere-se à composição do sistema após a introdução de um banco de dados em um sistema de computador.
  • Consiste em banco de dados, sistema de gerenciamento de banco de dados (e suas ferramentas de desenvolvimento), sistema aplicativo, administrador de banco de dados e usuários.

estrutura de armazenamento de banco de dados

  • Redundant Array of Disks (RAID): É o meio de armazenamento externo mais utilizado para servidores de banco de dados. É um array composto por vários discos idênticos. Existem várias combinações de RAID0 a RAID8.
  • Os dados do banco de dados são armazenados em armazenamento externo na forma de arquivos.
  • Como os registros são organizados dentro do arquivo
    • Organização de arquivo heap: os registros podem ser colocados em qualquer lugar do arquivo, na ordem de entrada. As operações de exclusão e inserção não precisam mover dados.
    • Organização sequencial de arquivos: os registros são armazenados logicamente em ordem crescente ou decrescente de valores de chave de pesquisa. Geralmente use a estrutura de cadeia de ponteiro.
    • Organização do arquivo hash: O valor de um valor de atributo obtido por meio de uma função hash é usado como o endereço de armazenamento do registro.
    • Organização de arquivos em cluster: um arquivo pode armazenar vários relacionamentos relacionados e os registros relacionados são armazenados no mesmo bloco para melhorar a velocidade de E/S.

tecnologia de indexação

  • Índice: É um pequeno arquivo independente do registro do arquivo principal e contém apenas atributos de índice e é classificado por valor de índice, portanto, a velocidade de pesquisa pode ser muito rápida.

  • classificação de índice

    1. Índice ordenado: Um índice construído de acordo com uma determinada ordem de classificação nos registros.

      • Índice principal (índice de agrupamento): a ordem dos valores da chave de pesquisa do índice é consistente com a ordem do arquivo principal. Esse tipo de arquivo é chamado de arquivo sequencial de índice e existe apenas um.
        registro de índice: valor da chave de pesquisa e ponteiro para o primeiro registro no arquivo principal com esse valor

        • Índice denso: crie um registro de índice (item de índice) para cada valor de chave de pesquisa no arquivo principal
        • Índice esparso: no arquivo principal, vários valores de chave de pesquisa são usados ​​para criar um registro de índice de registro de índice
        • Índice multinível: O índice esparso que pode ser construído ainda é muito grande, de modo que a eficiência da consulta não é alta. Portanto, crie outro nível de índice para o índice principal
      • Índice não clusterizado: a ordem dos valores da chave de pesquisa do índice não é consistente com a ordem do arquivo principal.

    2. Índice de hash: de acordo com um determinado valor de atributo no registro, o valor obtido por meio da função hash é usado como o número do balde do espaço de armazenamento.

  • atualização de índice

    • Excluir:
      ① Excluir o registro do arquivo principal
      ② Se houver vários registros correspondentes ao valor da chave de índice, o índice não precisa ser modificado.
      Caso contrário: para um índice denso, exclua a entrada de índice correspondente;
      para um índice esparso, se o valor do índice do registro excluído aparecer no bloco de índice, substitua-o pela chave de pesquisa A do próximo registro do registro excluído no bloco principal arquivo. Se A já aparecer no bloco de índice, exclua a chave de índice correspondente do registro excluído.
    • Inserção:
      ① Use a tecla de pesquisa do registro inserido para encontrar a posição de inserção e execute a inserção do arquivo principal.
      ②Para um índice denso e a chave de pesquisa não aparecer no bloco de índice, insira-a no índice.
      ③Índice esparso: Se o bloco de dados estiver livre para novos dados, não há necessidade de modificar o índice;
      caso contrário, adicione um novo bloco de dados e insira um novo item de índice no bloco de índice

romances

  • Definição: Uma transação é uma unidade lógica de trabalho em um DBMS, geralmente consistindo em um conjunto de operações de banco de dados
  • Propriedades ACID de transações
    • Atomic (Atomic): Todas as operações que constituem uma transação são executadas integralmente ou não são executadas, sem afetar os dados no banco de dados.
    • Consistência: A operação de uma transação faz com que o banco de dados mude de um estado consistente para outro.
    • Isolamento: Em um ambiente multiusuário, a execução de uma transação não é afetada por outras transações executadas ao mesmo tempo.
    • Durabilidade: Se uma transação for executada com sucesso, seu impacto no banco de dados é persistente e não falhará por falha.

E/S Paralela

  • Reduza o tempo necessário para recuperar relações do disco, particionando-as em vários discos

  • Particionamento horizontal: as tuplas de uma relação são divididas entre vários discos, e cada tupla é armazenada em apenas um disco

  • tecnologia de divisão define(número de discos = n) vantagem deficiência
    divisão do ciclo Envia a i-ésima tupla em relação ao (i mod n)-ésimo disco • Mais adequado para consultas que examinam sequencialmente toda a relação
    • Todos os discos têm números quase iguais de tuplas, portanto, a carga de trabalho da consulta é balanceada entre os discos
    • Difícil lidar com consultas de intervalo
    • Sem agrupamento: as tuplas estão espalhadas por todos os discos
    Divisão de hash 1. Selecione um ou mais atributos como o atributo de partição
    2. Selecione a função hash h cujo intervalo de valores é 0...n-1
    3. Deixe i representar o resultado obtido aplicando a função hash h ao valor do atributo de partição do tupla, então A tupla é enviada para o disco i
    • Bom para acesso sequencial
    • Bom para consultas pontuais em atributos particionados, que podem examinar apenas um único disco, deixando outros discos disponíveis para outras consultas
    Sem agrupamento, tão difícil de responder a consultas de intervalo
    divisão de escopo 1. Selecione um atributo como atributo de partição Selecione um vetor de partição [ v 0 , v 1 , . . . , vn − 2 ] [v_0, v_1, ..., v_{n-2}][ v0, v1, ... , vn 2]
    2. Defina o valor do atributo de divisão de uma tupla como v
    para quevi <= v <= vi + 1 v_i <= v <= v_{i+1}veu<=v<=veu + 1O grupo de tuplas para o disco i+1
    tal que v < v 0 v < v_0v<v0tuplas de para o disco 0
    tal que v >= vn − 2 v >= v_{n-2}v>=vn 2tuplas para o disco n-1
    • Fornece agrupamento de dados com base em valores de atributo de partição.
    • Adequado para acesso sequencial
    • Adequado para consultas de ponto em atributos de partição: apenas um acesso de disco é necessário.
    • Para consultas de intervalo em atributos de partição, apenas um ou alguns discos

manipulação distorcida

  • tipo de inclinação

    • Distorção do valor do atributo (pode ocorrer no particionamento de intervalo e particionamento de hash)
      • Algum valor ocorre no atributo de partição de muitas tuplas, todas as tuplas com o mesmo valor no atributo de partição são atribuídas na mesma partição
    • inclinação da partição
      • Particionamento de intervalo: um vetor de partição ruim pode atribuir muitas tuplas a uma partição e poucas tuplas a outras partições
      • Particionamento de hash: improvável de acontecer, desde que uma boa função de hash seja escolhida
  • Lidar com inclinação

    • Lidando com distorção em partições de intervalo: um método para gerar vetores de partição balanceados

      • Examine o relacionamento em ordem e construa o vetor de divisão: toda vez que 1/n do relacionamento é lido, o valor do atributo de divisão da próxima tupla é adicionado ao vetor de divisão
      • Duplicações ou desequilíbrios podem ocorrer se os atributos de partição tiverem valores duplicados
      • Outras técnicas baseadas em histogramas também são utilizadas na prática
    • Lidando com a inclinação com histogramas

      • É relativamente simples construir um vetor de partição balanceada a partir do histograma
      • Os histogramas podem ser construídos por relações de varredura ou tuplas de relação de amostragem
    • Aproveite os processadores virtuais para lidar com a distorção

      • O particionamento de variação no intervalo pode ser bem tratado com processadores virtuais:

        Crie um grande número de processadores virtuais (digamos, 10 a 20 vezes o número de processadores reais)
        Atribua tuplas relacionais a processadores virtuais usando qualquer técnica de particionamento
        Mapeie cada processador virtual para processadores reais de maneira round-robin

      • Ideia básica:

        Se o particionamento normal causar distorção, é provável que a distorção se espalhe por várias partições virtuais A
        partição virtual distorcida é espalhada por vários processadores reais, de modo que a distribuição se torna uniforme

paralelismo entre consultas

  • Consultas/transações são executadas em paralelo umas com as outras
  • Aumente a taxa de transferência de transações, principalmente para dimensionar os sistemas de processamento de transações para suportar transações maiores por segundo
  • Implementação mais complexa em arquiteturas de disco compartilhado ou nada compartilhado
    • As mensagens devem ser passadas entre os processadores para coordenar o bloqueio e o registro
    • Os dados no buffer local podem ter sido atualizados por outro processador
    • A coerência do cache é mantida - as leituras e gravações nos dados do buffer devem encontrar a versão mais recente dos dados

Protocolo de Coerência de Cache

  • Exemplos de protocolos de coerência de cache para sistemas de disco compartilhado:
    • Antes de ler/escrever uma página, a página deve ser compartilhada/exclusivamente bloqueada
    • Ao bloquear uma página, a página deve ser lida do disco
    • Antes de liberar o bloqueio de página, a página deve ser gravado no disco se atualizado

Paralelismo intra-consulta

  • Uma única consulta é executada em paralelo em vários processadores/discos: importante para acelerar consultas demoradas

  • Duas formas complementares de paralelismo intra-consulta:

    Paralelismo intra-operacional - cada operação dentro de uma consulta é executada em paralelo

    Paralelismo entre operações - diferentes operações dentro de uma consulta são executadas em paralelo

  • A primeira forma escala bem com maior paralelismo, já que cada operação normalmente processa mais tuplas do que o número de operações na consulta

Capítulo 3 Estrutura de Computação em Tempo Real de Big Data

imagem-20221116144844979

Tempestade

Storm é um sistema de computação em tempo real, distribuído e altamente tolerante a falhas.

  • Distribuído
    • Expansão horizontal: melhore os recursos de processamento adicionando máquinas e aumentando a simultaneidade
    • Tolerância automática a falhas: lide automaticamente com exceções de processo, máquina e rede
  • Tempo real: os dados não são gravados no disco, com baixa latência (nível de milissegundos)
  • Streaming: os dados estão constantemente entrando, sendo processados ​​e saindo

Cenários típicos de aplicação do Storm

  • Resposta de solicitação (síncrona): processamento de imagem em tempo real, análise de página da web em tempo real

  • Processamento de fluxo (assíncrono): processamento, análise e estatística item a item

  • Processamento de fluxo de dados: pode ser usado para processar novos dados e atualizar bancos de dados em tempo real, com tolerância a falhas e escalabilidade.

  • Cálculo contínuo: A consulta contínua pode ser realizada e os resultados podem ser repassados ​​ao cliente em tempo real.

  • Chamada de procedimento remoto distribuído

Características da Tempestade

  • Processamento confiável de mensagens: Storm garante que cada mensagem seja totalmente processada pelo menos uma vez. Quando uma tarefa falha, ela se encarrega de repetir a mensagem da fonte.
  • Rápido: O design do sistema garante que as mensagens possam ser processadas rapidamente
  • Modo Local: Um cluster Storm pode ser totalmente simulado durante o processamento, permitindo um rápido desenvolvimento e teste de unidade.
  • Tolerância a falhas: Storm gerencia processos de trabalho e falhas de nós.
  • Dimensionamento horizontal: os cálculos são executados em paralelo em vários segmentos, processos e servidores.

Arquitetura de Tecnologia

imagem-20221116164335239

A relação entre Trabalhador, Executor e Tarefa

imagem-20221116165446139

fluxo de trabalho da tempestade

imagem-20221116170049775

Tolerância a falhas de tempestade

  • falha no nível da tarefa

    • A mensagem causada pela falha da tarefa bolt não é respondida: todas as mensagens associadas a esta tarefa bolt no acker falharão devido ao tempo limite
      => o método de falha do Spout será chamado.

    • A tarefa do acker falha: todas as mensagens retidas antes da falha atingirão o tempo limite e falharão
      => o método de falha do Spout será chamado.

    • Falha na tarefa spout
      => O dispositivo externo (como MQ) conectado à tarefa spout é responsável pela integridade da mensagem.

  • Falha no slot da tarefa Falha no nível da tarefa + falha no nó do cluster (máquina)

    imagem-20221116173546327
  • Falha no nó Nimbus

    Se o nó Nimbus for perdido, o Worker continuará a executar e, se o worker morrer, o Supervisor continuará a reiniciá-los.

    No entanto, sem o Nimbus, os trabalhadores não são agendados para outros hosts, se necessário, e os clientes não podem enviar tarefas.

imagem-20221116160448291 imagem-20221116160745709 imagem-20221116161236754 imagem-20221116161757034 imagem-20221116172420039

API de desenvolvimento de tempestade

  • Spout
    nextTuple(): Função de retorno de chamada, acionada ciclicamente
    ack(id): Função de retorno de chamada, acionada quando a mensagem é processada com sucesso
    fail(id): Função de retorno de chamada, acionada quando a mensagem atinge o tempo limite

  • Bolt
    execute(Entrada da tupla): função de retorno de chamada, acionador de dados
    coletor.emit(tupla): envia tupla downstream através do coletor
    coletor.ack(tupla): confirma através do coletor que a tupla de entrada foi processada

  • public class MD5Topology {
          
          
        public static class MD5Bolt extends BaseBasicBolt {
          
          
            @Override
            public void execute(Tuple tuple, BasicOutputCollector collector) {
          
          
                String input = tuple.getString(0); // 获取来自DRPCSpout的实际输入数据
                String output = MD5Util.getMD5Str(input);
                // 往下游ReturnBolt emit数据
                // 第一个字段是计算的结果,这里是md5串
                // 第二个字段是来自DRPCSpout的return-info,是一个json串,包括drpc request id,server host、port
                collector.emit(new Values(output, tuple.getString(1))); 
            }
            @Override
            public void declareOutputFields(OutputFieldsDeclarer declarer) {
          
          
                declarer.declare(new Fields("result""return-info")); // 声明输出两个字段,和emit是对应的
            }
        }
        public static void main(String[] args) throws Exception {
          
          
            TopologyBuilder builder = new TopologyBuilder();
    
            builder.setSpout("DRPCSpout"new DRPCSpout(args[0])2);
            builder.setBolt("MD5Bolt"new MD5Bolt()4) // 参数依次是spout/bolt id,spout/bolt对象,并发度
                .shuffleGrouping("DRPCSpout"); // 指定上游以及grouping方式
            builder.setBolt("ReturnBolt"new ReturnResults()2)
                .shuffleGrouping("MD5Bolt");
    
            Config conf = new Config();
            conf.setNumWorkers(4); // 设置worker个数
            StormSubmitter.submitTopology(args[0], conf, builder.createTopology());
        }
    }
    

Spark Streaming

imagem-20221116160026036 imagem-20221116162110054 imagem-20221116162809890

O conceito central do Spark Streaming

  • DStream: Uma sequência de RDDs representando fluxos de dados

  • Transformações - modifique dados de um Dstream para criar outro DStream

    Operações RDD padrão: mapear, countByValue, reduzir, inserir...
    Operações com estado: janela, countByValueAndWindow...

  • Operações de saída: transferir dados para entidades externas

    saveAsHadoopFiles: salva no HDFS
    foreach: processa cada lote de resultados

A fonte de entrada do DStream

  • Fontes base: Fontes disponíveis diretamente na API StreamingContext.
  • Fontes avançadas: como Kafka, Flume, Kinesis, Twitter, etc. podem ser criadas com classes de utilitários adicionais.

Arquitetura de transmissão do Spark

imagem-20221116170114448

Tolerância a falhas de faísca

  • Os RDDs podem lembrar a sequência de operações que os criou a partir da entrada tolerante a falhas original
  • Lotes de dados de entrada são replicados na memória em vários nós de trabalho e, portanto, são tolerantes a falhas

algum contraste

Comparação entre Spark Streaming e Storm

Spark Streaming Tempestade
A computação de fluxo em nível de milissegundos não pode ser alcançada Resposta em milissegundos pode ser alcançada
O mecanismo de execução de baixa latência pode ser usado para computação em tempo real
Em comparação com o Storm, os conjuntos de dados RDD são mais fáceis de fazer um processamento tolerante a falhas eficiente

Correspondência funcional entre os componentes de arquitetura Storm e Hadoop

HadoopGenericName Tempestade
Nome da Aplicação Trabalho Topologia
função do sistema JobTracker Nuvem
Rastreador de Tarefas Supervisor
interface do componente Mapear/Reduzir Bico/Parafuso

Capítulo 4 Estrutura de Computação Big Graph

Modelo computacional

Superpasso: Computação de Nós Paralelos

  • para cada nó

    ▪ aceitar uma mensagem enviada pelo superstep anterior
    ▪ executar a mesma função definida pelo usuário
    ▪ modificar seu valor ou o valor de sua aresta de saída
    ▪ enviar a mensagem para outro ponto (aceito pelo próximo superstep)
    ▪ alterar a topologia do grafo
    ▪ sem trabalho extra terminar a iteração quando fazer

  • condição de rescisão

    ▪ Todos os vértices se tornam inativos ao mesmo tempo
    ▪ Sem passagem de mensagem

Diferenças do MapReduce

  • Algoritmos de gráfico podem ser escritos como uma série de chamadas MapReduce
  • Pregel
    mantém vértices e arestas na máquina que executa a computação e
    usa uma estrutura de malha para transferir informações

  • Cada estágio do MapReduce utiliza todos os estados do gráfico inteiro
    e precisa integrar a cadeia MapReduce

imagem-20221116181622573

// 图操作(Scala语言)
class Graph [ V, E ] {
    
    
def Graph(vertices: Table[ (Id, V) ], 
edges: Table[ (Id, Id, E) ])
// Table Views -----------------
def vertices: Table[ (Id, V) ]
def edges: Table[ (Id, Id, E) ]
def triplets: Table [ ((Id, V)(Id, V), E) ]
// Transformations ------------------------------
def reverse: Graph[V, E]
def subgraph(pV: (Id, V) => Boolean, 
pE: Edge[V,E] => Boolean): Graph[V,E]
def mapV(m: (Id, V) => T ): Graph[T,E] 
def mapE(m: Edge[V,E] => T ): Graph[V,T]
// Joins ----------------------------------------
def joinV(tbl: Table [(Id, T)]): Graph[(V, T), E ]
def joinE(tbl: Table [(Id, Id, T)]): Graph[V, (E, T)]
// Computation ----------------------------------
}

Pregel

estrutura do sistema

O sistema Pregel também usa um modelo mestre/escravo

  • Nó mestre: programe os nós escravos, corrija os erros do nó escravo
  • Nós escravos: processam suas próprias tarefas, comunicam-se com outros nós escravos

polimerização

imagem-20221116183452238

agregador

imagem-20221116184243570

Execução do Pregel

imagem-20221116184931841 imagem-20221116184944191 imagem-20221116184954887

GraphX

Seleção do local de conexão usando tabelas de roteamento

imagem-20221116185125847

Iterar sobre o cache de mrTriplets

imagem-20221116185222651

Iterar sobre a agregação de mrTriplets

imagem-20221116190402120

tolerância ao erro

  • Ponto de verificação: o nó mestre instrui periodicamente os nós escravos a salvar o estado da partição no armazenamento persistente
  • Detecção de erros: uso cronometrado de mensagens "ping"
  • mestre de recuperação
    reatribui partições de gráfico para escravos atualmente disponíveis
    todos os trabalhadores recarregam o estado da partição a partir do último ponto de verificação disponível
  • Recuperação parcial: registra as informações de saída, envolve apenas a partição de recuperação

Capítulo 5 Armazenamento de Big Data

Eventos de pequena probabilidade se tornarão a norma em grande escala

Máquina de disco corrompida

falha na placa RAID

falha na rede

falha de eletricidade

erro de dados

exceção do sistema

ponto de acesso

defeito de software

operação errada

HDFS

termos relacionados

HDFS GFS MooseFS ilustrar
NameNode Mestre Mestre O cérebro de todo o sistema de arquivos
fornece informações de diretório de todo o sistema de arquivos, informações de bloco de cada arquivo e informações de localização de blocos de dados
para gerenciar cada servidor de dados.
DataNode Chunk Server Chunk Server Cada arquivo no sistema de arquivos distribuído é dividido em vários blocos de dados e cada bloco de dados é armazenado em um servidor diferente
Bloquear pedaço pedaço Cada arquivo será dividido em vários blocos (padrão 64 MB) e cada bloco possui uma parte contínua do conteúdo do arquivo, que é a unidade básica de armazenamento.
Pacote nenhum nenhum Quando o cliente grava um arquivo, ele não grava o sistema de arquivos byte por byte, mas o grava uma vez no sistema de arquivos após uma certa quantidade ter sido acumulada, e cada dado enviado é chamado de pacote de dados.
pedaço nenhum Bloco (64 KB) Em cada pacote de dados, os dados são cortados em blocos menores (512 bytes) e cada bloco é combinado com um código de verificação de paridade (CRC), que é um bloco de transmissão.
Nó de Nome Secundário nenhum Metalogs O servidor de controle principal de backup silenciosamente puxa o log do servidor de controle principal para trás dele, esperando que o servidor de controle principal seja corrigido depois que ele morrer.

Funções do núcleo

Função ilustrar
Namespace O HDFS oferece suporte à organização hierárquica tradicional de arquivos. Semelhante à maioria dos outros sistemas de arquivos, os usuários podem criar diretórios e criar, excluir, mover e renomear arquivos entre eles.
Comando shell O Hadoop inclui uma série de comandos semelhantes a shell que podem interagir diretamente com o HDFS e outros sistemas de arquivos suportados pelo Hadoop.
replicação de dados 每个文件的block大小和replication因子都是可配置的。Replication因子可以在文件创建的时候配置,以后也可以改变。HDFS中的文件是write-one,并且 严格要求在任何时候只有一个writer。
机架感知 在大多数情况下,replication因子是3,HDFS的存放策略是将一个副本存放在本地机架上的节点,一个副本放在同一机架上的另一个节点,最后一个副本放在不同机架上的一个节点。机架的错误远远比节点的错误少,这个策
Editlog FSEditLog类是整个日志体系的核心,提供了一大堆方便的日志写入API,以及日志的恢复存储等功能。
集群均衡 如果某个DataNode节点上的空闲空间低于特定的临界点,那么就会启动一个计划自动地将数据从一个DataNode搬移到空闲的DataNode。
空间的回收 删除文件并没有立刻从HDFS中删除,HDFS将这个文件重命名,并转移到/trash目录,用于恢复,/trash可设置保存时间。

HDFS结构

imagem-20221116214529041

读取文件流程

imagem-20221116215023142

写入文件流程

imagem-20221116220255283

数据写入流程总结

数据写入 概述 优点 不足
链式写入 Client
-> Replica A
-> Replica B
-> Replica C
每个节点负载和流量比较均衡 链条过长,出现异常时诊断和修复过程比较复杂
主从写入 Client
-> Replica A
-> Replica B
-> Repllica C
总路径较短,管理逻辑由主节点负责 主节点有可能成为负载和流量瓶颈
异常处理方式 概述 优点 不足
重新修复 剔除异常节点,提升 replica 版本 , 重新组织当前写入的repilca group 最大程度保留之前写入的数据
Seal and New 1. Sele todas as réplicas de chunk que estão sendo gravadas no momento, não permitindo mais a gravação e use a réplica mais curta atual como o comprimento padrão do chunk
2. Inscreva-se para um novo chunk e continue a gravar dados na nova réplica de chunk
Simples e rápido, pode ignorar nós anormais O tamanho do bloco não é fixo, mais gerenciamento de meta é necessário

Ler resumo do processo

  • Qualquer cópia válida pode ser selecionada para leitura
  • Se houver uma exceção, tente outra cópia
  • A leitura de backup pode efetivamente reduzir a latência de leitura
  • Selecione o acesso de cópia ideal atual de acordo com o princípio da localidade

Data de validade

Verificação de soma de verificação de caminho completo IO

  • <buffer, len, crc>
  • Autenticação em armazenamento e transmissão de rede
  • Soma de verificação e persistência de dados
  • Verifique regularmente os dados do disco em segundo plano para verificações de soma de verificação

backup de dados

Quando a máquina/disco está anormal, pode ser rapidamente recuperado através de outras cópias

saldo de dados

Quando novas máquinas/discos ficarem online, migre os dados para garantir o balanceamento de carga

coleta de lixo

Concluído de forma assíncrona, o sistema é estável e suave

Ler resumo do processo

  • Qualquer cópia válida pode ser selecionada para leitura
  • Se houver uma exceção, tente outra cópia
  • A leitura de backup pode efetivamente reduzir a latência de leitura
  • Selecione o acesso de cópia ideal atual de acordo com o princípio da localidade

Data de validade

Verificação de soma de verificação de caminho completo IO

  • <buffer, len, crc>
  • Autenticação em armazenamento e transmissão de rede
  • Soma de verificação e persistência de dados
  • Verifique regularmente os dados do disco em segundo plano para verificações de soma de verificação

backup de dados

Quando a máquina/disco está anormal, pode ser rapidamente recuperado através de outras cópias

saldo de dados

Quando novas máquinas/discos ficarem online, migre os dados para garantir o balanceamento de carga

coleta de lixo

Concluído de forma assíncrona, o sistema é estável e suave.
A réplica mais curta atual é usada como o comprimento padrão do bloco
2. Solicitar um novo bloco e continuar a gravar dados na nova réplica do bloco | Simples e rápido, pode ignorar nós anormais | O tamanho do bloco não é fixo, mais gerenciamento de meta é necessário |

Ler resumo do processo

  • Qualquer cópia válida pode ser selecionada para leitura
  • Se houver uma exceção, tente outra cópia
  • A leitura de backup pode efetivamente reduzir a latência de leitura
  • Selecione o acesso de cópia ideal atual de acordo com o princípio da localidade

Data de validade

Verificação de soma de verificação de caminho completo IO

  • <buffer, len, crc>
  • Autenticação em armazenamento e transmissão de rede
  • Soma de verificação e persistência de dados
  • Verifique regularmente os dados do disco em segundo plano para verificações de soma de verificação

backup de dados

Quando a máquina/disco está anormal, pode ser rapidamente recuperado através de outras cópias

saldo de dados

Quando novas máquinas/discos ficarem online, migre os dados para garantir o balanceamento de carga

coleta de lixo

Concluído de forma assíncrona, o sistema é estável e suave

Ler resumo do processo

  • Qualquer cópia válida pode ser selecionada para leitura
  • Se houver uma exceção, tente outra cópia
  • A leitura de backup pode efetivamente reduzir a latência de leitura
  • Selecione o acesso de cópia ideal atual de acordo com o princípio da localidade

Data de validade

Verificação de soma de verificação de caminho completo IO

  • <buffer, len, crc>
  • Autenticação em armazenamento e transmissão de rede
  • Soma de verificação e persistência de dados
  • Verifique regularmente os dados do disco em segundo plano para verificações de soma de verificação

backup de dados

Quando a máquina/disco está anormal, pode ser rapidamente recuperado através de outras cópias

saldo de dados

Quando novas máquinas/discos ficarem online, migre os dados para garantir o balanceamento de carga

coleta de lixo

Concluído de forma assíncrona, o sistema é estável e suave

Acho que você gosta

Origin blog.csdn.net/twi_twi/article/details/129257991
Recomendado
Clasificación