O OSS-HDFS é um service de armazenamento cloud nativo para data lakes. Ele oferece gerenciamento unificado de metadados e é totalmente compatível com a API do HDFS, com suporte abrangente a POSIX. Isso o torna ideal para cargas de trabalho de data lake em big data e IA. Este tópico descreve como usar o Hadoop para acessar o oss-HDFS por meio do JindoSDK.
Pré-requisitos
É necessário que você ative o OSS-HDFS para um bucket e esteja autorizado a acessá-lo. Para mais informações, consulte ative o OSS-HDFS.
Visão geral
O OSS-HDFS funciona com aplicativos Hadoop e Spark existentes sem necessidade de modificações. Após a configuração básica, gerencie dados como no HDFS nativo, com os benefícios adicionais do OSS: capacidade praticamente ilimitada, escalabilidade elástica e maior segurança, confiabilidade e disponibilidade.
O OSS-HDFS processa exabytes de dados e bilhões de arquivos com throughput na escala de terabytes. Além do namespace plano do armazenamento de objetos padrão, ele oferece um namespace hierárquico que organiza objetos em diretórios, com conversão automática de namespace por meio do gerenciamento unificado de metadados. Em vez da redundância ativa-standby do NameNode no HDFS tradicional, o OSS-HDFS usa redundância ativa-ativa de vários nós para uma resiliência superior. Usuários do Hadoop acessam dados com a mesma eficiência do HDFS local, sem replicação ou conversão, o que melhora o desempenho dos jobs e reduz os custos de manutenção.
Para mais informações sobre os casos de uso, características do service e recursos do OSS-HDFS, consulte o que é o OSS-HDFS?.
Etapa 1: Crie uma VPC e adicione uma instância ECS
-
Para permitir o acesso ao OSS-HDFS pela rede interna, crie uma VPC.
Acesse o VPC console.
-
Na página VPC, clique em Create VPC.
Certifique-se de que a VPC esteja na mesma região do bucket onde você ativou o OSS-HDFS. Para mais informações sobre como criar uma VPC, consulte crie uma VPC e um vSwitch.
-
Adicione uma instância ECS.
Em seguida, clique em ID da VPC criada e, em seguida, clique na guia Resource Management.
Na seção Cloud Resources, clique no ícone
ao lado de ECS.-
Na página Instances, crie uma instância ECS.
Ao criar uma instância ECS, certifique-se de que ela esteja na mesma região da VPC criada. Para mais informações sobre como criar uma instância ECS, consulte crie uma instância.
Etapa 2: Para começar, configure um ambiente de execução do Hadoop
-
Primeiro, instale o ambiente Java.
-
Para a instância ECS criada, clique em Connect na coluna Actions.
Para mais informações sobre como estabelecer uma conexão remota com uma instância ECS, consulte Connection methods.
-
Primeiro, verifique a versão do Java Development Kit (JDK).
java -version -
Opcional:Desinstale o JDK se a versão for anterior a 1.8.0.
rpm -qa | grep java | xargs rpm -e --nodeps -
Agora, instale o Java.
sudo yum install java-1.8.0-openjdk* -y -
Agora, execute o comando a seguir para abrir o arquivo de configuração do perfil.
vim /etc/profile -
Adicione as variáveis de ambiente.
Se receber um erro "path does not exist", acesse o diretório /usr/lib/jvm/ para localizar o arquivo java-1.8.0-openjdk.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar export PATH=$PATH:$JAVA_HOME/bin -
Aplique as variáveis de ambiente.
source /etc/profile
-
-
Ative o service SSH.
-
Em seguida, instale o service SSH.
sudo yum install -y openssh-clients openssh-server -
Ative e inicie o service SSH.
systemctl enable sshd && systemctl start sshd -
Gere uma chave SSH e adicione-a à lista de chaves autorizadas.
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
-
-
Por fim, instale o Hadoop.
-
Inicialmente, baixe o pacote de instalação do Hadoop.
Este exemplo usa o Hadoop 3.4.0. Se usar uma versão diferente, substitua o nome do pacote adequadamente. Para encontrar pacotes de instalação do Hadoop, consulte a página Apache Hadoop releases.
wget https://downloads.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz -
Extraia o pacote de instalação.
tar xzf hadoop-3.4.0.tar.gz -
Mova o pacote para um diretório padrão.
mv hadoop-3.4.0 /usr/local/hadoop -
Agora, configure as variáveis de ambiente.
-
Configure as variáveis de ambiente do Hadoop.
vim /etc/profile export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$PATH source /etc/profile -
Em seguida, atualize o HADOOP_HOME no arquivo de configuração do Hadoop.
cd $HADOOP_HOME vim etc/hadoop/hadoop-env.sh -
Substitua ${JAVA_HOME} pelo caminho real.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
-
-
Opcional:Se o diretório não existir, execute o comando a seguir para aplicar as novas variáveis de ambiente.
cd $HADOOP_HOME/etc/hadoop -
Agora, atualize os arquivos de configuração core-site.xml e hdfs-site.xml.
-
Atualize o arquivo core-site.xml com as propriedades a seguir.
<configuration> <!-- Specify the address of the NameNode in HDFS. --> <property> <name>fs.defaultFS</name> <!-- Replace the value with your hostname or localhost. --> <value>hdfs://localhost:9000</value> </property> <!-- Change the temporary directory of Hadoop to a custom directory. --> <property> <name>hadoop.tmp.dir</name> <!-- As the admin user, grant permissions to the directory by running sudo chown -R admin:admin /opt/module/hadoop-3.4.0 --> <value>/opt/module/hadoop-3.4.0/data/tmp</value> </property> </configuration> -
Atualize o arquivo hdfs-site.xml com a propriedade a seguir.
<configuration> <!-- Specify the number of HDFS replicas. --> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
-
-
Formate o NameNode.
hdfs namenode -format -
Inicie o HDFS.
Iniciar o HDFS envolve a inicialização do NameNode, do DataNode e do Secondary NameNode.
-
Inicie os processos daemon do HDFS:
cd /usr/local/hadoop/ sbin/start-dfs.sh -
Agora, verifique os processos Java em execução.
jpsO comando retorna o seguinte resultado:

Os processos daemon do HDFS agora estão em execução. Acesse a interface web do HDFS em http://{ip}:9870 para visualizar informações detalhadas.
-
-
-
Por fim, verifique a instalação do Hadoop.
Execute o comando hadoop version. Se o comando retornar as informações da versão, a instalação foi bem-sucedida.
Etapa 3: Configure o JindoSDK para acessar o OSS-HDFS
-
Agora, baixe o pacote JAR do JindoSDK.
-
Acesse o diretório de destino.
cd /usr/lib/ Agora, baixe a versão mais recente do pacote JAR do JindoSDK. Para obter os links de download, consulte o GitHub.
-
Extraia o pacote JAR do JindoSDK.
tar zxvf jindosdk-x.x.x-linux.tar.gzNota
-
-
Agora, configure as variáveis de ambiente.
-
Edite o arquivo de configuração do perfil.
vim /etc/profile -
Agora, defina a variável de ambiente JINDOSDK_HOME.
export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux -
Configure o HADOOP_CLASSPATH.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/* -
Em seguida, execute o comando a seguir para aplicar a nova configuração.
. /etc/profile
-
-
Em seguida, configure a classe de implementação do JindoSDK e o AccessKey.
-
Adicione a classe de implementação do JindoSDK ao arquivo core-site.xml do Hadoop.
<configuration> <property> <name>fs.AbstractFileSystem.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOSS</value> </property> <property> <name>fs.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value> </property> </configuration> -
Adicione o AccessKey ID e o AccessKey Secret do bucket com OSS-HDFS ativado ao arquivo core-site.xml.
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>xxx</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>xxx</value> </property> </configuration>
-
-
Por fim, configure o endpoint do OSS-HDFS.
Configure um endpoint para acessar o OSS-HDFS. O formato de URI recomendado é
oss://<Bucket>.<Endpoint>/<Object>, por exemplo,oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt. Após essa configuração, o JindoSDK usa o endpoint no caminho de acesso para chamar a API adequada do OSS-HDFS.É possível configurar o endpoint do OSS-HDFS por outros métodos. Para mais informações, consulte outros métodos para configurar um endpoint.
Etapa 4: Acesse o OSS-HDFS
-
Crie um diretório
hdfs dfs -mkdir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/ -
Faça upload de um objeto
hdfs dfs -put /root/workspace/examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt -
Agora, visualize as informações do diretório
hdfs dfs -ls oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/ -
Em seguida, visualize as informações do objeto
hdfs dfs -ls oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt -
Por fim, visualize o conteúdo do objeto
ImportanteEste comando exibe o conteúdo do objeto como texto simples. Se o conteúdo estiver codificado, use a API Java do HDFS para ler o objeto e, em seguida, decodifique-o.
hdfs dfs -cat oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt -
Copie um diretório ou um objeto
hdfs dfs -cp oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/subdir1/ oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/subdir2/subdir1/ -
Mova um diretório ou um objeto
hdfs dfs -mv oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/srcdir/ oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/destdir/ -
Baixe um objeto
hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt /tmp/ -
Exclua um diretório ou um objeto
hdfs dfs -rm oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/destfolder/