In Bezug auf HDInsight HBase, würde Ich mag hier ein paar Ideen teilen.
1) Zeit gestütztes Verdichten von deafult deaktiviert ist, hbase.hregion.majorcompaction=0
2) In Bezug auf Größe auf Basis der Verdichtung sehen, ist die Standard-Verdichtungspolitik ExploringCompactionPolicy
während hbase.hstore.compaction.max.size
zu 10GB gesetzt, so dass keine Verdichtungen größer als 10 GB passieren werden.
hbase.hregion.max.filesize
ist auf 3GB eingestellt, sobald die HFiles einer Region diesen Wert überschritten haben, wird die Region aufgeteilt. Der Grund für diese Einstellungen ist, dass die maximale BLOB-HBase in Azure Storage bis zu 12 GB erstellen kann. Wenn Sie also mehr als 12 GB komprimieren, schlägt die Komprimierung schließlich fehl. Sie können die maximale Blob-Größe definitiv erhöhen (bis zu 200 GB pro dokumentiertem Azure Storage, aber das erhöht auch die Lese-/Schreib-Latenz und die Komprimierungszeit).
Mehr Kontext hier,
Obwohl Azure Blob Speicher 200 GB Grenze für einen einzelnen Blob hat, (4MB * 50k-Blöcke), sondern um die beste Leistung zu erhalten, in hadoop core-site.xml
beschränken wir fs.azure.read.request.size
und fs.azure.write.request.size
zu 256kb, Daher wird der maximale Blob im HBase-Cluster 256KB * 50k um 12GB betragen. Wenn Sie auf 4 MB setzen, wird es jedoch 200 GB sein. Aber 4MB wird die Latenz jedes Lese-/Schreibvorgangs erhöhen, und Sie werden HBase erlauben, bis zu 200GB Daten zu komprimieren, die für Stunden dauern werden.
3) Eine starke Verdichtung ist besonders für Cloud-basierte HBase teuer. Weil die Latenz höher ist als bei lokalen Festplatten/SSDs. Für die Leseleistung können Sie den Bucket-Cache einrichten, der auf der lokalen VM-SSD bereitgestellt wird, die standardmäßig im neuesten HBInsight-HBase-Cluster aktiviert sein sollte.
Es kann definitiv mehr Tuning durchgeführt werden wie VM-Größe, Clustergröße, Memstore-Größe usw.