Kurz: Zápis do Apache Hadoop HDFS z Apache Storm ve službě Azure HDInsightTutorial: Write to Apache Hadoop HDFS from Apache Storm on Azure HDInsight

V tomto kurzu se dozvíte, jak použít Apache Storm k zápisu dat do úložiště kompatibilního se službou HDFS, které používá Apache Storm ve službě HDInsight.This tutorial demonstrates how to use Apache Storm to write data to the HDFS-compatible storage used by Apache Storm on HDInsight. HDInsight může jako úložiště kompatibilní s HDFS používat jak Azure Storage, tak Azure Data Lake Storage.HDInsight can use both Azure Storage and Azure Data Lake Storage as HDFS-compatible storage. V této části najdete komponentu HdfsBolt , která zapisuje data do HDFS.Storm provides an HdfsBolt component that writes data to HDFS. Tento dokument poskytuje informace o zápisu do libovolného typu úložiště z HdfsBolt.This document provides information on writing to either type of storage from the HdfsBolt.

Ukázková topologie použitá v tomto dokumentu spoléhá na komponenty, které jsou zahrnuty v systému HDInsight.The example topology used in this document relies on components that are included with Storm on HDInsight. V případě použití s jinými clustery Apache Storm může být nutné provést úpravy, aby se Azure Data Lake Storage.It may require modification to work with Azure Data Lake Storage when used with other Apache Storm clusters.

V tomto kurzu se naučíte:In this tutorial, you learn how to:

  • Konfigurace clusteru pomocí akce skriptuConfigure the cluster with script action
  • Sestavení a zabalení topologieBuild and package the topology
  • Nasazení a spuštění topologieDeploy and run the topology
  • Zobrazit výstupní dataView output data
  • Zastavení topologieStop the topology

PožadavkyPrerequisites

Příklad konfiguraceExample configuration

Následující YAML je výňatek ze resources/writetohdfs.yaml souboru, který je zahrnutý v příkladu.The following YAML is an excerpt from the resources/writetohdfs.yaml file included in the example. Tento soubor definuje topologii zaplavování pomocí rozhraní pro tok Apache Storm.This file defines the Storm topology using the Flux framework for Apache Storm.

components:
  - id: "syncPolicy"
    className: "org.apache.storm.hdfs.bolt.sync.CountSyncPolicy"
    constructorArgs:
      - 1000

  # Rotate files when they hit 5 MB
  - id: "rotationPolicy"
    className: "org.apache.storm.hdfs.bolt.rotation.FileSizeRotationPolicy"
    constructorArgs:
      - 5
      - "MB"

  - id: "fileNameFormat"
    className: "org.apache.storm.hdfs.bolt.format.DefaultFileNameFormat"
    configMethods:
      - name: "withPath"
        args: ["${hdfs.write.dir}"]
      - name: "withExtension"
        args: [".txt"]

  - id: "recordFormat"
    className: "org.apache.storm.hdfs.bolt.format.DelimitedRecordFormat"
    configMethods:
      - name: "withFieldDelimiter"
        args: ["|"]

# spout definitions
spouts:
  - id: "tick-spout"
    className: "com.microsoft.example.TickSpout"
    parallelism: 1


# bolt definitions
bolts:
  - id: "hdfs-bolt"
    className: "org.apache.storm.hdfs.bolt.HdfsBolt"
    configMethods:
      - name: "withConfigKey"
        args: ["hdfs.config"]
      - name: "withFsUrl"
        args: ["${hdfs.url}"]
      - name: "withFileNameFormat"
        args: [ref: "fileNameFormat"]
      - name: "withRecordFormat"
        args: [ref: "recordFormat"]
      - name: "withRotationPolicy"
        args: [ref: "rotationPolicy"]
      - name: "withSyncPolicy"
        args: [ref: "syncPolicy"]

Tento YAML definuje následující položky:This YAML defines the following items:

  • syncPolicy: Definuje, kdy jsou soubory synchronizovány/vyprázdněny do systému souborů.syncPolicy: Defines when files are synched/flushed to the file system. V tomto příkladu každé 1000 řazených kolekcí členů.In this example, every 1000 tuples.
  • fileNameFormat: Definuje cestu a vzor názvu souboru, který se má použít při zápisu souborů.fileNameFormat: Defines the path and file name pattern to use when writing files. V tomto příkladu je cesta k dispozici za běhu pomocí filtru a Přípona souboru je .txt.In this example, the path is provided at runtime using a filter, and the file extension is .txt.
  • recordFormat: Definuje interní formát napsaných souborů.recordFormat: Defines the internal format of the files written. V tomto příkladu jsou pole oddělená | znakem.In this example, fields are delimited by the | character.
  • rotationPolicy: Definuje, kdy se mají soubory otáčet.rotationPolicy: Defines when to rotate files. V tomto příkladu není provedeno otočení.In this example, no rotation is performed.
  • hdfs-bolt: Použije předchozí součásti jako konfigurační parametry pro HdfsBolt třídu.hdfs-bolt: Uses the previous components as configuration parameters for the HdfsBolt class.

Další informace o rozhraních toků naleznete v tématu https://storm.apache.org/releases/current/flux.html.For more information on the Flux framework, see https://storm.apache.org/releases/current/flux.html.

Konfigurace clusteruConfigure the cluster

Ve výchozím nastavení zaplave v HDInsight neobsahuje součásti, které HdfsBolt nástroj používá ke komunikaci s Azure Storage nebo data Lake Storage v cestě třídy classpath.By default, Storm on HDInsight does not include the components that HdfsBolt uses to communicate with Azure Storage or Data Lake Storage in Storm's classpath. Pomocí následující akce skriptu přidejte tyto komponenty do extlib adresáře pro zaplavení v clusteru:Use the following script action to add these components to the extlib directory for Storm on your cluster:

VlastnostProperty ValueValue
Typ skriptuScript type – Vlastní- Custom
URI skriptu BashBash script URI https://hdiconfigactions.blob.core.windows.net/linuxstormextlibv01/stormextlib.sh
Typ (typy) uzlůNode type(s) Nimbus, nadřízenýNimbus, Supervisor
ParametryParameters ŽádnéNone

Informace o použití tohoto skriptu s clusterem naleznete v dokumentu Přizpůsobení clusterů HDInsight pomocí akcí skriptů .For information on using this script with your cluster, see the Customize HDInsight clusters using script actions document.

Sestavení a zabalení topologieBuild and package the topology

  1. Stáhněte si ukázkový projekt z https://github.com/Azure-Samples/hdinsight-storm-azure-data-lake-store nástroje do vývojového prostředí.Download the example project from https://github.com/Azure-Samples/hdinsight-storm-azure-data-lake-store to your development environment.

  2. Z příkazového řádku, terminálu nebo relace prostředí změňte adresáře na kořen staženého projektu.From a command prompt, terminal, or shell session, change directories to the root of the downloaded project. K sestavení a zabalení topologie použijte následující příkaz:To build and package the topology, use the following command:

    mvn compile package
    

    Po dokončení sestavení a balíčku je k dispozici nový adresář s názvem target, který obsahuje soubor s názvem StormToHdfs-1.0-SNAPSHOT.jar.Once the build and packaging completes, there is a new directory named target, that contains a file named StormToHdfs-1.0-SNAPSHOT.jar. Tento soubor obsahuje kompilovaná topologie.This file contains the compiled topology.

Nasazení a spuštění topologieDeploy and run the topology

  1. K zkopírování topologie do clusteru HDInsight použijte následující příkaz.Use the following command to copy the topology to the HDInsight cluster. Nahraďte CLUSTERNAME názvem clusteru.Replace CLUSTERNAME with the name of the cluster.

    scp target\StormToHdfs-1.0-SNAPSHOT.jar sshuser@CLUSTERNAME-ssh.azurehdinsight.net:StormToHdfs-1.0-SNAPSHOT.jar
    
  2. Po dokončení nahrávání použijte následující příkaz pro připojení ke clusteru HDInsight pomocí protokolu SSH.Once the upload completes, use the following to connect to the HDInsight cluster using SSH. Nahraďte CLUSTERNAME názvem clusteru.Replace CLUSTERNAME with the name of the cluster.

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  3. Po připojení pomocí následujícího příkazu vytvořte soubor s názvem dev.properties:Once connected, use the following command to create a file named dev.properties:

    nano dev.properties
    
  4. Jako obsah dev.properties souboru použijte následující text.Use the following text as the contents of the dev.properties file. Podle vašeho schématu identifikátoru URIupravte podle potřeby.Revise as needed based on your URI scheme.

    hdfs.write.dir: /stormdata/
    hdfs.url: wasbs:///
    

    Pokud chcete soubor uložit, použijte CTRL + X , pak Y a nakonec ENTER .To save the file, use Ctrl + X, then Y, and finally Enter. Hodnoty v tomto souboru nastavily adresu URL úložiště a název adresáře, do kterého se data zapisují.The values in this file set the storage URL and the directory name that data is written to.

  5. K zahájení topologie použijte následující příkaz:Use the following command to start the topology:

    storm jar StormToHdfs-1.0-SNAPSHOT.jar org.apache.storm.flux.Flux --remote -R /writetohdfs.yaml --filter dev.properties
    

    Tento příkaz spustí topologii pomocí rozhraní toků, protože ho odešle do uzlu Nimbus clusteru.This command starts the topology using the Flux framework by submitting it to the Nimbus node of the cluster. Topologie je definována writetohdfs.yaml souborem, který je součástí jar.The topology is defined by the writetohdfs.yaml file included in the jar. dev.properties Soubor se předává jako filtr a hodnoty obsažené v souboru jsou čteny topologiemi.The dev.properties file is passed as a filter, and the values contained in the file are read by the topology.

Zobrazit výstupní dataView output data

Chcete-li zobrazit data, použijte následující příkaz:To view the data, use the following command:

hdfs dfs -ls /stormdata/

Zobrazí se seznam souborů vytvořených touto topologií.A list of the files created by this topology is displayed. Následující seznam je příkladem dat vrácených předchozími příkazy:The following list is an example of the data returned by the previous commands:

Found 23 items
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-0-1561407909895.txt
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-1-1561407915577.txt
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-10-1561407943327.txt
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-11-1561407946312.txt
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-12-1561407949320.txt
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-13-1561407952662.txt
-rw-r--r--   1 storm supergroup    5242880 2019-06-24 20:25 /stormdata/hdfs-bolt-3-14-1561407955502.txt

Zastavení topologieStop the topology

Topologie nečinnosti se spouštějí do zastavení, nebo se cluster odstraní.Storm topologies run until stopped, or the cluster is deleted. K zastavení topologie použijte následující příkaz:To stop the topology, use the following command:

storm kill hdfswriter

Vyčištění prostředkůClean up resources

Pokud chcete vyčistit prostředky vytvořené v tomto kurzu, můžete odstranit skupinu prostředků.To clean up the resources created by this tutorial, you can delete the resource group. Odstraněním skupiny prostředků odstraníte také přidružený cluster HDInsight a všechny další prostředky, které jsou k příslušné skupině prostředků přidružené.Deleting the resource group also deletes the associated HDInsight cluster, and any other resources associated with the resource group.

Odebrání skupiny prostředků pomocí webu Azure Portal:To remove the resource group using the Azure portal:

  1. Na webu Azure Portal rozbalením nabídky na levé straně otevřete nabídku služeb a pak zvolte Skupiny prostředků . Zobrazí se seznam skupin prostředků.In the Azure portal, expand the menu on the left side to open the menu of services, and then choose Resource Groups to display the list of your resource groups.
  2. Vyhledejte skupinu prostředků, kterou chcete odstranit, a klikněte pravým tlačítkem na tlačítko Další (...) na pravé straně seznamu.Locate the resource group to delete, and then right-click the More button (...) on the right side of the listing.
  3. Vyberte Odstranit skupinu prostředků a potvrďte tuto akci.Select Delete resource group, and then confirm.

Další krokyNext steps

V tomto kurzu jste zjistili, jak používat Apache Storm k zápisu dat do úložiště kompatibilního se systémem HDFS používaného Apache Storm v HDInsight.In this tutorial, you learned how to use Apache Storm to write data to the HDFS-compatible storage used by Apache Storm on HDInsight.