Migrera från lokal HDFS-butiken till Azure Storage med Azure Data BoxMigrate from on-prem HDFS store to Azure Storage with Azure Data Box

Du kan migrera data från en lokal HDFS-lagring av ditt Hadoop-kluster till Azure Storage (Blob Storage eller Data Lake Storage Gen2) genom att använda en Data Box-enhet enhet.You can migrate data from an on-premises HDFS store of your Hadoop cluster into Azure Storage (blob storage or Data Lake Storage Gen2) by using a Data Box device. Du kan välja mellan Data Box Disk, en 80 TB-Data Box-enhet eller en 770-TB-Data Box Heavy.You can choose from Data Box Disk, an 80-TB Data Box or a 770-TB Data Box Heavy.

Den här artikeln hjälper dig att utföra följande uppgifter:This article helps you complete these tasks:

  • Förbered migreringen av dina data.Prepare to migrate your data.
  • Kopiera data till en Data Box Disk Data Box-enhet eller en Data Box Heavy enhet.Copy your data to a Data Box Disk, Data Box or a Data Box Heavy device.
  • Skicka tillbaka enheten till Microsoft.Ship the device back to Microsoft.
  • Tillämpa åtkomst behörigheter för filer och kataloger (endast Data Lake Storage Gen2)Apply access permissions to files and directories (Data Lake Storage Gen2 only)

FörutsättningarPrerequisites

Du behöver dessa saker för att slutföra migreringen.You need these things to complete the migration.

Låt oss börja om du är klar.If you are ready, let's start.

Kopiera data till en Data Box-enhet enhetCopy your data to a Data Box device

Om dina data passar in på en enda Data Box-enhet enhet kommer du att kopiera data till Data Box-enhet enheten.If your data fits into a single Data Box device, then you'll copy the data to the Data Box device.

Om data storleken överskrider den Data Box-enhet enhetens kapacitet använder du den valfria proceduren för att dela upp data över flera data Box-enhet enheter och utför sedan det här steget.If your data size exceeds the capacity of the Data Box device, then use the optional procedure to split the data across multiple Data Box devices and then perform this step.

Om du vill kopiera data från din lokala HDFS-butik till en Data Box-enhet enhet, ställer du in några saker och använder sedan DistCp -verktyget.To copy the data from your on-premises HDFS store to a Data Box device, you'll set a few things up, and then use the DistCp tool.

Följ dessa steg om du vill kopiera data via REST-API: er för BLOB/objekt-lagring till din Data Box-enhet-enhet.Follow these steps to copy data via the REST APIs of Blob/Object storage to your Data Box device. REST API-gränssnittet gör att enheten visas som en HDFS-lagring i klustret.The REST API interface will make the device appear as an HDFS store to your cluster.

  1. Innan du kopierar data via REST ska du identifiera säkerhets-och anslutnings primitiver för att ansluta till REST-gränssnittet på Data Box-enhet eller Data Box Heavy.Before you copy the data via REST, identify the security and connection primitives to connect to the REST interface on the Data Box or Data Box Heavy. Logga in på det lokala webb gränssnittet för Data Box-enhet och gå till sidan Anslut och kopiera .Sign in to the local web UI of Data Box and go to Connect and copy page. Gå till Azure Storage-kontot för din enhet, under åtkomst inställningar, leta upp och välj rest.Against the Azure storage account for your device, under Access settings, locate, and select REST.

    Sidan "Anslut och kopiera"

  2. I dialog rutan åtkomst till lagrings konto och ladda upp data kopierar du BLOB service slut punkten och lagrings konto nyckeln.In the Access storage account and upload data dialog, copy the Blob service endpoint and the Storage account key. Från BLOB service-slutpunkten utelämnar https:// och avslutande snedstreck.From the blob service endpoint, omit the https:// and the trailing slash.

    I det här fallet är slut punkten: https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/ .In this case, the endpoint is: https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/. Värd delen av den URI som du ska använda är: mystorageaccount.blob.mydataboxno.microsoftdatabox.com .The host portion of the URI that you'll use is: mystorageaccount.blob.mydataboxno.microsoftdatabox.com. Ett exempel finns i så här ansluter du till rest över http.For an example, see how to Connect to REST over http.

    Dialog rutan "åtkomst till lagrings konto och uppladdning av data"

  3. Lägg till slut punkten och Data Box-enhet-eller Data Box Heavy nodens IP-adress till /etc/hosts på varje nod.Add the endpoint and the Data Box or Data Box Heavy node IP address to /etc/hosts on each node.

    10.128.5.42  mystorageaccount.blob.mydataboxno.microsoftdatabox.com
    

    Om du använder någon annan mekanism för DNS bör du se till att Data Box-enhet-slutpunkten kan lösas.If you are using some other mechanism for DNS, you should ensure that the Data Box endpoint can be resolved.

  4. Ställ in Shell-variabeln på azjars platsen för- hadoop-azure och azure-storage jar-filerna.Set the shell variable azjars to the location of the hadoop-azure and azure-storage jar files. Du hittar dessa filer under installations katalogen för Hadoop.You can find these files under the Hadoop installation directory.

    Använd följande kommando för att ta reda på om filerna finns: ls -l $<hadoop_install_dir>/share/hadoop/tools/lib/ | grep azure .To determine if these files exist, use the following command: ls -l $<hadoop_install_dir>/share/hadoop/tools/lib/ | grep azure. Ersätt <hadoop_install_dir> plats hållaren med sökvägen till den katalog där du har installerat Hadoop.Replace the <hadoop_install_dir> placeholder with the path to the directory where you've installed Hadoop. Se till att du använder fullständigt kvalificerade sökvägar.Be sure to use fully qualified paths.

    Exempel:Examples:

    azjars=$hadoop_install_dir/share/hadoop/tools/lib/hadoop-azure-2.6.0-cdh5.14.0.jar azjars=$azjars,$hadoop_install_dir/share/hadoop/tools/lib/microsoft-windowsazure-storage-sdk-0.6.0.jarazjars=$hadoop_install_dir/share/hadoop/tools/lib/hadoop-azure-2.6.0-cdh5.14.0.jar azjars=$azjars,$hadoop_install_dir/share/hadoop/tools/lib/microsoft-windowsazure-storage-sdk-0.6.0.jar

  5. Skapa den lagrings behållare som du vill använda för data kopiering.Create the storage container that you want to use for data copy. Du bör också ange en mål katalog som en del av det här kommandot.You should also specify a destination directory as part of this command. Detta kan vara en vår mål katalog för mottagare i detta läge.This could be a dummy destination directory at this point.

    hadoop fs -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.<blob_service_endpoint>=<account_key> \
    -mkdir -p  wasb://<container_name>@<blob_service_endpoint>/<destination_directory>
    
    • Ersätt <blob_service_endpoint> plats hållaren med namnet på din BLOB service-slutpunkt.Replace the <blob_service_endpoint> placeholder with the name of your blob service endpoint.

    • Ersätt <account_key> plats hållaren med åtkomst nyckeln för ditt konto.Replace the <account_key> placeholder with the access key of your account.

    • Ersätt <container-name> plats hållaren med namnet på din behållare.Replace the <container-name> placeholder with the name of your container.

    • Ersätt <destination_directory> plats hållaren med namnet på den katalog som du vill kopiera data till.Replace the <destination_directory> placeholder with the name of the directory that you want to copy your data to.

  6. Kör ett List kommando för att se till att din behållare och katalog har skapats.Run a list command to ensure that your container and directory were created.

    hadoop fs -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.<blob_service_endpoint>=<account_key> \
    -ls -R  wasb://<container_name>@<blob_service_endpoint>/
    
    • Ersätt <blob_service_endpoint> plats hållaren med namnet på din BLOB service-slutpunkt.Replace the <blob_service_endpoint> placeholder with the name of your blob service endpoint.

    • Ersätt <account_key> plats hållaren med åtkomst nyckeln för ditt konto.Replace the <account_key> placeholder with the access key of your account.

    • Ersätt <container-name> plats hållaren med namnet på din behållare.Replace the <container-name> placeholder with the name of your container.

  7. Kopiera data från Hadoop HDFS till Data Box-enhet Blob Storage i den behållare som du skapade tidigare.Copy data from the Hadoop HDFS to Data Box Blob storage, into the container that you created earlier. Om den katalog som du kopierar till inte hittas skapas den automatiskt.If the directory that you are copying into is not found, the command automatically creates it.

    hadoop distcp \
    -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.<blob_service_endpoint<>=<account_key> \
    -filters <exclusion_filelist_file> \
    [-f filelist_file | /<source_directory> \
           wasb://<container_name>@<blob_service_endpoint>/<destination_directory>
    
    • Ersätt <blob_service_endpoint> plats hållaren med namnet på din BLOB service-slutpunkt.Replace the <blob_service_endpoint> placeholder with the name of your blob service endpoint.

    • Ersätt <account_key> plats hållaren med åtkomst nyckeln för ditt konto.Replace the <account_key> placeholder with the access key of your account.

    • Ersätt <container-name> plats hållaren med namnet på din behållare.Replace the <container-name> placeholder with the name of your container.

    • Ersätt <exlusion_filelist_file> plats hållaren med namnet på den fil som innehåller listan över fil undantag.Replace the <exlusion_filelist_file> placeholder with the name of the file that contains your list of file exclusions.

    • Ersätt <source_directory> plats hållaren med namnet på den katalog som innehåller de data som du vill kopiera.Replace the <source_directory> placeholder with the name of the directory that contains the data that you want to copy.

    • Ersätt <destination_directory> plats hållaren med namnet på den katalog som du vill kopiera data till.Replace the <destination_directory> placeholder with the name of the directory that you want to copy your data to.

    -libjarsAlternativet används för att göra hadoop-azure*.jar och beroende azure-storage*.jar filerna tillgängliga för distcp .The -libjars option is used to make the hadoop-azure*.jar and the dependent azure-storage*.jar files available to distcp. Detta kan redan inträffa i vissa kluster.This may already occur for some clusters.

    I följande exempel visas hur distcp kommandot används för att kopiera data.The following example shows how the distcp command is used to copy data.

     hadoop distcp \
    -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.mystorageaccount.blob.mydataboxno.microsoftdatabox.com=myaccountkey \
    -filter ./exclusions.lst -f /tmp/copylist1 -m 4 \
    /data/testfiles \
    wasb://hdfscontainer@mystorageaccount.blob.mydataboxno.microsoftdatabox.com/data
    

    Så här förbättrar du kopierings hastigheten:To improve the copy speed:

    • Försök att ändra antalet mappningar.Try changing the number of mappers. (Exemplet ovan använder m = 4 mappningar.)(The above example uses m = 4 mappers.)

    • Testa att köra flera distcp parallellt.Try running multiple distcp in parallel.

    • Kom ihåg att stora filer fungerar bättre än små filer.Remember that large files perform better than small files.

Leverera Data Box-enhet till MicrosoftShip the Data Box to Microsoft

Följ de här stegen för att förbereda och leverera Data Box-enhet-enheten till Microsoft.Follow these steps to prepare and ship the Data Box device to Microsoft.

  1. Börja med att Förbered för att skicka på data Box-enhet eller data Box Heavy.First, Prepare to ship on your Data Box or Data Box Heavy.

  2. När enhets förberedelsen är klar laddar du ned filerna.After the device preparation is complete, download the BOM files. Du kommer att använda dessa STRUKTURLISTE-eller manifest-filer senare för att kontrol lera de data som överförs till Azure.You will use these BOM or manifest files later to verify the data uploaded to Azure.

  3. Stäng av enheten och ta bort kablarna.Shut down the device and remove the cables.

  4. Schemalägg en upphämtning med UPS.Schedule a pickup with UPS.

  5. När Microsoft har tagit emot enheten är den ansluten till data Center nätverket och data överförs till det lagrings konto du angav när du placerade enhets ordningen.After Microsoft receives your device, it is connected to the data center network and the data is uploaded to the storage account you specified when you placed the device order. Verifiera mot de BOM-filer som alla dina data laddas upp till Azure.Verify against the BOM files that all your data is uploaded to Azure.

Tillämpa åtkomst behörigheter för filer och kataloger (endast Data Lake Storage Gen2)Apply access permissions to files and directories (Data Lake Storage Gen2 only)

Du har redan data till ditt Azure Storage-konto.You already have the data into your Azure Storage account. Nu ska du tillämpa åtkomst behörigheter för filer och kataloger.Now you will apply access permissions to files and directories.

Anteckning

Det här steget behövs bara om du använder Azure Data Lake Storage Gen2 som data lager.This step is needed only if you are using Azure Data Lake Storage Gen2 as your data store. Om du bara använder ett Blob Storage-konto utan hierarkiskt namn område som data lager kan du hoppa över det här avsnittet.If you are using just a blob storage account without hierarchical namespace as your data store, you can skip this section.

Skapa ett huvud namn för tjänsten för ditt Azure Data Lake Storage Gen2-kontoCreate a service principal for your Azure Data Lake Storage Gen2 account

Information om hur du skapar ett huvud namn för tjänsten finns i How to: använda portalen för att skapa ett Azure AD-program och tjänstens huvud namn som kan komma åt resurser.To create a service principal, see How to: Use the portal to create an Azure AD application and service principal that can access resources.

  • När du utför stegen i avsnittet Tilldela programmet till en roll i artikeln ska du tilldela rollen Storage Blob Data-deltagare till tjänstens huvudnamn.When performing the steps in the Assign the application to a role section of the article, make sure to assign the Storage Blob Data Contributor role to the service principal.

  • När du utför stegen i avsnittet Hämta värden för signering i artikeln sparar du program-ID: t och klientens hemliga värden i en textfil.When performing the steps in the Get values for signing in section of the article, save application ID, and client secret values into a text file. Du kommer att behöva dem snart.You'll need those soon.

Generera en lista över kopierade filer med deras behörigheterGenerate a list of copied files with their permissions

Kör det här kommandot från det lokala Hadoop-klustret:From the on-premises Hadoop cluster, run this command:


sudo -u hdfs ./copy-acls.sh -s /{hdfs_path} > ./filelist.json

Det här kommandot genererar en lista över kopierade filer med deras behörigheter.This command generates a list of copied files with their permissions.

Anteckning

Beroende på antalet filer i HDFS kan det ta lång tid att köra det här kommandot.Depending on the number of files in the HDFS, this command can take a long time to run.

Generera en lista med identiteter och mappa dem till Azure Active Directory (lägga till) identiteterGenerate a list of identities and map them to Azure Active Directory (ADD) identities

  1. Hämta copy-acls.py skriptet.Download the copy-acls.py script. Se skript för hämtnings hjälp och konfigurera Edge-noden för att köra dem i den här artikeln.See the Download helper scripts and set up your edge node to run them section of this article.

  2. Kör det här kommandot för att generera en lista över unika identiteter.Run this command to generate a list of unique identities.

    
    ./copy-acls.py -s ./filelist.json -i ./id_map.json -g
    

    Det här skriptet skapar en fil med namnet id_map.json som innehåller de identiteter som du behöver mappa till lägga till-baserade identiteter.This script generates a file named id_map.json that contains the identities that you need to map to ADD-based identities.

  3. Öppna id_map.json filen i en text redigerare.Open the id_map.json file in a text editor.

  4. För varje JSON-objekt som visas i filen uppdaterar du target attributet för antingen AAD-användarens huvud namn (UPN) eller ObjectId (OID) med lämplig mappad identitet.For each JSON object that appears in the file, update the target attribute of either an AAD User Principal Name (UPN) or ObjectId (OID), with the appropriate mapped identity. När du är klar sparar du filen.After you're done, save the file. Du behöver den här filen i nästa steg.You'll need this file in the next step.

Tillämpa behörigheter på kopierade filer och tillämpa identitets mappningarApply permissions to copied files and apply identity mappings

Kör det här kommandot för att tillämpa behörigheter på de data som du kopierade till Data Lake Storage Gen2-kontot:Run this command to apply permissions to the data that you copied into the Data Lake Storage Gen2 account:

./copy-acls.py -s ./filelist.json -i ./id_map.json  -A <storage-account-name> -C <container-name> --dest-spn-id <application-id>  --dest-spn-secret <client-secret>
  • Ersätt platshållaren <storage-account-name> med namnet på ditt lagringskonto.Replace the <storage-account-name> placeholder with the name of your storage account.

  • Ersätt <container-name> plats hållaren med namnet på din behållare.Replace the <container-name> placeholder with the name of your container.

  • Ersätt <application-id> <client-secret> plats hållarna och med det program-ID och den klient hemlighet som du samlade in när du skapade tjänstens huvud namn.Replace the <application-id> and <client-secret> placeholders with the application ID and client secret that you collected when you created the service principal.

Bilaga: dela data över flera Data Box-enhet enheterAppendix: Split data across multiple Data Box devices

Innan du flyttar dina data till en Data Box-enhet-enhet måste du ladda ned vissa hjälp skript, se till att dina data är ordnade för att få plats på en Data Box-enhet enhet och undanta alla onödiga filer.Before you move your data onto a Data Box device, you'll need to download some helper scripts, ensure that your data is organized to fit onto a Data Box device, and exclude any unnecessary files.

Hämta hjälp program skript och konfigurera Edge-noden för att köra demDownload helper scripts and set up your edge node to run them

  1. Kör följande kommando från din Edge-eller Head-nod i ditt lokala Hadoop-kluster:From your edge or head node of your on-premises Hadoop cluster, run this command:

    
    git clone https://github.com/jamesbak/databox-adls-loader.git
    cd databox-adls-loader
    

    Det här kommandot klonar GitHub-lagringsplatsen som innehåller hjälp skripten.This command clones the GitHub repository that contains the helper scripts.

  2. Kontrol lera att har JQ -paketet installerat på den lokala datorn.Make sure that have the jq package installed on your local computer.

    
    sudo apt-get install jq
    
  3. Installera python-paketet med begär Anden .Install the Requests python package.

    
    pip install requests
    
  4. Ange kör behörigheter för de skript som krävs.Set execute permissions on the required scripts.

    
    chmod +x *.py *.sh
    
    

Se till att dina data är ordnade så att de passar in på en Data Box-enhet enhetEnsure that your data is organized to fit onto a Data Box device

Om storleken på dina data överskrider storleken på en enskild Data Box-enhet enhet kan du dela upp filer i grupper som du kan lagra på flera Data Box-enhet-enheter.If the size of your data exceeds the size of a single Data Box device, you can split files up into groups that you can store onto multiple Data Box devices.

Om dina data inte överskrider storleken på en enkel Data Box-enhet enhet kan du fortsätta till nästa avsnitt.If your data doesn't exceed the size of a singe Data Box device, you can proceed to the next section.

  1. Med utökade behörigheter kör du generate-file-list skriptet som du laddade ned genom att följa anvisningarna i föregående avsnitt.With elevated permissions, run the generate-file-list script that you downloaded by following the guidance in the previous section.

    Här är en beskrivning av kommando parametrarna:Here's a description of the command parameters:

    sudo -u hdfs ./generate-file-list.py [-h] [-s DATABOX_SIZE] [-b FILELIST_BASENAME]
                     [-f LOG_CONFIG] [-l LOG_FILE]
                     [-v {DEBUG,INFO,WARNING,ERROR}]
                     path
    
    where:
    positional arguments:
    path                  The base HDFS path to process.
    
    optional arguments:
    -h, --help            show this help message and exit
    -s DATABOX_SIZE, --databox-size DATABOX_SIZE
                         The size of each Data Box in bytes.
    -b FILELIST_BASENAME, --filelist-basename FILELIST_BASENAME
                         The base name for the output filelists. Lists will be
                         named basename1, basename2, ... .
    -f LOG_CONFIG, --log-config LOG_CONFIG
                         The name of a configuration file for logging.
    -l LOG_FILE, --log-file LOG_FILE
                         Name of file to have log output written to (default is
                         stdout/stderr)
    -v {DEBUG,INFO,WARNING,ERROR}, --log-level {DEBUG,INFO,WARNING,ERROR}
                         Level of log information to output. Default is 'INFO'.
    
  2. Kopiera de genererade fil listorna till HDFS så att de är tillgängliga för DistCp -jobbet.Copy the generated file lists to HDFS so that they are accessible to the DistCp job.

    hadoop fs -copyFromLocal {filelist_pattern} /[hdfs directory]
    

Ta bort onödiga filerExclude unnecessary files

Du måste undanta vissa kataloger från DisCp-jobbet.You'll need to exclude some directories from the DisCp job. Du kan till exempel utelämna kataloger som innehåller tillståndsinformation som håller klustret igång.For example, exclude directories that contain state information that keep the cluster running.

I det lokala Hadoop-klustret där du planerar att initiera DistCp-jobbet skapar du en fil som anger listan över kataloger som du vill undanta.On the on-premises Hadoop cluster where you plan to initiate the DistCp job, create a file that specifies the list of directories that you want to exclude.

Här är ett exempel:Here's an example:

.*ranger/audit.*
.*/hbase/data/WALs.*

Nästa stegNext steps

Lär dig hur Data Lake Storage Gen2 fungerar med HDInsight-kluster.Learn how Data Lake Storage Gen2 works with HDInsight clusters. Se Använda Azure Data Lake Storage Gen2 med Azure HDInsight-kluster.See Use Azure Data Lake Storage Gen2 with Azure HDInsight clusters.