2016-11-12 3 views
0

Angenommen, wir haben eine Datei auf HDFS mit 3 Blöcken (je 64 MB). Wenn wir eine RDD erstellen, die dieselbe Datei mit 3 Partitionen verwendet, dann hat jeder Knoten im Cluster (angenommen Cluster hat 3 Datenknoten) doppelte Dateiinhalte (einen Block von hdfs und eine Partition von RDD)RDD Partitionierung

+0

Ist das wirklich Verständnis? Bitte klären Sie. –

Antwort

0

In HDFS Blöcke werden zufällig verteilt (standardmäßig und wenn der Client, auf dem Sie die Datei abgelegt haben, nicht Teil des Clusters ist), können Sie nicht sicher sein, dass jeder Knoten einen Block hat, außer Sie haben Replik 3. In diesem Fall wird jeder Block platziert in drei Knoten.

In Bezug auf Spark versucht Spark standardmäßig, Daten von den Knoten, die sich in der Nähe befinden, in eine RDD zu lesen und versucht, rdd-Partitionen über den Cluster zu verteilen.

Ihre Annahme ist nicht immer richtig, Sie müssen HDFS-Blockverteilung mit Replica-Platzierungsstrategie, Spark-Executoren usw. berücksichtigen. Allerdings wäre es richtig, wenn Sie Replica 3 in HDFS haben und einen Spark-Cluster mit 3 haben Arbeiter eins in jedem Knoten im Cluster.