Habilitar Compressão Rápida para Melhor Desempenho em Big SQL e Colmeia – Hadoop Dev

Big SQL suporta diferentes formatos de ficheiro. Leia este artigo para mais informações sobre os diferentes formatos de ficheiro suportados por Big SQL. A distinção do tipo de formato de ficheiro a ser utilizado é feita durante a criação da tabela. Big SQL suporta a criação de tabelas e população a partir de Big SQL bem como a partir de Hive. Uma das maiores vantagens do Big SQL é que o Big SQL sincroniza com a Metastore da Colmeia. Isto significa que as tabelas Big SQL podem ser criadas e povoadas em Big SQL ou criadas em Big SQL e povoadas a partir da Colmeia. As tabelas da Colmeia também podem ser preenchidas a partir da Colmeia e depois acedidas a partir do Big SQL depois de os catálogos estarem sincronizados.

Ao carregar dados nas tabelas Parquet, o Big SQL utilizará a compressão SNAPPY por defeito. Para a Colmeia, a compressão por defeito não está activada, como resultado a tabela poderia ser significativamente maior se criada e/ou povoada na Colmeia. As secções seguintes descreverão como activar a compressão SNAPPY para tabelas povoadas na Colmeia em IBM Open Platform (antes de Big SQL v5) e HortonWorks Data Platform (a partir de Big SQL v5 e a partir de Big SQL v5).

Criar Big SQL Table usando o formato Parquet

Quando as tabelas são criadas em Big SQL, o formato Parquet pode ser escolhido usando a cláusula STORED AS PARQUET na declaração CREATE HADOOP TABLE como neste exemplo:

 jsqsh>CREATE HADOOP TABLE inventory ( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET 

Por defeito, o Big SQL usará a compressão SNAPPY ao escrever nas tabelas Parquet. Isto significa que se os dados forem carregados no Big SQL usando os comandos LOAD HADOOP ou INSERT…SELECT, então a compressão SNAPPY é activada por defeito.

Criar Tabela de Colmeia usando Formato Parquet

Se as tabelas Parquet forem criadas usando a Colmeia, então o defeito é não ter nenhuma compressão activada. O exemplo seguinte mostra a sintaxe para uma tabela Parquet criada em Hive:

 hive> CREATE TABLE inv_hive ( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET 

Nota que a sintaxe é a mesma, embora o comportamento seja diferente. Por defeito, a Colmeia não utilizará qualquer compressão ao escrever em tabelas de Parquet.

Comparando os Tamanhos das Tabelas Big SQL e Hive Parquet

A tabela seguinte mostra o tamanho da tabela para uma tabela utilizando o formato de ficheiro Parquet quando a tabela é preenchida utilizando Big SQL LOAD HADOOP e Big SQL INSERT…SELECT vs Hive INSERT…SELECT:

>th> Hive INSERT..SELECT

>th>>164 GB>th>165 GBth>280 GB
Big SQL LOAD Big SQL INSERT..SELECT

Desde que os ficheiros Parquet criados com Big SQL são comprimidos, o tamanho total da tabela é muito menor. A tabela Big SQL criada e preenchida em Big SQL é quase metade do tamanho da tabela criada em Big SQL e depois preenchida a partir da Colmeia.

Activar a compressão SNAPPY na Colmeia

Iniciar com a Colmeia 0.13, a propriedade da tabela ‘PARQUET.COMPRESS’=’SNAPPY’ pode ser definida para activar a compressão SNAPPY. Em alternativa, pode definir parquet.compression=SNAPPY na secção “Custom hive-site settings” em Ambari tanto para IOP como para HDP, o que assegurará que a Colmeia comprime sempre qualquer ficheiro Parquet que produza. Aqui está um exemplo de utilização da propriedade tabela durante uma declaração de criação de tabela em Hive:

 hive> CREATE TABLE inv_hive_parquet( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); 

Nota que se a tabela for criada em Big SQL e depois povoada em Hive, então esta propriedade tabela também pode ser utilizada para permitir a compressão SNAPPY. Por exemplo, esta é a sintaxe para criar uma tabela em Big SQL com compressão SNAPPY activada. Isto pode ser útil se as instruções INSERT…SELECT tiverem de ser conduzidas a partir de Hive.

 jsqsh> CREATE HADOOP TABLE inv_bigsql_parquet( trans_id int, product varchar(50), trans_dt date ) PARTITIONED BY ( year int) STORED AS PARQUET TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); 

Com a compressão snappy activada em Hive observámos os seguintes tamanhos de tabela:

>th> Hive INSERT..SELECT

th>164 GB>th>165 GB>th>>163 GB

Big SQL LOAD Big SQL INSERT..SELECT

Com este tamanho de tabela de propriedades reduzido de 280GB para 163GB, esta é uma compressão aproximada de quase duas vezes. Não só a tabela ocupará menos espaço no HDFS, como também pode haver um ganho de desempenho significativo ao aceder aos dados tanto para Big SQL como para Hive. A recomendação é ou definir ‘parquet.compress=SNAPPY’ na TBLPROPERTIES ao criar uma tabela Parquet ou definir ‘parquet.compression.SNAPPY’ no local da colmeia através de Ambari. Isto assegura que todos os ficheiros Parquet produzidos através da Colmeia relacionados com esta tabela serão comprimidos.

Muitos agradecimentos a Abhayan Sundararajan da equipa Big SQL Performance pela descoberta e contribuições para este documento.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *