Se você deseja mapear o OSS-HDFS para um sistema de arquivos local e, em seguida, acessar objetos no OSS-HDFS chamando a api padrão do HDFS e execute operações, como leitura, gravação e exclusão de objetos, use o JindoFuse para acessar o OSS-HDFS. O JindoFuse é uma ferramenta que permite acessar sistemas de arquivos distribuídos open source e é compatível com POSIX. O JindoFuse permite que aplicações de IA usem diretamente o OSS-HDFS para armazenamento e processamento de dados.
Pré-requisitos
O OSS-HDFS está ativado para um bucket e as permissões foram concedidas para acessar o OSS-HDFS. Para mais informações, consulte Enable OSS-HDFS.
Preparativos
Você pode usar um dos seguintes métodos para acessar o OSS-HDFS:
Para acessar o OSS-HDFS usando um cluster EMR do Alibaba Cloud, certifique-se de que um cluster EMR com versão 3.44.0 ou posterior, ou 5.10.0 ou posterior, foi criado. Os clusters EMR que atendem a esses requisitos já vêm integrados com o JindoFuse por padrão. Para mais informações, consulte Create a cluster.
Caso não queira acessar o OSS-HDFS por meio de um cluster EMR do Alibaba Cloud, verifique se o JindoSDK 4.6.2 ou posterior está instalado e implantado. Para mais informações, consulte Deploy JindoSDK in a non-EMR cluster.
Procedimento
-
configure as variáveis de ambiente.
Se você for acessar o OSS-HDFS usando um cluster EMR do Alibaba Cloud, ignore esta etapa e prossiga para Step 2.
-
Caso não queira acessar o OSS-HDFS por meio de um cluster EMR do Alibaba Cloud, execute as etapas a seguir para configure o JindoFuse:
Conecte-se à instância ECS. Para mais informações, consulte Connect to an ECS instance.
-
modifique as variáveis de ambiente.
Neste exemplo, o jindosdk-x.x.x está instalado no caminho root/. O x.x.x indica o número da versão do JindoSDK. modifique as variáveis de ambiente com base no caminho real onde o JindoSDK está instalado.
export JINDOSDK_HOME=/root/jindosdk-x.x.x export HADOOP_CLASSPATH=`hadoop classpath`:${JINDOSDK_HOME}/lib/* export JINDOSDK_CONF_DIR=/root/jindosdk-x.x.x/conf export PATH=$PATH:$JINDOSDK_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JINDOSDK_HOME}/lib/native -
configure o arquivo de configuração.
crie um arquivo de configuração chamado jindosdk.cfg no diretório conf/ do JindoSDK.
-
Adicione os seguintes itens de configuração ao arquivo de configuração jindosdk.cfg:
[common] logger.dir = /tmp/fuse-log [jindosdk] # The following example uses the China (Hangzhou) region. Replace it with your actual region. fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com # Configure the AccessKey ID and AccessKey secret for accessing OSS-HDFS. fs.oss.accessKeyId = LTAI**************** fs.oss.accessKeySecret = yourAccessKeySecret
-
Monte o OSS-HDFS.
-
execute o seguinte comando para crie um ponto de montagem:
mkdir -p <mount-point> -
execute o seguinte comando para montar o OSS-HDFS:
jindo-fuse <mount_point> -ouri=[<oss_path>]defina -ouri para o caminho dls que deseja mapear. O caminho pode ser o diretório raiz ou um subdiretório do bucket. Após execute o comando, um processo daemon em segundo plano inicia a montagem do <oss_path> especificado no ponto de montagem do sistema de arquivos local. O ponto de montagem é especificado por <mount_point>.
Para mais informações sobre as opções de montagem que podem ser configuradas ao montar o OSS-HDFS, consulte Appendix 2: Mount options.
-
execute o seguinte comando para verificar se o OSS-HDFS está montado:
ps -ef | grep jindo-fuseSe o seguinte resultado for retornado, o OSS-HDFS está montado:
root 2162 1 0 13:21 ? 00:00:00 jindo-fuse <mount_point> -ouri=[<oss_path>] root 2714 2640 0 13:39 pts/0 00:00:00 grep --color=auto jindo-fuse
-
-
Use o JindoFuse para execute operações de leitura e gravação em objetos no OSS-HDFS.
-
crie um diretório
mkdir /mnt/oss/dir1 -
Liste todos os subdiretórios no diretório /mnt/oss/
ls /mnt/oss/ -
Grave um objeto
echo "hello world" > /mnt/oss/dir1/hello.txt -
Leia um objeto
cat /mnt/oss/dir1/hello.txt -
Exclua um diretório
rm -rf /mnt/oss/dir1/
-
-
Opcional. Desmonte o OSS-HDFS.
Você pode desmontar o OSS-HDFS usando um dos seguintes métodos:
-
Desmonte o OSS-HDFS manualmente
umount <mount_point> -
Desmonte o OSS-HDFS automaticamente
-oauto_unmountVocê pode execute o comando anterior para enviar um SIGINT ao processo jindo-fuse usando
killall -9 jindo-fuse. O OSS-HDFS é desmontado automaticamente antes do encerramento do processo.
-
Perguntas frequentes
Como solucionar erros do JindoFuse?
Se você usar o JindoSDK para chamar operações de api, poderá visualize os detalhes das mensagens de erro quando os erros forem reportados. Se usar o JindoFuse, visualize apenas as mensagens de erro predefinidas do sistema operacional.
ls: /mnt/oss/: Input/output error
Para identificar a causa de um erro, encontre o arquivo jindosdk.log no caminho especificado pelo item de configuração logger.dir do JindoSDK. A mensagem a seguir é um erro comum de autenticação que pode aparecer ao usar o JindoFuse:
EMMDD HH:mm:ss jindofs_connectivity.cpp:13] Please check your Endpoint/Bucket/RoleArn.
Failed test connectivity, operation: mkdir, errMsg: [RequestId]: 618B8183343EA53531C62B74 [HostId]: oss-cn-shanghai-internal.aliyuncs.com [ErrorMessage]: [E1010]HTTP/1.1 403 Forbidden ...
Caso a mensagem de erro acima apareça, verifique se o endpoint, o bucket e o ARN da função estão configurados corretamente. Para mais informações, consulte Quick start: Connect a non-EMR cluster to the OSS-HDFS service.
Se você encontrar um erro de programação, envie um ticket para solicitar suporte técnico.