Migrálás a helyszíni HDFS-tárolóból az Azure Storage-ba az Azure Data Box használatával

Data Box-eszköz használatával adatokat migrálhat a Hadoop-fürt helyszíni HDFS-tárolójából az Azure Storage-ba (blobtárolóba vagy Data Lake Storage Gen2-be). A Data Box Disk, a 80 TB-os Data Box vagy a 770 TB-os Data Box Heavy közül választhat.

Ez a cikk a következő feladatok elvégzésében nyújt segítséget:

  • Felkészülés az adatok migrálására
  • Adatok másolása Data Box Diskre, Data Box-ra vagy Data Box Heavy-eszközre
  • Az eszköz visszaküldése a Microsoftnak
  • Hozzáférési engedélyek alkalmazása fájlokra és könyvtárakra (csak Data Lake Storage Gen2 esetén)

Előfeltételek

Ezekre a dolgokra van szüksége a migrálás befejezéséhez.

Ha készen áll, kezdjük.

Adatok másolása Data Box-eszközre

Ha az adatok egyetlen Data Box-eszközbe illeszkednek, akkor az adatokat a Data Box-eszközre másolja.

Ha az adatméret meghaladja a Data Box-eszköz kapacitását, az opcionális eljárással ossza fel az adatokat több Data Box-eszközre , majd hajtsa végre ezt a lépést.

Ha a helyszíni HDFS-tárolóból egy Data Box-eszközre szeretné másolni az adatokat, állítson be néhány dolgot, majd használja a DistCp eszközt.

Az alábbi lépéseket követve adatokat másolhat a Blob/Object Storage REST API-kkal a Data Box-eszközre. A REST API felülettel az eszköz HDFS-tárolóként jelenik meg a fürtön.

  1. Az adatok REST-en keresztüli másolása előtt azonosítsa a biztonsági és kapcsolati primitíveket a Data Box vagy a Data Box Heavy REST-felületéhez való csatlakozáshoz. Jelentkezzen be a Data Box helyi webes felhasználói felületére, és lépjen Csatlakozás és másolja a lapot. Az eszköz azure-tárfiókjain az Access beállításai alatt keresse meg és válassza a REST elemet.

  2. Az Access storage-fiókban és az adatok feltöltése párbeszédpanelen másolja ki a Blob szolgáltatásvégpontot és a Storage-fiókkulcsot. A blobszolgáltatás végpontjáról hagyja ki a https:// záró perjelet.

    Ebben az esetben a végpont a következő: https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/. A használt URI gazdagéprésze: mystorageaccount.blob.mydataboxno.microsoftdatabox.com. Megtudhatja például, hogyan Csatlakozás a REST-hez http-en keresztül.

  3. Adja hozzá a végpontot és a Data Box vagy a Data Box Heavy csomópont IP-címét minden csomóponthoz /etc/hosts .

    10.128.5.42  mystorageaccount.blob.mydataboxno.microsoftdatabox.com
    

    Ha más mechanizmust használ a DNS-hez, győződjön meg arról, hogy a Data Box-végpont feloldható.

  4. Állítsa a rendszerhéjváltozót azjars a jar-fájlok azure-storage helyérehadoop-azure. Ezeket a fájlokat a Hadoop telepítési könyvtárában találja.

    Ha meg szeretné állapítani, hogy léteznek-e ilyen fájlok, használja a következő parancsot: ls -l $<hadoop_install_dir>/share/hadoop/tools/lib/ | grep azure. Cserélje le a <hadoop_install_dir> helyőrzőt arra a könyvtárra, ahová a Hadoopot telepítette. Ügyeljen arra, hogy teljesen minősített elérési utakat használjon.

    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.jar

  5. Hozza létre az adatmásoláshoz használni kívánt tárolót. A parancs részeként meg kell adnia egy célkönyvtárat is. Ez lehet egy ál célkönyvtár ezen a ponton.

    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>
    
    • Cserélje le a <blob_service_endpoint> helyőrzőt a blobszolgáltatás végpontjának nevére.

    • Cserélje le a <account_key> helyőrzőt a fiók hozzáférési kulcsára.

    • Cserélje le a <container-name> helyőrzőt a tároló nevére.

    • Cserélje le a <destination_directory> helyőrzőt annak a könyvtárnak a nevére, amelybe az adatokat át szeretné másolni.

  6. Futtasson egy listaparancsot a tároló és a könyvtár létrehozásának ellenőrzéséhez.

    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>/
    
    • Cserélje le a <blob_service_endpoint> helyőrzőt a blobszolgáltatás végpontjának nevére.

    • Cserélje le a <account_key> helyőrzőt a fiók hozzáférési kulcsára.

    • Cserélje le a <container-name> helyőrzőt a tároló nevére.

  7. Másolja az adatokat a Hadoop HDFS-ből a Data Box Blob Storage-ba a korábban létrehozott tárolóba. Ha a másolandó könyvtár nem található, a parancs automatikusan létrehozza azt.

    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>
    
    • Cserélje le a <blob_service_endpoint> helyőrzőt a blobszolgáltatás végpontjának nevére.

    • Cserélje le a <account_key> helyőrzőt a fiók hozzáférési kulcsára.

    • Cserélje le a <container-name> helyőrzőt a tároló nevére.

    • Cserélje le a <exlusion_filelist_file> helyőrzőt annak a fájlnak a nevére, amely tartalmazza a fájlkizárások listáját.

    • Cserélje le a <source_directory> helyőrzőt a másolni kívánt adatokat tartalmazó könyvtár nevére.

    • Cserélje le a <destination_directory> helyőrzőt annak a könyvtárnak a nevére, amelybe az adatokat át szeretné másolni.

    Ezzel -libjars a beállítással elérhetővé distcpteheti a hadoop-azure*.jar függő azure-storage*.jar fájlokat. Ez egyes fürtök esetében már előfordulhat.

    Az alábbi példa bemutatja, hogyan használja a parancs az distcp adatok másolását.

     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
    

    A másolási sebesség javítása:

    • Próbálja meg módosítani a leképezők számát. (A leképezők alapértelmezett száma 20. A fenti példa = 4 mappert használ m .)

    • Próbálja ki -D fs.azure.concurrentRequestCount.out=<thread_number> . Cserélje le <thread_number> a leképezőnkénti szálak számát. A leképezők számának és a menetek per mapperenkénti m*<thread_number>számának szorzata nem haladhatja meg a 32-t.

    • Próbálkozzon több distcp párhuzamos futtatásával.

    • Ne feledje, hogy a nagy fájlok jobban teljesítenek, mint a kis fájlok.

    • Ha 200 GB-nál nagyobb fájlokkal rendelkezik, javasoljuk, hogy módosítsa a blokkméretet 100 MB-ra a következő paraméterekkel:

    hadoop distcp \ 
    -libjars $azjars \ 
    -Dfs.azure.write.request.size= 104857600 \ 
    -Dfs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \ 
    -Dfs.azure.account.key.<blob_service_endpoint<>=<account_key> \ 
    -strategy dynamic \ 
    -Dmapreduce.map.memory.mb=16384 \ 
    -Dfs.azure.concurrentRequestCount.out=8 \ 
    -Dmapreduce.map.java.opts=-Xmx8196m \ 
    -m 4 \ 
    -update \ 
    /data/bigfile wasb://hadoop@mystorageaccount.blob.core.windows.net/bigfile
    

A Data Box elküldése a Microsoftnak

Az alábbi lépéseket követve előkészíti és elküldi a Data Box-eszközt a Microsoftnak.

  1. Először készítse elő a Data Box vagy a Data Box Heavy szállítását.

  2. Az eszköz előkészítése után töltse le a BOM-fájlokat. Ezeket a BOM-fájlokat vagy jegyzékfájlokat később használhatja az Azure-ba feltöltött adatok ellenőrzéséhez.

  3. Állítsa le az eszközt, és távolítsa el a kábeleket.

  4. Egyeztessen egy csomagfelvételi időpontot a UPS-szel.

  5. Miután a Microsoft megkapta az eszközt, az az adatközpont hálózatához csatlakozik, és az adatok fel lesznek töltve az eszközrendelés leadásakor megadott tárfiókba. Ellenőrizze a BOM-fájlokon, hogy az összes adat feltöltve van-e az Azure-ba.

Hozzáférési engedélyek alkalmazása fájlokra és könyvtárakra (csak Data Lake Storage Gen2 esetén)

Már rendelkezik az adatokkal az Azure Storage-fiókjában. Most hozzáférési engedélyeket alkalmaz a fájlokra és könyvtárakra.

Megjegyzés:

Erre a lépésre csak akkor van szükség, ha az Azure Data Lake Storage Gen2-t használja adattárként. Ha csak egy blobtároló fiókot használ hierarchikus névtér nélkül adattárként, kihagyhatja ezt a szakaszt.

Szolgáltatásnév létrehozása az Azure Data Lake Storage Gen2-kompatibilis fiókjához

Szolgáltatásnév létrehozásához lásd : Útmutató: A portál használatával létrehozhat egy Olyan Microsoft Entra-alkalmazást és szolgáltatásnevet, amely hozzáfér az erőforrásokhoz.

Másolt fájlok listájának létrehozása az engedélyekkel

A helyszíni Hadoop-fürtben futtassa a következő parancsot:


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

Ez a parancs létrehozza az engedélyekkel rendelkező másolt fájlok listáját.

Megjegyzés:

A HDFS-fájlok számától függően ez a parancs hosszú ideig tarthat.

Identitások listájának létrehozása és a Microsoft Entra-identitások leképezése

  1. Töltse le a copy-acls.py szkriptet. Tekintse meg a letöltési segédszkripteket, és állítsa be az élcsomópontot a jelen cikk futtatásához .

  2. Futtassa ezt a parancsot az egyedi identitások listájának létrehozásához.

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

    Ez a szkript létrehoz egy fájlt id_map.json , amely tartalmazza azokat az identitásokat, amelyeket az ADD-alapú identitásokhoz kell leképeznie.

  3. Nyissa meg a id_map.json fájlt egy szövegszerkesztőben.

  4. A fájlban megjelenő minden egyes JSON-objektum esetében frissítse a target Microsoft Entra felhasználónév (UPN) vagy az ObjectId (OID) attribútumát a megfelelő leképezett identitással. Miután végzett, mentse a fájlt. A következő lépésben szüksége lesz erre a fájlra.

Engedélyek alkalmazása másolt fájlokra és identitásleképezések alkalmazása

Futtassa ezt a parancsot a Data Lake Storage Gen2-kompatibilis fiókba másolt adatokra vonatkozó engedélyek alkalmazásához:

./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>
  • Cserélje le a <storage-account-name> helyőrzőt a tárfiók nevére.

  • Cserélje le a <container-name> helyőrzőt a tároló nevére.

  • Cserélje le a <application-id> helyőrzőket <client-secret> az alkalmazásazonosítóra és az ügyfél titkos kódjára, amelyet a szolgáltatásnév létrehozásakor gyűjtött.

Függelék: Adatok felosztása több Data Box-eszközön

Mielőtt áthelyezi az adatokat egy Data Box-eszközre, le kell töltenie néhány segédszkriptet, gondoskodnia kell arról, hogy az adatok úgy legyenek rendszerezve, hogy illeszkedjenek a Data Box-eszközre, és kizárja a szükségtelen fájlokat.

Segédszkriptek letöltése és a peremhálózati csomópont beállítása a futtatásukhoz

  1. A helyszíni Hadoop-fürt peremhálózati vagy fő csomópontján futtassa a következő parancsot:

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

    Ez a parancs klónozza a segédszkripteket tartalmazó GitHub-adattárat.

  2. Győződjön meg arról, hogy a helyi számítógépen telepített jq csomag.

    
    sudo apt-get install jq
    
  3. Telepítse a Requests Python-csomagot.

    
    pip install requests
    
  4. Végrehajtási engedélyek beállítása a szükséges szkripteken.

    
    chmod +x *.py *.sh
    
    

Győződjön meg arról, hogy az adatok rendszerezése úgy van rendezve, hogy egy Data Box-eszközhöz illeszkedjen

Ha az adatok mérete meghaladja az egyetlen Data Box-eszköz méretét, feloszthatja a fájlokat olyan csoportokra, amelyeket több Data Box-eszközre is tárolhat.

Ha az adatok nem lépik túl az énekelt Data Box-eszköz méretét, folytassa a következő szakaszsal.

  1. Emelt szintű engedélyekkel futtassa a generate-file-list letöltött szkriptet az előző szakaszban található útmutatást követve.

    Íme a parancsparaméterek leírása:

    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. Másolja a létrehozott fájllistákat a HDFS-be, hogy azok elérhetők legyenek a DistCp-feladat számára.

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

Felesleges fájlok kizárása

Ki kell zárnia néhány könyvtárat a DisCp-feladatból. Zárja ki például a fürtöt futtató állapotinformációkat tartalmazó könyvtárakat.

Azon a helyszíni Hadoop-fürtön, ahol a DistCp-feladat elindítását tervezi, hozzon létre egy fájlt, amely megadja a kizárni kívánt könyvtárak listáját.

Here's an example:

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

Következő lépések

Ismerje meg, hogyan működik a Data Lake Storage Gen2 a HDInsight-fürtökkel. For more information, see Use Azure Data Lake Storage Gen2 with Azure HDInsight clusters.