Bevor Sie zu viel Zeit in dieses Projekt investieren, sollten Sie sich das Open-Source-Projekt HDFS-DU von Twitter ansehen. Dies bietet eine Ansicht der Auslastung basierend auf Pfaden innerhalb des Dateisystems und nicht von DataNodes innerhalb des Clusters, aber vielleicht ist das für Ihre Anforderungen hilfreich.
Wenn das Ziel nur darin besteht, Knoten zu identifizieren, bei denen ein Rebalancing erforderlich ist, können diese Informationen bereits auf der Registerkarte "Datanodes" der Web-Benutzeroberfläche von NameNode aufgerufen werden. Sie können auch hdfs dfsadmin -report
ausführen, um Auslastungsstatistiken für jeden Knoten in einem Skript abzurufen.
Wenn keine der oben genannten Anforderungen Ihren Anforderungen entspricht und Sie die Informationen in ein externes Berichterstellungstool wie Tableau integrieren müssen, können die JMX-Messwerte, die über HTTP auf dem NameNode verfügbar gemacht werden, ein hilfreicher Integrationspunkt sein. Im Folgenden finden Sie ein Beispiel für einen curl
Befehl, der einige dieser Informationen aus dem NameNode abfragt. Beachten Sie insbesondere den Abschnitt LiveNodes
, der Kapazitätsinformationen zu jedem DataNode enthält.
Weitere Informationen zu diesen Metriken finden Sie in der Apache Hadoop Metrics Dokumentation.
> curl 'http://127.0.0.1:9870/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo'
{
"beans" : [ {
"name" : "Hadoop:service=NameNode,name=NameNodeInfo",
"modelerType" : "org.apache.hadoop.hdfs.server.namenode.FSNamesystem",
"Threads" : 46,
"Version" : "3.0.0-alpha2-SNAPSHOT, rdf497b3a739714c567c9c2322608f0659da20cc4",
"Used" : 5263360,
"Free" : 884636377088,
"Safemode" : "",
"NonDfsUsedSpace" : 114431086592,
"PercentUsed" : 5.266863E-4,
"BlockPoolUsedSpace" : 5263360,
"PercentBlockPoolUsed" : 5.266863E-4,
"PercentRemaining" : 88.52252,
"CacheCapacity" : 0,
"CacheUsed" : 0,
"TotalBlocks" : 50,
"NumberOfMissingBlocks" : 0,
"NumberOfMissingBlocksWithReplicationFactorOne" : 0,
"LiveNodes" : "{\"192.168.0.117:9866\":{\"infoAddr\":\"127.0.0.1:9864\",\"infoSecureAddr\":\"127.0.0.1:0\",\"xferaddr\":\"127.0.0.1:9866\",\"lastContact\":2,\"usedSpace\":5263360,\"adminState\":\"In Service\",\"nonDfsUsedSpace\":114431086592,\"capacity\":999334871040,\"numBlocks\":50,\"version\":\"3.0.0-alpha2-SNAPSHOT\",\"used\":5263360,\"remaining\":884636377088,\"blockScheduled\":0,\"blockPoolUsed\":5263360,\"blockPoolUsedPercent\":5.266863E-4,\"volfails\":0}}",
"DeadNodes" : "{}",
"DecomNodes" : "{}",
"BlockPoolId" : "BP-1429209999-10.195.15.240-1484933797029",
"NameDirStatuses" : "{\"active\":{\"/Users/naurc001/hadoop-deploy-trunk/data/dfs/name\":\"IMAGE_AND_EDITS\"},\"failed\":{}}",
"NodeUsage" : "{\"nodeUsage\":{\"min\":\"0.00%\",\"median\":\"0.00%\",\"max\":\"0.00%\",\"stdDev\":\"0.00%\"}}",
"NameJournalStatus" : "[{\"manager\":\"FileJournalManager(root=/Users/naurc001/hadoop-deploy-trunk/data/dfs/name)\",\"stream\":\"EditLogFileOutputStream(/Users/naurc001/hadoop-deploy-trunk/data/dfs/name/current/edits_inprogress_0000000000000000862)\",\"disabled\":\"false\",\"required\":\"false\"}]",
"JournalTransactionInfo" : "{\"MostRecentCheckpointTxId\":\"861\",\"LastAppliedOrWrittenTxId\":\"862\"}",
"NNStartedTimeInMillis" : 1485715900031,
"CompileInfo" : "2017-01-03T21:06Z by naurc001 from trunk",
"CorruptFiles" : "[]",
"NumberOfSnapshottableDirs" : 0,
"DistinctVersionCount" : 1,
"DistinctVersions" : [ {
"key" : "3.0.0-alpha2-SNAPSHOT",
"value" : 1
} ],
"SoftwareVersion" : "3.0.0-alpha2-SNAPSHOT",
"NameDirSize" : "{\"/Users/naurc001/hadoop-deploy-trunk/data/dfs/name\":2112351}",
"RollingUpgradeStatus" : null,
"ClusterId" : "CID-4526ea43-52e6-4b3f-9ddf-5fd4412e322e",
"UpgradeFinalized" : true,
"Total" : 999334871040
} ]
}
Dank einer Million Chirs, das war sehr hilfreich. Um meinen Anforderungen gerecht zu werden, sollten sie eine Visualisierung der Datenblockverteilung erstellen, um besser zu verstehen, wie Daten verteilt werden. Wenn das neue Ideen für Sie generiert, lassen Sie es mich wissen! Alle Hilfe wird geschätzt! – SB2017