2017-08-24 2 views
2

Nous avons un problème avec le stockage des données dans HBase. Nous avons pris ces mesures:La taille de la table HBase diminue après une période de temps

  1. Le gros fichier csv (taille: 20 G) est en cours de traitement par l'application Spark avec hfiles comme résultat (taille des données de résultat: 180 g).
  2. Création de table en utilisant la commande suivante: 'TABLE_NAME', {'NAME'=>'cf', 'COMPRESSION'=>'SNAPPY'}
  3. Les données de hfiles créées sont chargés en bloc avec la commande hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 hdfs://ip:8020/path TABLE_NAME

droit après le chargement de la table de la taille est de 180 G, mais après un certain temps (hier, il était à 20 heures, il y a deux jours vers 8 heures du matin) un processus est lancé qui compacte les données à la taille 14 G.

Ma question est quel est le nom de ce processus? Est-ce un compactage majeur? Becouse J'essaie de déclencher le compactage (major_compact et compact) manuellement, mais cela est une sortie de commande a commencé sur la table non compacté:

hbase(main):001:0> major_compact 'TEST_TYMEK_CRM_ACTION_HISTORY' 
0 row(s) in 1.5120 seconds 

Répondre

0

C'est tassements processus. Je peux suggérer la raison suivante pour une si grande différence dans la taille de la table. En utilisant l'application Spark, vous n'utiliserez pas de codec de compression pour HFile, car il le spécifie après la création du fichier. La pièce jointe HFiles à la table ne change pas formate (tous les fichiers dans HDFS sont immuables). Seulement après le processus de compactage, les données seront compressées. Vous pouvez suivre le processus de compactage via l'interface utilisateur HBase; il a généralement couru sur le port 60000.