Migrar do Big Data Appliance (BDA) ou do Big Data Cloud Service (BDCS)

Saiba como migrar do Oracle Big Data Appliance ou do Big Data Cloud Service para o Big Data Service

Observação

Recomendamos que, mesmo após a migração para o OCI, mantenha seus clusters do Big Data Appliance ou do Big Data Cloud Service (em um estado interrompido) por pelo menos três meses como backup.

Migrando Recursos com o Migrator WANdisco LiveData

Certifique-se de que a Porta 8020 seja aberta no destino.

Para obter informações sobre o WANdisco LiveData Migrator, selecione aqui.

Para migrar recursos usando o Migrador WANdisco LiveData, siga estas etapas:

  1. Instale o migrador LiveData em qualquer borda do cluster de origem executando os seguintes comandos:
    wget https://wandisco.com/downloads/livedata-migrator.sh
     
    chmod +x livedata-migrator.sh && ./livedata-migrator.sh
     
    service livedata-migrator status
    service hivemigrator status
    service livedata-ui status
  2. Depois que a instalação e a configuração do migrador LiveData forem concluídas, acesse a interface do usuário e crie sua conta de usuário. A URL da IU é a seguinte:
    http://<LDM-Installation-Host.com>:8081
  3. Faça o seguinte para migrar dados:
    1. Configure o sistema de arquivos de origem.
      Para adicionar um sistema de arquivos de origem, no painel do Migrador LiveData, faça o seguinte:
      1. No painel Produtos, selecione a instância relevante.
      2. Na página Configuração do Sistema de Arquivos, selecione Adicionar sistema de arquivos de origem.
    2. Configure o sistema de arquivos de destino.
      Para adicionar um sistema de arquivos de destino, no painel do Migrador LiveData, faça o seguinte:
      1. No painel Produtos, selecione a instância relevante.
      2. Na página Configuração do Sistema de Arquivos, selecione Adicionar sistema de arquivos de destino.
      3. Selecione o Apache Hadoop para o Destino como cluster do BDS e forneça o caminho do sistema de arquivos padrão. Certifique-se de que a origem e o destino se conectem ao destino na porta 8020.
    3. Crie um mapeamento de caminho.
      O mapeamento de caminho permite que os dados migrados sejam armazenados em um local padrão equivalente no destino. Para criar mapeamentos de caminho usando a IU, siga estas etapas:
      1. Na lista Produtos do painel de controle, selecione a instância do Migrador LiveData para a qual você deseja criar um mapeamento de caminho.
      2. No menu Migrações, selecione Mapeamentos de Caminho.
      3. No canto superior direito da interface, selecione o botão Adicionar Novo Caminho.
    4. Criar uma migração.
      As migrações transferem dados existentes da origem definida para um destino. Para criar uma nova migração na IU, siga estas etapas:
      1. Forneça um nome para a migração.
      2. Em seus sistemas de arquivos, selecione uma origem e um destino.
      3. Selecione o Caminho no seu sistema de arquivos de origem que deseja migrar. Use o browser da pasta e selecione o nome do caminho que deseja migrar. Selecione a pasta cinza ao lado de um nome de caminho para exibir seus subdiretórios.
  4. Migre os metadados.
    Para migrar os metadados, siga estas etapas:
    1. Conecte metastores.
      O Hive Migrator, que vem junto com o LiveData Migrator, permite transferir metadados de um metastore de origem para metastores de destino. Estabeleça conexão com metastores criando agentes de metadados locais ou remotos.
    2. Crie uma migração de metadados.
      Para criar uma migração de metadados, siga estas etapas:
      1. No painel de controle, selecione Adicionar uma migração do Hive.
      2. Forneça um nome para a migração.
      3. Selecione os agentes de origem e de destino.
      4. Crie um padrão de banco de dados e um padrão de tabela com base no Hive DDL que corresponda aos bancos de dados e às tabelas que você deseja migrar.

        Por exemplo, o uso de test* para o padrão do banco de dados corresponde a qualquer nome de banco de dados que comece com test, como test01, test02, test03.

      5. Selecione Criar.

Migrando Recursos com o BDR

Fazer Backup de Dados do BDA no Oracle Object Storage

Antes de fazer backup do cluster do Oracle Big Data Appliance, verifique o seguinte:

  • Você tem acesso de administrador ao cluster do Big Data Appliance.

    • Você precisa das credenciais de administrador do Cloudera Manager.

    • Você precisa de um usuário administrador do Hadoop com acesso total aos dados do HDFS e aos metadados do Hive que estão sendo submetidos a backup no Oracle Object Storage.

  • Configure o armazenamento de objetos do Oracle Cloud Infrastructure para o qual os dados do HDFS estão sendo copiados. Para obter mais informações, consulte Visão Geral do Serviço Object Storage.

  • Configure sua tenancy do Oracle Cloud Infrastructure com os seguintes detalhes

    • O administrador criou um usuário no Oracle Cloud Infrastructure e adicionou o usuário aos grupos necessários.

    • O usuário tem permissão e pode acessar a console do Oracle Cloud Infrastructure.

    • O usuário tem permissão e pode criar um bucket. Para obter mais informações, consulte Permitir que os administradores do serviço Object Storage gerenciem buckets e objetos em Políticas Comuns.

    • O usuário pode inspecionar a configuração do armazenamento de objetos do Oracle Cloud Infrastructure.

Para fazer backup de um cluster BDA, siga estas etapas:

  1. Crie um bucket no Oracle Object Storage.

    Os buckets são usados para armazenar e organizar dados. O bucket que você cria é o contêiner para os dados cujo backup é feito no Oracle Object Storage. Para obter mais informações sobre como gerenciar o Oracle Object Storage, consulte Visão Geral do Object Storage.

    1. Faça log-on na Console do OCI.
    2. Abra o menu de navegação e selecione Armazenamento. Em Object Storage, selecione Buckets.
    3. Selecione Criar Bucket.
    4. Crie um bucket com seu nome em letras maiúsculas. Por exemplo, BDA-MIGRATION. O conector S3 do Hadoop só funcionará se o nome do bucket estiver em letras maiúsculas. Crie o bucket na sua região home, independentemente de o cluster estar ou não em outra região. Para obter informações sobre buckets, consulte Colocando Dados no Serviço Object Storage.
  2. Crie uma chave secreta do cliente.
    É necessária uma chave secreta para estabelecer uma conexão segura do cluster do Hadoop com o Oracle Object Storage. A chave é criada para um usuário com privilégios para executar atualizações no bucket de destino.
    1. Faça log-on na Console do OCI.
    2. Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Usuários.
    3. Localize o usuário na lista e, em seguida, selecione o nome dele para exibir os detalhes.
    4. No lado esquerdo da página, selecione Chaves Secretas do Cliente.
    5. Selecione Gerar Chave Secreta.
    6. Informe uma descrição amigável para a chave (como mysecretkey) e selecione Gerar Chave Secreta.
    7. Copie a chave secreta imediatamente, pois você não pode recuperá-la após fechar a caixa de diálogo por motivos de segurança.
  3. Crie uma conta externa no Cloudera Manager para backup.

    Use a chave de acesso e a chave secreta para criar uma conta externa no Cloudera Manager. Certifique-se de usar as chaves para um usuário do Oracle Cloud Infrastructure que tenha acesso ao bucket de destino no Oracle Object Storage.

    1. Efetue log-on no Cloudera Manager no cluster de origem.
    2. Vá para Administração e selecione Contas Externas.
    3. Na guia Credenciais da AWS, selecione Adicionar Credenciais da Chave de Acesso e especifique o seguinte:
      • Nome: Especifique um nome para as credenciais. Por exemplo, oracle-credential.

      • ID da Chave de Acesso da AWS: Especifique um nome para a chave de acesso. Por exemplo, myaccesskey.

      • Chave Secreta da AWS: Digite o valor da chave secreta que você anotou quando criou uma chave secreta do cliente.

    4. Selecione Adicionar. A página Editar S3Guard é exibida. Não selecione Ativar S3Guard.
    5. Selecione Salvar.
  4. Atualize core-site.xml com as credenciais do serviço Object Storage.

    Aqui está uma amostra de atualizações de núcleo site.xml que devem ser adicionadas para conexão com o Armazenamento de objetos ao fazer backup dos dados. Depois de atualizar o core-site.xml nos clusters de origem e de destino, salve as alterações e reinicie o HDFS. Certifique-se de que o diretório de preparação chamado /tmp/s3-temp exista nos nós de cluster locais da origem e do destino.

    <property>
        <name>fs.s3a.secret.key</name>
        <value><SECRET-KEY></value>
      </property>
      <property>
        <name>fs.s3a.access.key</name>
        <value><ACCESS-KEY></value>
      </property>
      <property>
        <name>fs.s3a.bucket.<BUCKET-NAME>.endpoint</name>
        <value>https://<TENANCY>.compat.objectstorage.us-ashburn-1.oraclecloud.com</value>
      </property>
      <property>
        <name>fs.s3a.acl.default</name>
        <value>Private</value>
      </property>
      <property>
        <name>fs.s3a.path.style.access</name>
        <value>true</value>
      </property>
      <property>
        <name>fs.s3a.paging.maximum</name>
        <value>1000</value>
      </property>
      <property>
        <name>fs.s3a.buffer.dir</name>
        <value>/tmp/s3-temp</value>
      </property>
  5. Criar uma programação de replicação do Hive para backup.

    Para fazer backup de dados e metadados do Hive do cluster do Hadoop para o Oracle Object Storage, crie uma programação de replicação do Hive no Cloudera Manager.

    Antes de executar a replicação, recomendamos que você ative snapshots para o diretório /user/hive/warehouse. A ativação de snapshots garante que as alterações feitas nos arquivos durante o processo de replicação não causem falhas de replicação. Para obter mais informações, consulte Usando Snapshots com Replicação na documentação do Cloudera.

    Para criar uma programação de replicação do Hive, siga estas etapas:

    1. Efetue log-on no Cloudera Manager no cluster de origem.
    2. Ative instantâneos para o diretório /user/hive/warehouse.
      1. Na lista de serviços à esquerda, selecione HDFS.
      2. Selecione a guia File Browser (Navegador de arquivos) na parte superior da página.
      3. Navegue até o diretório /user/hive/warehouse.
      4. Ativar Snapshots.
    3. Crie a programação de replicação do Hive.
      1. Vá para Backup e selecione Programações de Replicação.
      2. Selecione Criar Programação e selecione Replicação do Hive.
      3. Especifique os detalhes a seguir para a programação de replicação:
        • Nome: Informe um nome. Por exemplo, hive-rep1.

        • Origem: Selecione a credencial definida anteriormente. Por exemplo, oracle-credential.

        • Destino: selecione Hive (nome do cluster).

        • Caminho Raiz da Nuvem: Especifique o local raiz no qual você deseja fazer backup dos dados. Por exemplo, s3a://BDCS-BACKUP/.

        • Destino do HDFS: Deixe em branco porque você está fazendo backup no armazenamento de objetos.
        • Bancos de Dados: Selecione Replicar Tudo.

        • Opção de Replicação: Selecione Metadados e Dados.

        • Programação: Selecione Imediata.

        • Executar como nome de usuário: Especifique um usuário com acesso aos dados e metadados que serão submetidos a backup. Normalmente, esse é um superusuário do Hadoop e um administrador do Sentry.

          Observação

          Se você não tiver um usuário com acesso aos dados e metadados necessários, crie um. Não use o superusuário hdfs para esta etapa.
          Observação

          Se você tiver a criptografia do Hadoop ativada, que armazena dados criptografados no HDFS, certifique-se de executá-la como o usuário que tem acesso de decriptografia à zona de criptografia.
    4. Selecione Save Schedule. Você pode monitorar a replicação na página Programações de Replicação.
  6. Revise a configuração do cluster de origem.

    Anote todas as definições de configuração personalizadas no cluster de origem. Talvez você precise fazer atualizações semelhantes ao seu cluster do Big Data Service. Isso inclui a instalação de produtos de terceiros, arquivos JAR adicionais, atualizações na configuração do Hadoop (como JARs auxiliares para Hive) e assim por diante.

    A API do Cloudera Manager permite que você veja todas as alterações feitas na configuração de cluster padrão. Faça download da implantação do cluster e revise a saída para entender as alterações que podem precisar ser aplicadas ao Big Data Service.

    Use o seguinte URL para fazer log-on no Cloudera Manager e fazer download da implantação de cluster:

    https://your-CM-host:7183/api/v18/cm/deployment

    Você obtém a configuração do cluster no formato JSON, listando todas as substituições feitas no cluster. Examine o arquivo e verifique se há alguma substituição para o padrão. Por exemplo, procure hive.aux.jars.path para ver a lista de JARs de aplicativos necessários para executar suas consultas do Hive. Copie esses arquivos para seu cluster do Big Data Service e faça uma atualização equivalente em hive.aux.jars.path.

Restaurar o Backup do BDA para o Cluster do Big Data Service

Antes de restaurar o cluster do Oracle Big Data Appliance para o Oracle Big Data Service, você deve ter o seguinte:

Restaurar o Backup do BDA

Para restaurar o backup do BDA, siga estas etapas:
  1. Faça log-on no Cloudera Manager no cluster do Big Data Service.
    1. Faça log-on em https://your-utility-node-1:7183, em que your-utility-node é o endereço IP público ou privado do nó do utilitário. Se a alta disponibilidade for usada, este será o primeiro nó do utilitário no cluster. Se a alta disponibilidade não for usada, este será o único nó do utilitário.
    2. Informe o nome de usuário admin e a senha especificada durante a criação do cluster.
  2. Crie uma conta externa no Cloudera Manager para restauração.

    Use a chave de acesso e a chave secreta para criar uma conta externa no Cloudera Manager. Você configura uma conta externa para permitir que o cluster acesse dados no Oracle Object Storage.

    Para criar uma conta externa, siga estas etapas:
    1. Faça log-on no Cloudera Manager no cluster do Oracle Big Data Service.
    2. Vá para Administração e selecione Contas Externas.
    3. Na guia Credenciais da AWS, selecione Adicionar Credenciais da Chave de Acesso e especifique o seguinte:
      • Nome: Especifique um nome para as credenciais. Por exemplo, oracle-credential.

      • ID da Chave de Acesso da AWS: Especifique um nome para a chave de acesso. Por exemplo, myaccesskey.

      • AWS Secret Key: Digite o valor da chave secreta gerado anteriormente quando você criou uma chave secreta do cliente.

    4. Selecione Adicionar. A página Editar S3Guard é exibida. Não selecione Ativar S3Guard.
    5. Selecione Salvar.
    6. Na página exibida, ative o acesso do cluster a S3:
      1. Selecione Ativar para o nome do cluster.
      2. Selecione a política de credencial Mais Segura e selecione Continuar.
      3. Na página Reiniciar Serviços Dependentes, selecione Reiniciar Agora e selecione Continuar. Os detalhes da reinicialização são exibidos. A reinicialização do cluster pode levar alguns minutos.
      4. Depois de reiniciar, selecione Continuar e, em seguida, selecione Concluir.
  3. Atualize o ponto final s3a.
    Observação

    Ignore esta etapa se já tiver atualizado o arquivo core-site.xml.

    O URI do ponto final permite que o cluster do Hadoop estabeleça conexão com o armazenamento de objetos que contém os dados de origem. Especifique este URI no Cloudera Manager.

    Para atualizar o ponto final, siga estas etapas:

    1. Faça log-on no Cloudera Manager no cluster do Oracle Big Data Service.
    2. Na lista de serviços à esquerda, selecione S3 Connector.
    3. Selecione a guia Configuração.
    4. Atualize a propriedade Ponto Final S3 Padrão com o seguinte:
      https://your-tenancy.compat.objectstorage.your-region.oraclecloud.com

      Por exemplo, https://oraclebigdatadb.compat.objectstorage.us-phoenix-1.oraclecloud.com

    5. Salve as alterações.
    6. Atualize o cluster:
      1. Vá para o cluster, selecione Ações, selecione Implantar Configuração do Cliente e confirme a ação.
      2. Quando concluir, selecione Fechar.
    7. Reinicie o cluster (Selecione Ações e selecione Reiniciar).
  4. Crie uma programação de replicação do HDFS para restauração.

    Restaure os dados do HDFS cujo backup é feito no Oracle Object Storage. Restaure os dados HDFS para o diretório raiz do sistema de arquivos HDFS a fim de espelhar a origem.

    Se o Hive tiver dados externos capturados no HDFS e não gerenciados pelo Hive, crie a programação de replicação do HDFS antes de criar a programação de replicação do Hive.

    Para criar uma programação de replicação do HDFS:

    1. Faça log-in no Cloudera Manager no cluster do Oracle Big Data Service.
    2. Crie uma programação de replicação do HDFS:
      1. Vá para Backup e selecione Programações de Replicação.
      2. Selecione Criar Programação e selecione Replicação HDFS.
      3. Especifique detalhes da programação de replicação:
        • Nome: Informe um nome. Por exemplo, hdfs-rep1.

        • Origem: Selecione a credencial definida anteriormente. Por exemplo, oracle-credential.

        • Caminho de Origem: Especifique o local raiz em que seus dados foram submetidos a backup. Por exemplo, s3a://BDA-BACKUP/.

        • Destino: selecione HDFS (nome do cluster).

        • Caminho de Destino: Informe /

        • Programação: Selecione Imediata.

        • Executar como Nome de Usuário: Especifique um usuário com acesso aos dados e metadados que estão sendo restaurados. Normalmente, esse é um superusuário do Hadoop e um administrador do Sentry.
          Observação

          Se você não tiver um usuário com acesso aos dados e metadados necessários, crie um. Não use o superusuário hdfs para esta etapa.
          Observação

          : Se a criptografia do Hadoop for usada, certifique-se de que o diretório de destino seja criado com as chaves apropriadas e que o comando seja executado como usuário que tenha acesso encrypt.
    3. Selecione Salvar Cronograma. Você pode monitorar a replicação na página Programações de Replicação.
  5. Crie uma programação de replicação do Hive para restauração.

    Para restaurar dados e metadados do Hive do Oracle Object Storage para o cluster do Hadoop, crie uma programação de replicação do Hive no Cloudera Manager.

    Para criar uma programação de replicação do Hive, siga estas etapas:

    1. Faça log-on no Cloudera Manager no cluster do Oracle Big Data Service.
    2. Crie a programação de replicação:
      1. Vá para Backup e selecione Programações de Replicação.
      2. Selecione Criar Programação e selecione Replicação do Hive.
      3. Especifique os detalhes da programação de replicação do Hive:
        • Nome: Informe um nome. Por exemplo, hive-rep1.

        • Origem: Especifique a credencial definida anteriormente. Por exemplo, oracle-credential.

        • Destino: selecione Hive (nome do cluster).

        • Caminho Raiz da Nuvem: Selecione o local raiz em que você fez backup dos dados. Por exemplo, s3a://BDA-BACKUP/.

        • Caminho de Destino do HDFS: Informe /

        • Bancos de Dados: Selecione Replicar Tudo.

        • Opção de Replicação: Selecione Metadados e Dados.

        • Programação: Selecione Imediata.

        • Executar como nome de usuário: especifique um usuário com acesso aos dados e metadados que serão restaurados. Normalmente, esse é um superusuário do Hadoop e do Hive e um administrador do Sentry.
          Observação

          Se você não tiver um usuário com acesso aos dados e metadados necessários, crie um. Não use o superusuário hdfs para esta etapa.
    3. Selecione Salvar Cronograma. Você pode monitorar a replicação na página Programações de Replicação.
Revisar Migrações de Serviço

Spark

Revise o job do spark e atualize-o com base nos novos detalhes do cluster.

Yarn

Para usar os mesmos nomes de fila do cluster de origem, faça o seguinte:
  • No cluster de origem, copie o Cloudera Manager. (Vá para YARN, selecione Configuração e selecione o conteúdo Alocações Justas do Scheduler (Implantadas) na mesma posição do cluster de destino.)
  • Se não for possível copiar, crie a fila manualmente. (No Cloudera Manager, vá para Clusters e selecione Configuração de pool de recursos dinâmicos.)

Sentry

  • Migre os dados do HDFS e os Metadados do Hive usando BDR, Wandisco ou Hadoop Distcp.
  • Para exportar os dados do sentry do banco de dados do sentry de origem e restaurar no banco de dados do sentry de Destino, você precisa da ferramenta de migração meta do Sentry. Consulte a nota Doc ID 2879665.1 do Suporte Técnico da Oracle para obter as ferramentas de migração meta do Sentry.

Migrando Recursos com a Ferramenta Distcp

Você também pode migrar dados e metadados do BDA e importá-los para o Big Data Service usando a ferramenta Distcp. Distcp é uma ferramenta de código aberto que pode ser usada para copiar grandes conjuntos de dados entre sistemas de arquivos distribuídos dentro e entre clusters.

Preparando o Cluster BDA ou BDCS

Para preparar o cluster BDA ou BDCS para exportação, siga estas etapas:

  1. Defina o serviço HDFS no modo de manutenção para bloquear alertas e operações em massa. Para obter mais informações, consulte Definir Modo de Manutenção para um Serviço.
  2. Conecte-se ao cluster BDA ou BDCS por meio do SSH como um usuário opc. Para obter mais informações, consulte Estabelecer Conexão com um Nó de Cluster por meio do SSH (Secure Shell).
  3. Execute os seguintes comandos para definir o serviço HDFS no modo de segurança:
    $ sudo su hdfs -c 'hdfs dfsadmin -safemode get'
    Safe mode is OFF
     
    $ sudo su hdfs -c 'hdfs dfsadmin -safemode enter'
    Safe mode is ON
  4. Faça o seguinte:
    1. Como usuário root, copie sua chave privada do OCI (por exemplo: ~/.oci/oci_api_key.pem) para o diretório /home/opc/.oci no cluster BDA ou BDCS.
      sudo su -
      cp <private-key> /home/opc/.oci/oci_api_key.pem
    2. Altere as permissões do arquivo de chaves privadas para somente leitura.
      chmod 444 /home/opc/.oci/oci_api_key.pem
    3. Altere a propriedade do arquivo de chave PEM privada para o usuário hdfs.
      chown -R hdfs:hdfs /home/opc/.oci/oci_api_key.pem
    4. Crie um diretório chamado data que o usuário do HDFS possa acessar.
    5. Copie a chave privada do OCI do diretório /home/opc/.oci para o diretório /data.
      cp /home/opc/.oci/oci_api_key.pem /data
    6. Como usuário root, altere o arquivo de chave privada no diretório /data para somente leitura.
      chmod 444 /data/oci_api_key.pem
    Se o cluster BDA ou BDCS tiver vários nós, certifique-se de que a chave privada do OCI esteja disponível em todos os nós com o mesmo caminho. Você pode usar o usuário otools para copiar arquivos para todos os nós. No entanto, verifique se o arquivo pode ser lido por otools. Depois de copiar os arquivos para todos os nós, defina as permissões originais de volta.

    Para instalar a chave privada do OCI em todos os hosts, como usuário otools, execute os seguintes comandos na sequência fornecida para cada host:

    sudo su - otools
    ssh <hostname> sudo mkdir /data
    scp oci_api_key.pem <hostname>:/data
    ssh <hostname> sudo chown hdfs:hdfs /data/oci_api_key.pem
    ssh <hostname> sudo chmod 444 /data/oci_api_key.pem
Exportando Dados do HDFS

Para exportar dados do HDFS, siga estas etapas:

  1. Configure a ferramenta distcp. A ferramenta distcp requer um driver oci-hdfs atualizado. Portanto, você deve baixar o driver para o host onde a ferramenta distcp precisa ser executada. Para fazer download do driver, use os seguintes comandos:
    1. Execute os comandos a seguir para criar um diretório chamado hdfsjar em /data e para navegar até o diretório.
      mkdir -p /data/hdfsjars
      cd /data/hdfsjars
    2. Faça download do oci-hdfs.zip.
      wget https://github.com/oracle/oci-hdfs-connector/releases/download/v2.7.7.0/oci-hdfs.zip
    3. Extraia o arquivo oci-hdfs.zip.
      1. Descompacte o arquivo no diretório /data/hdfsjars/lib.
        unzip oci-hdfs.zip lib/oci-hdfs-full-2.7.7.0.jar
      2. Mova o lib/oci-hdfs-full-2.7.7.0.jar para o diretório de trabalho atual, ou seja, /data/hdfsjar.
        mv lib/oci-hdfs-full-2.7.7.0.jar .
      3. Remova o diretório lib e o arquivo oci-hdfs.zip.
        rm -rf lib/ oci-hdfs.zip
  2. Defina as variáveis de ambiente para apontar para oci-hdfs-full-2.7.7.0.jar.
    export LIBJARS=/data/hdfsjars/oci-hdfs-full-2.7.7.0.jar
  3. (Opcional) Configure o proxy definindo a seguinte variável com sun.net.inetaddr.ttl.
    export DISTCP_PROXY_OPTS="-Dhttps.proxyHost=<proxy-host> -Dhttps.proxyPort=<proxy-port> -Dsun.net.inetaddr.ttl=60"
    
  4. Teste a configuração listando o conteúdo no contêiner de armazenamento do OCI.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
    -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
    -Dfs.oci.client.auth.passphrase=<passphrase> \
    -Dfs.oci.client.auth.tenantId=<OCID forTenancy> \
    -Dfs.oci.client.auth.userId=<OCID forUser> \
    -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
    -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport> \
    -ls oci://<bucket>@<namespace>/
  5. Para copiar todos os dados do HDFS em um diretório específico no bucket do OCI Object Store, crie um diretório no bucket.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
          -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
          -Dfs.oci.client.auth.passphrase=<passphrase> \
          -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
          -Dfs.oci.client.auth.userId=<OCID for User> \
          -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
          -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport>  \
          -mkdir oci://<bucket>@<namespace>/<Dir>
  6. Execute os comandos a seguir para verificar se o diretório foi criado no Armazenamento de Objetos.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
          -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
          -Dfs.oci.client.auth.passphrase=<passphrase> \
          -Dfs.oci.client.auth.tenantId=<OCID forTenancy> \
          -Dfs.oci.client.auth.userId=<OCID forUser> \
          -Dfs.oci.client.hostname=<HostName>\
          -ls oci://<bucket>@<namespace>/
  7. Siga um destes procedimentos para exportar dados do HDFS:
    • Use hadoop fs -cp para exportar dados do HDFS de um único cluster de nós para o Armazenamento de Objetos como um usuário do HDFS.
      sudo su - hdfs
      hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
            -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
            -Dfs.oci.client.auth.passphrase=<passphrase> \
            -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
            -Dfs.oci.client.auth.userId=<OCID for User> \
            -Dfs.oci.client.hostname=<HostName> \
            -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport>  \
            -cp <hdfs-dir-to-copy> oci://<bucket>@<namespace>/<dir>/
    • Use hadoop distcp para exportar dados do HDFS de clusters com vários nós para o Armazenamento de Objetos. Valide-o em relação ao diretório específico. Por exemplo, use /user/oozie/ para <hdfs-dir-to-copy> no comando a seguir e, em seguida, execute-o para todo o HDFS (/).
      hadoop distcp -libjars ${LIBJARS} \
      -Dfs.client.socket-timeout=3000000
      -Dfs.oci.client.auth.fingerprint=<fingerprint> \
      -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
      -Dfs.oci.client.auth.passphrase=<passphrase> \
      -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
      -Dfs.oci.client.auth.userId=<OCID for User> \
      -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
      -Dfs.oci.client.multipart.allowed=true \
      -Dfs.oci.client.proxy.uri=<http://proxy-host>:port \
      -Dmapreduce.map.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.reduce.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.task.timeout=6000000 \
      -skipcrccheck -m 40 -bandwidth 500 \
      -update -strategy dynamic -i <hdfs-dir-to-copy> oci://<bucket>@<namespace>/<exportedHdfsDir>/
  8. Verifique o conteúdo do Armazenamento de Objetos.
    hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
         -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
         -Dfs.oci.client.auth.passphrase=<passphrase> \
         -Dfs.oci.client.auth.tenantId=<OCID forTenancy> \
         -Dfs.oci.client.auth.userId=<OCID forUser> \
         -Dfs.oci.client.hostname=<HostName>\
         -ls oci://<bucket>@<namespace>/<dir>
  9. Crie arquivos de metadados e exporte-os para o Armazenamento de Objetos.
    1. Faça download do seguinte arquivo zip:

      arquivos/create_metadata.zip

    2. Descompacte o arquivo e coloque create_metadata.sh e create_permissions.py em um diretório.
    3. Execute o seguinte script shell. Esse script cria vários arquivos de metadados e os coloca no diretório /metadata no HDFS.
      bash create_metadata.sh <hdfs_directory>
    4. Exporte os arquivos de metadados para o Object Store.
      hadoop distcp -Dfs.client.socket-timeout=3000000 \
          -Dfs.oci.client.auth.fingerprint=67:3a:86:d2:8b:61:b0:fd:c4:21:58:92:5a:d2:e8:83 \
          -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
          -Dfs.oci.client.auth.tenantId=ocid1.tenancy.oc1..aaaaaaaajh6gxgbuudok7odjpwe5wyv2iq74ihhac5lyulxdgrhsssxc4hna \
          -Dfs.oci.client.auth.userId=ocid1.user.oc1..aaaaaaaaeslrldhdvniuue3dsi7p3xblpfpsluxtx2g6txg5iiukfhzg77ua \
          -Dfs.oci.client.hostname=https://objectstorage.us-ashburn-1.oraclecloud.com/ \
          -Dfs.oci.client.multipart.allowed=true -Dmapreduce.task.timeout=6000000  \
          -skipcrccheck -m 20 -bandwidth 100 -update -strategy dynamic -i /metadata/Metadata* oci://<bucket>@<namespace>/metadata
      
Exportando Dados Incrementalmente do HDFS

Migre dados do HDFS de forma incremental usando o distcp para enviar dados da origem para o destino após um intervalo de tempo e uma adição, atualização ou exclusão nos dados de origem.

Observação

  • Certifique-se de que o nome do snapshot no cluster de origem e de destino seja o mesmo.
  • Não exclua/altere os dados do HDFS no cluster de destino. Isso pode causar erros mencionados na próxima seção.
  1. Identifique o diretório pai de origem e destino.
  2. Permitir snapshots no diretório de origem:
    hdfs dfsadmin -allowSnapshot /data/a
  3. Crie um Snapshot de /data/a:
    hdfs dfs -createSnapshot /data/a s1
  4. Crie conteúdo no diretório de origem /data/a que deve ser replicado para /data/a_target:
  5. Faça um novo snapshot de /data/a:
    hdfs dfs -createSnapshot /data/a s2
  6. (Opcional) Verifique as diferenças entre os dois instantâneos:
    hdfs snapshotDiff /data/a s1 s2
  7. Migre as alterações para /data/a_target:
    hadoop distcp -diff s1 s2 -update /data/a /data/a_target
  8. Crie um snapshot correspondente em /data/a_target:
    hdfs dfs -createSnapshot /data/a_target s2
Exportando Metadados do Hive

Para exportar metadados do Hive, siga estas etapas:

  1. Obtenha o caminho HDFS do Big Data Service de destino para atualizar hive_migrate.properties.
    1. Para recuperar o TARGET_HDFS_PATH, faça log-on no cluster do BDS de destino usando o Bastion host.
      cat /etc/hadoop/conf/core-site.xml | grep -A1 "fs.defaultFS"
    2. Anote o TARGET_HDFS_PATH.

  2. Atualize TARGET_HDFS_PATH e TARGET_OBJECTSTORE_PATH no script hive_migrate.properties para o local em que os dados da tabela do Hive estão disponíveis após a migração. Você não precisa escapar das barras no caminho.
    #!/bin/bash
    #
    # Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
    # Properties file to overide
    #
    # This file will be sourced by the generate_target_ddl_from_source.sh
    # to customize/overide properties
    # SRC_HDFS_PATH and SRC_OBJECTSTORE_PATH will be derived automatically from the cluster.
    # You will be customizing
    #     RUNDIR , TARGET_HDFS_PATH, TARGET_OBJECTSTORE_PATH
    #
    # ------------------------------------------------------------
    # Location to hold intermediate and final scripts to be generated.
    # You must have write privileges on this directory
    export RUNDIR=/tmp/hivemigrate
     
    # ------------------------------------------------------------
    # Specify current hive.metastore.warehouse.dir from Hive Config.
    #
    export SRC_WAREHOUSE_DIR=/apps/hive/warehouse
     
     
    # ------------------------------------------------------------
    # Modify expected target BDS hdfs path in your hive DDL script
    #
    export TARGET_HDFS_PATH=hdfs://testbdmn0.bmbdcsad1.bmbdcs.oraclevcn.com:8020/warehouse/tablespace/external/hive
     
     
    # ------------------------------------------------------------
    # Modify expected target BDS Object Store path in your hive DDL script
    #
    export TARGET_OBJECTSTORE_PATH=oci://bdc2odh@bdsdevcluster/warehouse
  3. Conecte-se ao cluster BDA ou BDCS por meio de ssh como um usuário opc. Para obter mais informações, consulte Estabelecer Conexão com um Nó de Cluster por meio do SSH (Secure Shell).
  4. Crie um script chamado generate_target_ddl_from_source.sh no diretório home ~opc com o código a seguir. Esse script gera as instruções DDL que você pode executar no cluster de destino para criar os metadados hive.
    #!/bin/bash
    #
    # Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
    #
    # Script to generate queries that can be run on a target cluster for hive metadata migration.
    #
    # Usage :
    #   sudo generate_target_ddl_from_source.sh
    # The generated scripts are available under /tmp/hivemigrate/generatedSQL_target_Hive
    #  - 1_CREATE_DB.hql
    #  - 2_CREATE_TABLE.hql
    #  - 3_ADD_PARTITION.hql
    #
    # These scripts can be run on a target cluster AS IS to create hive metadata that matches the source..
    #
     
     
    #------------------------------------------------------------
    # Set Environment
    detect_basedir()
    {
      DIRNAME=`dirname $0`
      BASENAME=`basename $0`
      BASEDIR=$(cd "$DIRNAME" ; pwd)
    }
    detect_basedir
     
     
    #------------------------------------------------------------
    # Initilize any default config properties that has been overriden in
    #     ${BASEDIR}/hive_migrate.properties
    # DO NOT MODIFY. PLEASE OVERRIDE ANY PARAMETER IN ${BASEDIR}/hive_migrate.properties
    export RUNDIR=/tmp/hivemigrate
    export TARGET_HDFS_PATH=hdfs://Some_cluster_name/tmp
    export TARGET_OBJECTSTORE_PATH=oci://mybucket@mytenancy/tmp/
    #
    #------------------------------------------------------------
    if [ -f ${BASEDIR}/hive_migrate.properties ]; then
        echo -e "*** Sourcing Overide proprties file ${BASEDIR}/hive_migrate.properties"
        source ${BASEDIR}/hive_migrate.properties
    else
        echo -e "*** Warning : Missing Overide proprties file ${BASEDIR}/hive_migrate.properties"
        echo -e "*** Continue with default settings\n"
    fi
    #
    usage()
    {
      echo -e "Usage : ${BASENAME} \n"
      echo -e "**  This script is to be run on your source cluster and can be run as many times as you wish."
      echo -e "**  It cleans up any older generated scripts located in ${RUNDIR} before starting \n"
      echo -e "**  The generated output hive query scripts will be available in RUNDIR: ${RUNDIR} ...\n"
      echo -e "*** Modify RUNDIR if you would like to override\n"
      echo -e "**  Currently TARGET_HDFS_PATH is set to hdfs://Some_cluster_name/"
      echo -e "*** Modify TARGET_HDFS_PATH to match your hdfs path in Hive DDL \n"
    }
     
     
    # Make sure only root can run our script
    if [ "$(id -u)" != "0" ]; then
       echo -e "ERROR: *** This script ${BASENAME} must be run as root" 1>&2
       usage
       exit 1
    fi
     
    if [ "$1" != "" ]; then
       usage
       exit 1
    fi
     
     
    #------------------------------------------------------------
    #
    # Figure out the HDFS Path in source cluster.
    # Depending on HA or non-HA cluster the hdfs path syntax is different
    if ! grep -q "dfs.ha.namenodes.mycluster" /etc/bdcsce/conf/blueprint/*.json
    then
        echo -e "INFO:**  Source: Non-HA cluster..."
        nn_fqdn=$(hostname -f)
        SRC_HDFS_PATH=hdfs://${nn_fqdn}:8020${SRC_WAREHOUSE_DIR}
    else
        echo -e 'INFO:**  Source: HA cluster...'
        SRC_HDFS_PATH=hdfs://mycluster${SRC_WAREHOUSE_DIR}
    fi
    echo -e "INFO:**  Assumed source hdfspath : $SRC_HDFS_PATH"
     
     
    #------------------------------------------------------------
    #
    # Figureout Source Object source Patch
    source /etc/bdcsce/conf/datasources.properties
    export SRC_OBJECTSTORE_PATH=${bdcsce_default_objectstore_url}
     
     
     
     
    #------------------------------------------------------------
    # Step-1 : Setup/Clean source and target directories to hold intermediate and final scripts
     
     
    #Path to store intermediate hive queries
    outputSourcePath=${RUNDIR}/generatedSQL_source_Hive
    rm -rf $outputSourcePath
    mkdir -m 777 -p $outputSourcePath
     
     
    #Path to store final target hive queries to be used at target system
    outputTargetPath=${RUNDIR}/generatedSQL_target_Hive
    rm -rf $outputTargetPath
    mkdir -m 777 -p $outputTargetPath
     
     
    #------------------------------------------------------------
    # Step-2 : Extract Create DB statements from MetaStore to Run in Target Hive Installation.
    #
    mysql -Dhive --skip-column-names -e"
     
     
    -- Query for creating databases
    SELECT
        CONCAT('CREATE DATABASE IF NOT EXISTS ',
                D.NAME,
                '\;') AS CREATE_DB_STATEMENTS
    FROM
        DBS D;" > $outputTargetPath/1_CREATE_DB.hql
     
     
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error:** - MySQL Error code is $ret while trying to extract DB creation scripts"
        exit $ret
    else
        echo -e "**  DB Creation extraction script $outputTargetPath/1_CREATE_DB.hql completed successfully"
    fi
     
     
    #------------------------------------------------------------
    # Extract Show Create Table statements from MetaStore to Run in Source Hive Installation.
     
     
    mysql -Dhive --skip-column-names -e"
     
     
    -- Query for Creating Show CT Statements to be run in the Source Hive Installation
    SELECT
        CONCAT('USE ', D.name, '\; ','SHOW CREATE TABLE ',
                T.tbl_name,
                '\;') AS SHOW_CT_STATEMENTS
    FROM
        TBLS T
            INNER JOIN
        DBS D ON D.DB_ID = T.DB_ID
    WHERE
        T.TBL_TYPE != 'INDEX_TABLE';" > $outputSourcePath/1_SHOW_CREATE_TABLE.hql
     
     
     
     
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error:** - MySQL Error code is $ret while trying to extract SHOW CT scripts"
        exit $ret
    else
        echo -e "\n\n"
        echo -e "**  SHOW CREATE TABLE extraction script $outputSourcePath/1_SHOW_CREATE_TABLE.hql completed successfully"
    fi
     
     
     
     
    #------------------------------------------------------------
    # Run Show Create Table Command on Source Hive Installation to create target Hive CT scripts
    echo -e "**  Running show create table in source cluster"
    echo -e "**  This may take a while...Depends on hive metadata size\n\n"
     
     
     
     
    sudo -u hive hive -f $outputSourcePath/1_SHOW_CREATE_TABLE.hql > $outputTargetPath/2_CREATE_TABLE_temp.hql
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error - Hive Error code is $ret while trying to execute SHOW CT scripts"
        exit $ret
    else
        echo -e "\n\n"
        echo -e "**  SHOW CT execution script $outputTargetPath/2_CREATE_TABLE_temp.hql completed successfully"
    fi
     
     
    # Add semicolon suffix ; after CT statements
    echo -e "USE default;" > $outputTargetPath/2_CREATE_TABLE.hql
    cat $outputTargetPath/2_CREATE_TABLE_temp.hql | tr '\n' '\f' | sed -e 's/)\fCREATE/);\fCREATE/g'  | tr '\f' '\n' >> $outputTargetPath/2_CREATE_TABLE.hql
    echo -e ";">>$outputTargetPath/2_CREATE_TABLE.hql
    rm -rf $outputTargetPath/2_CREATE_TABLE_temp.hql
    echo -e "**  Create Table execution script $outputTargetPath/2_CREATE_TABLE.hql created successfully"
     
    #------------------------------------------------------------
    # Convert Managed Table to External table for HIVE 3
    #
    #echo -e "INFO:** Convering Managed Table to External table for HIVE 3 in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
    #sed -i "s/^CREATE TABLE/CREATE EXTERNAL TABLE/g" $outputTargetPath/2_CREATE_TABLE.hql
     
    #------------------------------------------------------------
    # Replace HDFS Path
    #
    echo -e "INFO:** Replacing $SRC_HDFS_PATH with $TARGET_HDFS_PATH in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
    sed -i "s,$SRC_HDFS_PATH,$TARGET_HDFS_PATH,g" $outputTargetPath/2_CREATE_TABLE.hql
     
    #------------------------------------------------------------
    # Replace Target Object Store Path
    #
    echo -e "INFO:** Replacing $SRC_OBJECTSTORE_PATH with $TARGET_OBJECTSTORE_PATH in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
    sed -i "s,$SRC_OBJECTSTORE_PATH,$TARGET_OBJECTSTORE_PATH,g" $outputTargetPath/2_CREATE_TABLE.hql
     
     
    echo -e "INFO:** Replaced $SRC_OBJECTSTORE_PATH with $TARGET_OBJECTSTORE_PATH in CT $outputTargetPath/2_CREATE_TABLE.hql scripts"
     
     
     
    #------------------------------------------------------------
    # Extract Add Partition statements if any from MetaStore to Run in Target Hive Installation.
     
     
    mysql -Dhive --skip-column-names -e"
    -- Query to create add partition scripts to run in target Hive Installation
     
     
     
     
    SET @oldNameNode = '$SRC_HDFS_PATH'; -- Old NameNode address
    SET @newNameNode = '$TARGET_HDFS_PATH'; -- New NameNode address
     
     
     
     
    SELECT
        REPLACE(add_partition_query,
            @oldNameNode,
            @newNameNode) AS add_partition_query
     
     
     
     
    FROM
            (SELECT
                    CONCAT('USE ', D.name, '\; ', ' ALTER TABLE ', T.TBL_NAME, ' ADD PARTITION (', GROUP_CONCAT(PK.PKEY_NAME, '=', '\'', PKV.PART_KEY_VAL, '\''
                        ORDER BY PK.INTEGER_IDX), ') LOCATION \'', S.location, '\'\; ') AS add_partition_query
        FROM
            TBLS T
        INNER JOIN DBS D ON T.DB_ID = D.DB_ID
        INNER JOIN PARTITION_KEYS PK ON T.TBL_ID = PK.TBL_ID
        INNER JOIN PARTITIONS P ON P.TBL_ID = T.TBL_ID
        INNER JOIN PARTITION_KEY_VALS PKV ON P.PART_ID = PKV.PART_ID
            AND PK.INTEGER_IDX = PKV.INTEGER_IDX
        INNER JOIN SDS S ON P.SD_ID = S.SD_ID
        GROUP BY P.PART_ID
        ORDER BY D.name) alias1;" > $outputTargetPath/3_ADD_PARTITION.hql
    ret=$?
    if [ $ret -ne 0 ];
    then
        echo -e "Error - MySQL Error code is $ret while trying to extract ADD PARTITION scripts"
        exit $ret
    else
        echo -e "\n\n"
        echo -e "**  ADD PARTITION extraction script $outputTargetPath/3_ADD_PARTITION.hql completed successfully"
    fi
     
     
     
     
    echo -e "\n\n"
    echo -e "INFO: ** Here are your Target installation scripts"
    ls -al $outputTargetPath/*
    echo -e "\n\n"
    echo -e "INFO: ** Run these hql scripts on your Target hive shell..."
     
     
    exit 0
  5. Como usuário raiz, execute o script generate_target_ddl_from_source.sh.
    sudo ./generate_target_ddl_from_source.sh
    Os seguintes scripts são gerados em /tmp/hivemigrate/generatedSQL_target_Hive:
    • 1_CREATE_DB.hql
    • 2_CREATE_TABLE.hql
    • 3_ADD_PARTITION.hql

    Durante a importação, você copia esses scripts de /tmp/hivemigrate/generatedSQL_target_Hive para um nó mestre no cluster do BDS de destino com acesso de raiz e banco de dados.

Importando Recursos para o Big Data Service

Agora você importa os dados e metadados exportados para o Big Data Service.

Pré-requisitos
Antes de importar recursos, faça o seguinte:
  1. Configure um novo ambiente de destino no Big Data Service com a mesma versão do BDA ou BDCS Hadoop (Hadoop 2.7.x) do cluster de origem.
    Observação

    Observação:
      • Defina o cluster do Big Data Service no OCI com o mesmo tamanho do cluster BDA ou BDCS de origem. No entanto, você deve revisar suas necessidades de computação e armazenamento antes de decidir o tamanho do cluster de destino.
      • Para saber as formas de VM do Oracle Cloud Infrastructure, consulte Formas do Serviço Compute. O BDA ou BDCS não suporta todas as formas.
      • Se algum software diferente da pilha BDA ou BDCS estiver instalado no sistema de origem usando o script de inicialização ou algum outro método, você deverá instalar e manter esse software no sistema de destino também.
  2. Copie o arquivo de chave privada PEM (oci_api_key.pem) para todos os nós do cluster do Big Data Service e defina as permissões apropriadas.
  3. Exporte os artefatos do cluster BDA ou BDCS de origem.
Importando Dados para o HDFS

Para importar dados para o HDFS, siga estas etapas:

  1. Conecte-se ao cluster do Big Data Service (BDS) por meio do SSH como um usuário opc.
    ssh -i id_rsa <private_node_ip>
  2. Determine o local do HDFS onde os dados precisam ser armazenados.
    
    grep -A1 -i fs.defaultFS /etc/hadoop/conf/core-site.xml
  3. Como usuário do HDFS, mova os dados do Armazenamento de Objetos para o HDFS de destino.
    1. Use hadoop fs -cp para importar dados do HDFS do Armazenamento de Objetos para um cluster do BDS de destino como usuário do HDFS.
      sudo su - hdfs
       
      hadoop fs -Dfs.oci.client.auth.fingerprint=<fingerprint> \
      -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
      -Dfs.oci.client.auth.passphrase=<passphrase> \
      -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
      -Dfs.oci.client.auth.userId=<OCID for User> \
      -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
      -Dfs.oci.client.proxy.uri=http://<proxyhost>:<proxyport> \
      -cp oci://<bucket>@<tenancy>/<dir>/ <hdfs-dir-to-copy>
    2. Use hadoop distcp para importar dados do HDFS do Armazenamento de Objetos para um cluster do BDS com vários nós. Valide-o em um diretório específico. Por exemplo, use /user/oozie para <hdfs-dir-to-copy> no comando a seguir primeiro e, em seguida, execute-o para todo o HDFS (/).
      hadoop distcp -libjars ${LIBJARS} \
      -Dfs.client.socket-timeout=3000000
      -Dfs.oci.client.auth.fingerprint=<fingerprint> \
      -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
      -Dfs.oci.client.auth.passphrase=<passphrase> \
      -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
      -Dfs.oci.client.auth.userId=<OCID for User> \
      -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
      -Dfs.oci.client.multipart.allowed=true \
      -Dfs.oci.client.proxy.uri=<http://proxy-host>:port \
      -Dmapreduce.map.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.reduce.java.opts="$DISTCP_PROXY_OPTS" \
      -Dmapreduce.task.timeout=6000000 \
      -skipcrccheck -m 40 -bandwidth 500 \
      -update -strategy dynamic -i oci://<bucket>@<tenancy>/<exportedHdfsDir>/ <hdfs-dir-to-copy>
  4. Liste o conteúdo do diretório tmp.
    hadoop fs -ls /<hdfs-dir-to-copy>
Importar os arquivos de metadados e executar as permissões
Faça o seguinte:
  1. Importe arquivos de metadados do Armazenamento de Objetos para /metadata no HDFS.
    
    hadoop distcp -libjars ${LIBJARS} \
    -Dfs.client.socket-timeout=3000000
    -Dfs.oci.client.auth.fingerprint=<fingerprint> \
    -Dfs.oci.client.auth.pemfilepath=<oci_pem_key> \
    -Dfs.oci.client.auth.passphrase=<passphrase> \
    -Dfs.oci.client.auth.tenantId=<OCID for Tenancy> \
    -Dfs.oci.client.auth.userId=<OCID for User> \
    -Dfs.oci.client.hostname=<HostName. Example: https://objectstorage.us-phoenix-1.oraclecloud.com/> \
    -Dfs.oci.client.multipart.allowed=true \
    -Dfs.oci.client.proxy.uri=<http://proxy-host>:port \
    -Dmapreduce.map.java.opts="$DISTCP_PROXY_OPTS" \
    -Dmapreduce.reduce.java.opts="$DISTCP_PROXY_OPTS" \
    -Dmapreduce.task.timeout=6000000 \
    -skipcrccheck -m 40 -bandwidth 500 \
    -update -strategy dynamic -i oci://<bucket>@<tenancy>/metadata/ /metadata
  2. Mover arquivos para o diretório local.
    hdfs dfs -get /metadata/Metadata*
  3. Execute os arquivos em paralelo no plano de fundo ou em vários terminais.
    bash Metadataaa &
     
    bash Metadataab &
     
    bash Metadataac &...
Importação de Metadados

Para importar metadados, siga estas etapas:

  1. Estabelecer conexão com o cluster do BDS por meio do bastion host como um uso opc
  2. Copie os scripts de consulta DDL HIVE, criados no cluster BDA de origem, para o cluster BDS de destino
    1. 1_CREATE_DB.hql.
    2. 2_CREATE_TABLE.hql
    3. 3_ADD_PARTITION.hql
  3. Execute o script 1_CREATE_DB.hql.
    hive -f 1_CREATE_DB.hql
  4. Execute o script 2_CREATE_TABLE.hql.
    hive -f 2_CREATE_TABLE.hql
  5. Execute o script 3_ADD_PARTITION.hql.
    hive -f 3_ADD_PARTITION.hql
Atualizando o Diretório do Warehouse do Hive Metastore

Faça o seguinte:

  1. Localize o valor de hive.metastore.warehouse.dir. Esta é uma propriedade hive configurada como /apps/hive/warehouse no cluster BDA ou BDCS em hive-site.xml.
    <name>hive.metastore.warehouse.dir</name>
    <value>/apps/hive/warehouse</value>
  2. Reconfigure hive.metastore.warehouse.dir para <exportedHdfsDir>/apps/hive/warehouse em hive-site.xml no cluster do BDS.
  3. Se você copiou seus dados do HDFS para hdfs://tmp, configure a propriedade hive.metastore.warehouse.dir como /tmp/apps/hive/warehouse.

Validando a Migração

Para validar a migração, faça o seguinte:
  • Verifique se você vê o mesmo conjunto de tabelas hive no cluster de destino que no cluster de origem.
    1. Conecte-se ao shell hive.
      hive
    2. Execute o seguinte comando para listar as tabelas:
      show tables;