Video: hive tutorial part 1 -- Hadoop Series 2024
Die Verdichtung , der Prozess, durch den HBase nach sich selbst aufräumt, gibt es in zwei Geschmacksrichtungen: Dur und Moll. Große Verdichtungen können eine große Sache sein, aber zuerst müssen Sie kleinere Verdichtungen verstehen.
Kleinere Verdichtungen kombinieren eine konfigurierbare Anzahl kleinerer HFiles zu einer größeren HFile. Sie können die Anzahl der zu komprimierenden HFiles und die Häufigkeit einer geringfügigen Verdichtung einstellen. Geringfügige Komprimierungen sind wichtig, da ohne sie das Lesen einer bestimmten Zeile viele Datenträgerlesevorgänge erfordert und eine langsame Gesamtleistung verursacht.
Die Abbildung, die veranschaulicht, wie dieses Konzept funktioniert, kann Ihnen helfen zu visualisieren, wie die folgende Tabelle auf dem HDFS beibehalten werden kann.
Zeilenschlüssel | Spaltenfamilie: {Spaltenqualifizierer: Version: Wert} |
---|---|
00001 | Kundenname: {'FN':
1383859182496: ' John ', ' LN ': 1383859182858:' Smith ', ' MN ': 1383859183001:' Timothy ', ' MN ': 1383859182915:' T '} ContactInfo: {' EA ': 1383859183030:' John. Smith @ xyz. com ', ' SA ': 1383859183073:' 1 Hadoop Lane, NY 11111 '} |
00002 | Kundenname: {' FN ':
1383859183103:' Jane ', 'LN': 1383859183163: 'Doe', ContactInfo: { 'SA': 1383859185577: '7 HBase Ave, CA 22222'} |
Beachten Sie, wie die CustomerName-Spaltenfamilie mit zwei MemStore-Flushes in das HDFS geschrieben wurde und wie die Daten in der ContactInfo-Spaltenfamilie mit nur einem MemStore-Flush auf Festplatte gespeichert wurden. Dieses Beispiel ist hypothetisch, aber es ist ein wahrscheinliches Szenario, das vom Zeitpunkt der Schreibvorgänge abhängt.
Stellen Sie sich ein Dienstleistungsunternehmen vor, das im Laufe der Zeit immer mehr Kundenkontaktinformationen erhält. Die Dienstfirma kann den Vor- und Nachnamen ihres Kunden kennen, aber erst in Stunden oder Wochen später in nachfolgenden Dienstanforderungen ihren Vornamen erfahren. Dieses Szenario würde dazu führen, dass Teile von Zeile 00001 in verschiedenen HFiles auf dem HDFS verbleiben.
Bis das HBase-System eine geringfügige Verdichtung durchführt, würde das Lesen aus Zeile 00001 drei Plattenlesevorgänge erfordern, um den relevanten HFile-Inhalt abzurufen! Kleinere Verdichtungen versuchen den System-Overhead zu minimieren und gleichzeitig die Anzahl der HFiles unter Kontrolle zu halten. Die Konstrukteure von HBase achteten besonders darauf, dem HBase-Administrator so viele Abstimmungskontrollen wie möglich zu geben, um die Auswirkungen eines Systems "gering" zu machen. "
Wie der Name schon sagt, unterscheidet sich eine größere Verdichtung von der Perspektive einer Systemauswirkung. Die Verdichtung ist jedoch für die Gesamtfunktionalität des HBase-Systems sehr wichtig. Eine Hauptverdichtung versucht, alle HFiles zu einem großen HFile zu kombinieren.
Darüber hinaus erledigt eine Hauptverdichtung die Bereinigung, nachdem ein Benutzer einen Datensatz gelöscht hat. Wenn ein Benutzer einen Delete-Aufruf ausgibt, platziert das HBase-System eine Markierung in das Schlüssel-Wert-Paar, so dass es während der nächsten Hauptverdichtung dauerhaft entfernt werden kann.
Darüber hinaus ist es für das System richtig, die Versionen der Daten zu überprüfen und sie mit der Time-to-Live (TTL) -Eigenschaft zu vergleichen, da größere Verdichtungen alle HFiles zu einer großen HFile zusammenfassen. Werte, die älter als die TTL sind, werden gelöscht.
Time to live bezieht sich auf die Variable in HBase, die Sie festlegen können, um festzulegen, wie lange Daten mit mehreren Versionen in HBase verbleiben.
Sie haben vielleicht erraten, dass eine größere Verdichtung die Reaktionszeit des Systems erheblich beeinflusst. Benutzer, die während einer größeren Verdichtung versuchen, Daten in das System einzufügen, abzurufen oder zu bearbeiten, sehen möglicherweise eine schlechte Systemreaktionszeit.
Darüber hinaus muss der HBase-Cluster möglicherweise Regionen zur gleichen Zeit aufteilen, in der eine größere Verdichtung stattfindet und gleicht die Regionen über alle RegionServers hinweg aus. Dieses Szenario würde zu einem erheblichen Netzwerkverkehr zwischen RegionServern führen.
Aus diesen Gründen benötigt Ihr HBase-Administrator eine umfassende Verdichtungsstrategie für Ihre Bereitstellung.