Sauvegarder et restaurer un schéma Ranger

Cette page explique comment sauvegarder et restaurer un schéma Ranger sur Dataproc avec des clusters Ranger.

Avant de commencer

  1. Créez un bucket si nécessaire. Vous devez avoir accès à un bucket Cloud Storage, que vous utiliserez pour stocker et restaurer un schéma Ranger.

    Pour créer un bucket :

    1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

      Accéder à la page "Buckets"

    2. Cliquez sur Créer un bucket.
    3. Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Pour passer à l'étape suivante, cliquez sur Continuer.
      • Pour nommer votre bucket, saisissez un nom qui répond aux exigences de dénomination des buckets.
      • Pour Choisir l'emplacement de stockage des données, procédez comme suit :
        • Sélectionnez une option de type d'emplacement.
        • Sélectionnez une option Location (Emplacement).
      • Pour Choisir une classe de stockage par défaut pour vos données, sélectionnez une classe de stockage.
      • Pour le champ Choisir comment contrôler l'accès aux objets, sélectionnez une option de Contrôle des accès.
      • Sous Paramètres avancés (facultatif), choisissez une méthode de chiffrement, une règle de conservation ou des libellés de bucket.
    4. Cliquez sur Create (Créer).

Sauvegarder un schéma Ranger

  1. Utilisez SSH pour vous connecter au nœud maître Dataproc du cluster avec le schéma Ranger. Exécutez les commandes de cette section dans la session de terminal SSH en cours d'exécution sur le nœud maître.

  2. Définissez les variables d'environnement.

    BUCKET_NAME=bucket name \
      MYSQL_PASSWORD=MySQL password
      SCHEMA_FILE=schema filename
    

    Remplacez les éléments suivants :

    • MySQL password: vous pouvez ouvrir /etc/mysql/my.cnf sur le nœud maître du cluster pour copier le mot de passe MySQL.

    • bucket name: nom du bucket Cloud Storage à utiliser pour stocker le schéma Ranger.

    • schema filename: spécifier un nom de fichier, sans l'extension de nom de fichier .sql. Le schéma Ranger est enregistré dans ce fichier sur le nœud maître, puis enregistré dans bucket name dans Cloud Storage .

  3. Arrêtez les services Hive.

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. Empêchez la modification des tables du schéma Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost';
    GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  5. Enregistrez le schéma Ranger dans un fichier .sql.

    mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql
    
  6. Réinitialisez les privilèges du Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost';
    GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  7. Redémarrez les services Hive et Ranger.

    sudo systemctl start hive-metastore.service
      sudo systemctl start hive-server2.service
      sudo systemctl restart ranger-admin.service
      sudo systemctl restart ranger-usersync.service
    
  8. Copiez le schéma Ranger dans Cloud Storage.

    gsutil cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
    

Restaurer un schéma Ranger

  1. Utilisez SSH pour vous connecter au nœud maître Dataproc du cluster, dans lequel vous allez restaurer le schéma du cluster. Exécutez les commandes de cette section dans la session de terminal SSH en cours d'exécution sur le nœud maître.

  2. Définissez les variables d'environnement.

    BUCKET_NAME=bucket name \
      MYSQL_PASSWORD=MySQL password
      SCHEMA_FILE=schema filename
    

    Remplacez les éléments suivants :

    • MySQL password: vous pouvez ouvrir /etc/mysql/my.cnf sur le nœud maître du cluster pour copier le mot de passe MySQL.

    • bucket name: nom du bucket Cloud Storage contenant le schéma Ranger enregistré.

    • schema filename: nom de fichier du schéma Ranger, sans l'extension de nom de fichier .sql, enregistré dans bucket name dans Cloud Storage.

  3. Arrêtez les services Hive.

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. Empêchez la modification des tables du schéma Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost';
    GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  5. Copiez le fichier de schéma Ranger .sql dans Cloud Storage sur le nœud maître du cluster.

    gsutil cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .
    
  6. Restaurer le schéma Ranger Cette étape écrase le contenu du schéma Ranger existant.

    mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql
    
  7. Réinitialisez les privilèges du Ranger.

    mysql -u root -p${MYSQL_PASSWORD}
    REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost';
    GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost';
    FLUSH PRIVILEGES;
    SHOW GRANTS FOR 'rangeradmin'@'localhost';
    exit;
    
  8. Mettre à jour les fichiers de configuration Ranger Remplacez l'hôte de base de données Ranger par un nouveau nom d'hôte de base de données dans les fichiers suivants avec les propriétés suivantes:

    File Propriété
    ranger-hdfs-security.xml ranger.plugin.hdfs.policy.rest.url
    ranger-yarn-security.xml ranger.plugin.yarn.policy.rest.url
  9. Redémarrez les services Hive et Ranger.

    sudo systemctl start hive-metastore.service
      sudo systemctl start hive-server2.service
      sudo systemctl restart ranger-admin.service
      sudo systemctl restart ranger-usersync.service