Wenn HBase als Quelle für MapReduce verwendet wird, kann ich TableInputFormatBase erweitern, um mehrere Teilbereiche und mehrere Mapper für jede Region zu erstellen?

8

Ich denke darüber nach, HBase als Quelle für einen meiner MapReduce-Jobs zu verwenden. Ich weiß, dass TableInputFormat eine Eingabeaufteilung (und damit einen Mapper) pro Region angibt. Dies scheint jedoch ineffizient zu sein. Ich würde wirklich gerne mehrere Mapper gleichzeitig in einer bestimmten Region arbeiten lassen. Kann ich dies erreichen, indem ich TableInputFormatBase erweitere? Kannst du mich bitte auf ein Beispiel hinweisen? Ist das überhaupt eine gute Idee?

Danke für die Hilfe.

    
sangfroid 14.06.2012, 18:54
quelle

5 Antworten

2

Sie benötigen ein benutzerdefiniertes Eingabeformat, das InputFormat erweitert. Sie können sich eine Vorstellung davon machen, wie dies von der Antwort auf die Frage Ich möchte viele Daten scannen (bereichsbasierte Abfragen), welche Optimierungen ich beim Schreiben der Daten machen kann, damit der Scan schneller wird . Dies ist eine gute Idee, wenn die Zeit der Datenverarbeitung größer ist als die Zeit zum Abrufen von Daten.

    
Alexander Kuznetsov 06.07.2012 15:55
quelle
1

Nicht sicher, ob Sie mehrere Mapper für eine bestimmte Region angeben können, aber berücksichtigen Sie Folgendes:

Wenn Sie der Meinung sind, dass ein Mapper pro Region ineffizient ist (vielleicht haben Ihre Datenknoten nicht genügend Ressourcen wie #cpus), können Sie vielleicht kleinere Regionengrößen in der Datei hbase-site.xml angeben.

Hier ist eine Seite für die Standardkonfigurationsoptionen, wenn Sie das ändern wollen: Ссылка

Bitte beachten Sie, dass Sie die Anzahl der Dateien in Ihrem DFS erhöhen, indem Sie die Größe der Region klein machen. Dies kann die Kapazität Ihres Hadoop-DFS je nach Speicher Ihres Namens begrenzen. Denken Sie daran, dass die Speichernutzung des Namensodes in direktem Zusammenhang mit der Anzahl der Dateien in Ihrem DFS steht. Dies kann für Ihre Situation relevant sein oder auch nicht, da ich nicht weiß, wie Ihr Cluster verwendet wird. Auf diese Fragen gibt es niemals eine Silberkugel!

    
Tucker 04.07.2012 05:05
quelle
0

1. Es ist absolut in Ordnung, nur sicherzustellen, dass der Schlüsselsatz sich gegenseitig zwischen den Mappern ausschließt.

  1. Sie erstellen nicht zu viele Clients, da dies zu viel gc führen kann, da während des Lesens von hbase blocking cache burning passiert
KrazyGautam 28.04.2015 18:16
quelle
0

Mit diesem MultipleScanTableInputFormat können Sie mithilfe der MultipleScanTableInputFormat.PARTITIONS_PER_REGION_SERVER-Konfiguration steuern, wie viele Mapper auf einem einzelnen Regionsserver ausgeführt werden sollen. Die Klasse gruppiert alle Eingabeaufteilungen nach ihrer Position (regionserver), und der RecordReader durchläuft alle aggregierten Aufteilungen für den Mapper ordnungsgemäß.

Hier ist das Beispiel

Ссылка

In dieser Arbeit haben Sie mehrere aggregierte Splits für einen einzelnen Mapper erstellt.

%Vor%

Erstellen Sie Partition nach Regionsserver

%Vor%     
UserszrKs 08.12.2016 08:51
quelle
-1

Dies ist nützlich, wenn Sie große Bereiche (Hunderte von Millionen Zeilen) mit konditioniertem Scan scannen möchten, der nur wenige Datensätze findet. Dies verhindert ScannerTimeoutException

%Vor%     
Robert Fišer 22.01.2015 15:20
quelle
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '398847',
    'url' => 'when-using-hbase-as-a-source-for-mapreduce-can-i-extend-tableinputformatbase-to',
];

$_COOKIE = [
    '_csrf-frontend' => '615877da8826bec95f423e9f5f51406c08348a73225ab1f92d4beda1911ef596a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"RRwC_rO6vKNH0wxPv-IFFSHGO1h9mpYi";}',
    'advanced-frontend' => 'af7b34195f2151daa1a677609f624ed8',
];

$_SESSION = [
    '__flash' => [],
];