O Fluid é um mecanismo de orquestração e aceleração de conjuntos de dados distribuídos, open source e nativo do Kubernetes. Projetado para aplicações que exigem uso intensivo de dados em ambientes cloud-native, como big data e IA, o Fluid acelera significativamente o acesso a arquivos entre nós de borda e o Object Storage Service (OSS) em cenários de borda. Este tópico descreve como usar o recurso de aceleração de dados do Fluid em um cluster ACK Edge.
Pré-requisitos
Você tem um cluster ACK Edge versão 1.18 ou posterior. Para mais informações, consulte Crie um cluster ACK Edge.
Você criou um pool de nós de borda e adicionou nós a ele. Para mais informações, consulte Crie um pool de nós de borda e Adicionar um nó de borda.
-
Você instale o pacote de IA cloud-native e implantou o componente ack-fluid.
ImportanteSe você instale o Fluid open source, desinstale-o antes de implantar o componente ack-fluid.
Se o pacote de IA cloud-native não estiver instalado: ative a Aceleração de dados Fluid durante a instalação. Para mais informações, consulte Implantar o console do pacote de IA.
Se o pacote de IA cloud-native já estiver instalado: implante o ack-fluid na página Cloud-native AI Suite do Console do ACK.
Você se conectou ao cluster Kubernetes usando kubectl. Para mais informações, consulte Conectar-se a um cluster ACK usando kubectl.
Você ativou o Object Storage Service (OSS). Para mais informações, consulte Ativar o OSS.
Etapa 1: Preparar dados no OSS
-
Execute o comando a seguir para baixe os dados de teste em uma instância ECS.
wget https://archive.apache.org/dist/spark/spark-3.0.1/spark-3.0.1-bin-hadoop2.7.tgz -
Faça upload dos dados de teste baixados para um bucket do OSS.
ImportanteAs etapas a seguir usam uma instância ECS com Alibaba Cloud Linux 3.2104 LTS 64 bits como exemplo para demonstrar o upload de dados para o OSS. Para outros sistemas operacionais, consulte Início rápido do ossutil e Referência de comandos do ossutil 1.0.
-
Crie um bucket chamado
examplebucket.-
Execute o comando a seguir para crie o
examplebucket.ossutil mb oss://examplebucket -
A saída a seguir indica que o
examplebucketfoi criado.0.668238(s) elapsed
-
-
Envie os dados de teste baixados para o bucket
examplebucket.ossutil cp spark-3.0.1-bin-hadoop2.7.tgz oss://examplebucket
Etapa 2: Crie um Dataset e um JindoRuntime
-
Crie um arquivo
resource.yamlcom o conteúdo a seguir. Esse arquivo tem duas finalidades:Definir um Dataset, que descreve o conjunto de dados remoto e fornece informações sobre o sistema de arquivos subjacente (UFS).
Configurar um JindoRuntime para iniciar um cluster JindoFS destinado ao cache de dados.
apiVersion: data.fluid.io/v1alpha1 kind: Dataset metadata: name: hadoop spec: nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: alibabacloud.com/nodepool-id operator: In values: - npxxxxxxxxxxxxxx mounts: - mountPoint: oss://<oss_bucket>/<bucket_dir> options: fs.oss.endpoint: <oss_endpoint> name: hadoop path: "/" encryptOptions: - name: fs.oss.accessKeyId valueFrom: secretKeyRef: name: mysecret key: fs.oss.accessKeyId - name: fs.oss.accessKeySecret valueFrom: secretKeyRef: name: mysecret key: fs.oss.accessKeySecret --- apiVersion: data.fluid.io/v1alpha1 kind: JindoRuntime metadata: name: hadoop spec: nodeSelector: alibabacloud.com/nodepool-id: npxxxxxxxxxxxxxx replicas: 2 tieredstore: levels: - mediumtype: MEM path: /dev/shm volumeType: emptyDir quota: 2Gi high: "0.99" low: "0.95"NotaEm um cluster ACK Edge, use
nodeAffinityenodeSelectorpara implantar o Dataset e o JindoRuntime no mesmo pool de nós. Isso garante a comunicação entre os nós desse pool.Como o gerenciamento de nós de borda e o acesso ao OSS dependem de comunicação de rede entre nuvem e borda, garanta largura de banda suficiente para manter a estabilidade do canal de controle.
A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
mountPoint
O valor
oss://<oss_bucket>/<bucket_dir>especifica o caminho do UFS a ser montado. Esse caminho deve apontar para um diretório, não para um único arquivo. Não inclua o endpoint neste caminho.fs.oss.endpoint
replicas
mediumtype
path
quota
high
low
Etapa 3: Testar a aceleração de acesso aos dados
-
Crie um arquivo chamado app.yaml com o conteúdo a seguir.
apiVersion: v1 kind: Pod metadata: name: demo-app spec: nodeSelector: alibabacloud.com/nodepool-id: npxxxxxxxxxxxxx containers: - name: demo image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 volumeMounts: - mountPath: /data name: hadoop volumes: - name: hadoop persistentVolumeClaim: claimName: hadoopNotaEm um cluster ACK Edge, use
nodeSelectorpara implantar o pod de teste no pool de nós especificado na Etapa 2. -
Abra um shell no pod e verifique o tamanho do arquivo.
kubectl exec -it demo-app -- bash du -sh /data/spark-3.0.1-bin-hadoop2.7.tgzSaída esperada:
210M /data/spark-3.0.1-bin-hadoop2.7.tgz
(Opcional) Limpeza
Quando a aceleração de dados não for mais necessária, exclua o pod, o Dataset e o JindoRuntime.
Exclua o pod:
kubectl delete pod demo-app
Exclua o Dataset e o JindoRuntime:
kubectl delete dataset hadoop