1. tolerância a falhas
O Spark é tolerante a falhas, o que significa que o Spark não falhará, perderá dados ou retornará
resultados imprecisos no caso de uma máquina host ou falha na rede. O método exclusivo de
tolerância a falhas do Spark é alcançado porque cada partição dos dados contém a dependência
informações necessárias para recalcular a partição. A maioria dos paradigmas computacionais distribuídos
que permitem que os usuários trabalhem com objetos mutáveis fornece tolerância a falhas
registrando atualizações ou duplicando dados nas máquinas
Por outro lado, o Spark não precisa manter um log de atualizações para cada RDD ou registrar as
etapas intermediárias reais, pois o próprio RDD contém todas as informações de dependência
necessárias para replicar cada uma de suas partições. Portanto, se uma partição for perdida, o RDD terá
informações suficientes sobre sua linhagem para recalculá-la e esse cálculo poderá ser
paralelo para acelerar a recuperação.
2. A única opção possível para computação em larga escala
Os
RDDs de disco , cujas partições são muito grandes para serem armazenadas na RAM em cada um dos
executores, podem ser gravados no disco. Essa estratégia é obviamente mais lenta para
cálculos repetidos, mas pode ser mais tolerante a falhas para longas sequências de
transformações e pode ser a única opção viável para enormes computações
.
3. RDD persistente usa o algoritmo de cache lru
Ao persistir
os RDDs, a implementação padrão dos RDDs remove a partição menos usada recentemente
(chamada cache LRU) se o espaço necessário for necessário para calcular ou armazenar em cache uma
nova partição.
4. As principais propriedades do RDD
Internamente, o Spark usa cinco propriedades principais para representar um RDD。
iterador partitions () (p, parentIters)
dependências ()
particionador ()
localizações preferenciais (p)
5 、 Tipos de RDDs
PairRDDFunctions,
OrderedRDDFunctions,
GroupedRDDFunctions
6. Sobre ação
Cada programa Spark deve conter uma ação, pois as ações trazem informações de
volta ao driver ou gravam os dados no armazenamento estável.
Algumas dessas ações não são bem dimensionadas, pois podem causar
erros de memória no driver. Em geral, é melhor usar ações como
obter, contar e reduzir, que devolvem uma quantidade fixa de dados
ao driver, em vez de coletar ou fazer uma amostra.
7. Alocação de recursos
O Spark oferece duas maneiras de alocar recursos entre aplicativos: alocação estática e
alocação dinâmica
8. Sobre o impacto dos particionadores no rdd
as
mesmas operações em RDDs com particionadores conhecidos e RDDs
sem um particionador conhecido podem resultar em limites de estágio diferentes
, porque não há necessidade de embaralhar um RDD com uma
partição conhecida