BigData Plataforms Flashcards
Quais são as principais características e capacidades de uma plataforma de Big Data?
Uma plataforma de Big Data é uma solução de computação integrada que combina vários sistemas de software, ferramentas e hardware para gerenciar big data.
Principais características:
- Capacidade de acomodar novas aplicações e ferramentas conforme a necessidade evolui.
- Suporte de vários formatos de dados.
- Capacidade de lidar com grandes volumes de dados, sejam streaming ou em repouso.
- Fornecimento de uma ampla gama de ferramentas para converter dados de/para diferentes formatos
- Suporte para escala (linear)
- Capacidade de implantação rápida.
- Fornecimento de ferramentas para análise de dados e criação de relatórios
Quais são as etapas principais na abordagem centrada em dados?
Desenvolvimento e Operações
- Ingestão de Dados e ETL (Extract, Transform, Load): Dados movidos das fontes de dados para a plataforma.
Armazenamento e Gestão de Dados
- Dados ingeridos são armazenados e geridos, utilizando diferentes tipos de armazenamentos e bases de dados.
Análise e Aprendizagem de Dados
- Dados processados, analisados e utilizados para criar modelos e obter insights.
- Duas ideias principais: dados em repouso vs. dados em movimento.
Relatórios e Visualização
- Padrões e insights dos dados são interpretados e apresentados para suporte à tomada de decisões.
Quais as pipelines de Big Data pelas infraestruturas distribuídas?
Data Source
Ingestion
Storage
Learning (Data Source, Ingestion, Store raw data, Data analysis, Store analytical data)
Visualization
Dá exemplos de sistemas e fontes de dados em Big Data?
Fontes de Dados:
- sensores
- ficheiros,
- base de dados
- queues, logs
Armazenamento/Banco de Dados/Data Lake:
- MongoDB
- Hadoop Distributed File System (HDFS)
- Apache Cassandra
- Amazon S3 (parte de um Data Lake)
——–
Sistemas de Processamento de Dados em Lote (Batch):
- Hadoop MapReduce
- Apache Spark Batch.
Sistemas de Processamento de Dados em Streaming:
- Apache Kafka Streams
- Apache Flink Streaming
- Spark Streaming
- Google Dataflow
Como difere a velocidade de processamento na pipeline?
Dependendo se o problema trabalha dados em tempo real ou não, as etapas de processamento variam:
Sem ser em tempo real:
(ex: transações de clientes movidas para centros de dados para fins de análise)
-> Data source, Ingestion, File Storage, Batch processing (Spark), Vidualization
Em tempo real:
(ex: Big Data como sensores rápidos e/ou dados de IoT em fluxos quase em tempo real, por exemplo, localizações de carros)
-> Data source, Message broker, Stream processing, Visualization
O que é prorgamming model?
É um programa que processa grandes volumes de uma variedade de dados, estruturados e não estruturados num ambiente paralelo e compartilhado por meio de duas tarefas sequenciais: mapear e reduzir. O Map filtra e classifica os dados enquanto reduz, divide o big data em pedaços menores. Em vez de lidar com as complexidades de sincronização e agendamento, precisamos apenas dar ao MapReduce duas funções, mapear e reduzir
MapReduce assume apenas um modelo limitado para expressar dados Hive e Pig: são dois modelos de programação adicionais no topo do MapReduce para aumentar a modelagem de dados do MapReduce com álgebra relacional e modelagem de fluxo de dados respectivamente
* Hive foi criado para emitir consultas semelhantes a SQL usando MapReduce em HDFS
* Pig foi criado para modelar programas baseados em fluxo de dados usando MapReduce
Quando utilizar MapReduce?
USAR QUANDO:
* Problemas que exigem acesso sequencial aos dados
* Arquivos muito grandes e raramente atualizados no local.
* Antecipar o crescimento dos dados
* Desejar disponibilidade de dados a longo prazo (substituição para armazenamento de longo prazo, como fitas)
* Ter muitas plataformas num único armazenamento de dados
* Alto volume de dados
* Alta variabilidade de dados
Estes problemas podem ser resolvidos com duas funções: Map e Reduce
NAO USAR QUANDO:
* Problemas em tempo real
* Problemas que exigem acesso aleatório aos dados
* Problemas onde os dados mudam frequentemente
* Pequenos conjuntos de dados
* Paralelismo a nível de tarefa
* Algoritmos avançados
* Substituição de infraestrutura
Como implementar Map Reduce?
1º Dividir os arquivos de entrada armazenados no HDFS em divisões (normalmente do tamanho de um chunk) e atribui cada divisão a um mapeador diferente Mapper
2º Executar a função map para transformar as divisões numa sequência de pares chave/valor
3º Baralhar e Ordenar:
* O mestre coleta e ordena todos os pares chave/valor por chave
* As chaves são divididas entre todas as tarefas de redução (cada redução obtém todos os valores de chave com a mesma chave)
4ºRedutor:
Executar a função redutora, uma chave por vez, e combinar todos os valores associados a essa chave de alguma forma. Ás vezes podem ser associativas e/ou comutativas. Exemplo: em vez de produzir vários pares (w, 1), (w, 1) pode-se somar e produzir apenas uma chave (w, m), ainda assim é preciso agrupar e agregar.
Quais as regras práticas a considerar ao usar MapReduce?
Determinar:
* M, o número de tarefas de mapa
* R, o número de tarefas de redução
- M deve ser maior que o número de nós
Uma tarefa de mapa para um pedaço - R é geralmente menor que M
A saída final é espalhada pelos R arquivos
Custo computacional:
Quando não considerar o tempocomputacional de MapReduce?
O tempo computacional está geralmente relacionado à movimentação de dados entre tarefas
Não deve ser considerado quando:
* O algoritmo executado por cada tarefa é muito simples, muitas vezes linear no tamanho de entrada
* A velocidade de interconexão é muito lenta quando comparada ao tempo computacional
* Mesmo que os dados estejam presentes no mesmo bloco, o tempo que leva para colocá-los na memória excede o tempo necessário para operar os dados uma vez na memória
O que é e como funciona Hadoop?
É um Open-source framework baseado no MapReduce
- É organizado numa estrutura de camadas
- Um componente, na estrutura de camadas, usa a funcionalidade ou capacidades dos componentes na camada abaixo dele
- Geralmente os componentes da mesma camada não se comunicam (e um componente nunca assume que uma ferramenta ou componente específico está acima)
Fala sobre a arquitetura de Hadoop
HDFS (Sistema de Arquivos Distribuídos do Hadoop): Unidade de armazenamento que distribui grandes conjuntos de dados em vários nós de um cluster. fornece armazenamento escalonável e confiável. (low-cost hardware). É responsável por distribuir, armazenar e recuperar informações em diferentes servidores para um processamento paralelo eficaz. Pode processar dados não estruturados e estruturados.
YARN - O Hadoop YARN fornece agendamento flexível e gerenciamento de recursos no armazenamento HDFS. Atua como gestor de cluster do Hadoop MapReduce, encarregado de implementar cargas de trabalho distribuídas. Planeia tarefas e distribui recursos de computação como memória e CPU para aplicativos. É portanto o processador e gestor de solicitações de trabalho e recursos de cluster.
MapReduce
Fala sobre o restante ecossistema de Hadoop
Giraph: construído para processar gráficos de grande escala de forma eficiente
HBase, MongoDB, Cassandra: utilizado quando dados ou tarefas de processamento não são representados de maneira fácil ou eficiente usando sistemas de arquivos clássicos. Exemplos disso incluem coleções de valores-chave ou grandes tabelas esparsas
Zookeeper: sistema de gestão centralizado para sincronização, configuração e para garantir alta disponibilidade de todas essas ferramentas.
O que é Hadoop’s HDFS?
É um modelo coerente simples
* Aplicações HDFS precisam de um modelo de acesso de gravação uma vez-leitura-muitos para arquivos
* Anexar o conteúdo ao final dos arquivos é suportado, mas não pode ser atualizado num ponto arbitrário Mover a computação é mais barato do que mover dados
* Uma computação solicitada por uma aplicação é muito mais eficiente se for executada perto dos dados em que opera
* Isso minimiza o congestionamento da rede e aumenta o rendimento geral do sistema
Portabilidade entre plataformas heterogêneas de hardware e software: O HDFS foi projetado para ser facilmente portátil de uma plataforma para outra.
Arquitetura de HDFS
O HDFS possui uma arquitetura mestre/escravo:
Expõe um namespace do sistema de arquivos e permite que os dados do usuário sejam armazenados em arquivos
- O HDFS possui um único NameNode para metadados. O NameNode é o nó mestre no HDFS que é responsável por gerenciar a estrutura do sistema de arquivos e os metadados associados:
- Mantém informações sobre os nomes dos arquivos, na
localização no diretório, e a relação entre os arquivos e
os blocos armazenados nos DataNodes (Geralmente um por cluster)
- O HDFS possui vários DataNodes para armazenamento dos dados em blocos que se comunicam com
o NameNode para receber instruções sobre como gerenciar esses
blocos. Há um DataNode por máquina no cluster.