Compactações em HBase
compactação, o processo pelo qual HBase limpa após si, vem em dois sabores: maiores e menores. Principais compactações pode ser um grande negócio, mas primeiro você precisa entender compactações menores.
compactações menores combinar um número configurável de HFiles menores em um hFile maior. Você pode ajustar o número de HFiles para compactar e a frequência de uma compactação menor. compactações menores são importantes porque sem eles, lendo uma linha específica pode exigir muitas leituras de disco e fazer com que o desempenho geral lento.
A figura, que ilustra como este conceito funciona, pode ajudar a visualizar como a tabela a seguir podem ser mantidos na HDFS.
Row Key | Coluna Família: {coluna Qualifier: Versão: Valor} |
---|---|
00001 | CustomerName: { 'FN': 1383859182496: 'John', 'LN': 1383859182858: 'Smith', 'MN': 1383859183001: 'Timóteo', 'MN': 1383859182915: 'T'} ContactInfo: { 'EA': 1383859183030:'[email protected] ', 'SA': 1383859183073: «1 Hadoop Lane, NY11111 '} |
00002 | CustomerName: { 'FN': 1383859183103: 'Jane', 'LN': 1383859183163: 'Doe', Informação de contacto: { 'SA': 1383859185577: «7 HBase Ave, CA22222 '} |
Observe como a família de colunas CustomerName foi escrito para o HDFS com duas ondas de MemStore e como os dados na família coluna ContactInfo foi mantidas no disco com apenas um rubor MemStore. Este exemplo é hipotético, mas é um cenário provável em função do calendário das gravações.
Imagine uma empresa de serviços que está ganhando mais e mais informações de contato do cliente ao longo do tempo. A empresa de serviços pode saber primeiro e último nome do seu cliente, mas não aprender sobre o seu nome do meio, até horas ou semanas mais tarde, em solicitações de serviço subseqüentes. Este cenário resultaria em partes da fileira 00001 sendo persistiu ao HDFS em diferentes HFiles.
Até que o sistema HBase executa uma compactação menor, a leitura de Row 00001 exigiria três leituras de disco para recuperar o conteúdo hFile relevante! compactações menores procuram minimizar a sobrecarga do sistema, mantendo o número de HFiles sob controle. desenhadores HBase levou cuidados especiais para dar o administrador HBase como controle de sintonia tanto quanto possível para fazer qualquer impacto no sistema # 147-minor # 148.;
Como o próprio nome indica, uma grande compactação é diferente a partir da perspectiva de um impacto no sistema. No entanto, a compactação é bastante importante para a funcionalidade total do sistema HBase. Um grande compactação procura combinar todos HFiles em um grande hFile.
Além disso, uma grande compactação faz o trabalho de limpeza após um usuário excluir um registro. Quando um utilizador envia uma chamada Apagar, o sistema HBase coloca um marcador no par de chaves de valor de modo que ele pode ser removido de forma permanente durante a próxima maior compactação.
Além disso, como principais compactações combinar todos HFiles em um grande hFile, é o momento certo para o sistema de rever as versões dos dados e compará-los contra o tempo para viver (TTL) propriedade. Valores mais velhos do que o TTL são expurgados.
Tempo de Viver refere-se à variável no HBase é possível definir, a fim de definir como os dados longo com várias versões permanecerá em HBase.
Você pode ter adivinhado que uma grande compactação afeta significativamente o tempo de resposta do sistema. Os usuários que estão tentando adicionar, recuperar ou manipular dados no sistema durante uma grande compactação, eles podem ver o tempo de resposta do sistema pobres.
Além disso, o cluster HBase pode ter que dividir regiões ao mesmo tempo que uma maior compactação está ocorrendo e equilibrar as regiões em todos os RegionServers. Este cenário resultaria em uma quantidade significativa de tráfego de rede entre RegionServers.
Por estas razões, o administrador do HBase precisa ter uma estratégia de compactação importante para a sua implantação.