Skip to content

Latest commit

 

History

History
226 lines (152 loc) · 5.43 KB

jindo_fluid_hdfs_ufs_example.md

File metadata and controls

226 lines (152 loc) · 5.43 KB

加速HDFS上数据

JindoFSx 提供了访问 HDFS 的能力,可以通过配置 HDFS 作为 JindoFSx 的后端存储,使 Fluid 通过 JindoFSx 来访问 HDFS 上的数据,同时 JindoFSx 也提供了对 HDFS 上的数据以及元数据的缓存加速功能。 本文档展示了如何在 Fluid 中以声明式的方式完成 JindoFSx 部署,对接 HDFS 数据源。

创建命名空间

kubectl create ns fluid-system

使用 Helm 安装 Fluid

helm install --set runtime.jindo.enabled=true fluid fluid-<version>.tgz

查看 Fluid 的运行状态

$ kubectl get pod -n fluid-system
NAME                                         READY   STATUS    RESTARTS   AGE
csi-nodeplugin-fluid-2mfcr                   2/2     Running   0          108s
csi-nodeplugin-fluid-l7lv6                   2/2     Running   0          108s
dataset-controller-5465c4bbf9-5ds5p          1/1     Running   0          108s
jindoruntime-controller-654fb74447-cldsv     1/1     Running   0          108s

其中 csi-nodeplugin-fluid-xx 的数量应该与 K8S 集群中节点node的数量相同。

1、创建 dataset 和 JindoRuntime

1.1、HA 集群从 HDFS 配置文件中相关信息,非 HA 集群请略过此步骤

从 HDFS 集群上找到 hdfs-site.xml 配置文件

需要将其中 rpc 的访问地址中域名的部分参数,修改成可访问的内网 IP 地址,例如:

<property>
    <name>dfs.namenode.rpc-address.emr-cluster.nn1</name>
    <value>emr-header-1.cluster-xxx:8020</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.emr-cluster.nn2</name>
    <value>emr-header-2.cluster-xxx:8020</value>
</property>

修改为

<property>
    <name>dfs.namenode.rpc-address.emr-cluster.nn1</name>
    <value>192.168.0.1:8020</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.emr-cluster.nn2</name>
    <value>192.168.0.2:8020</value>
</property>

从配置文件里我们可以拿到如下几个信息

  • 集群namespaceService名称:emr-cluster
  • 两个namenode名字:nn1 和 nn2
  • 两个namenode的访问地址:192.168.0.1:8020 和 192.168.0.2:8020

1.2、创建 Dataset 资源对象

首先创建一个名为 dataset.yaml 的文件,针对 HDFS 集群分为 HA 集群和非 HA 集群两种不同的情况。

HA 集群

将1.1中拿到的几个信息放到 mounts.options 里面,user 代表用户权限

apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: hdfs
spec:
  mounts:
    - mountPoint: hdfs://emr-cluster/
      name: hdfs
      options:
        fs.hdfs.emr-cluster.dfs.ha.namenodes = nn1,nn2
        fs.hdfs.emr-cluster.dfs.namenode.rpc-address.nn1 = 192.168.0.1:8020
        fs.hdfs.emr-cluster.dfs.namenode.rpc-address.nn2 = 192.168.0.2:8020
        fs.hdfs.user = hadoop
      path: /
  accessModes:
    - ReadOnlyMany

其中 mountPoint 为需要访问的 HDFS 路径(阿里云EMR集群默认名字为 emr-cluster,如下所示)

  • accessModes: 可选 ReadOnlyMany / ReadWriteMany,前者代表只读,后者代表可读写
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://emr-cluster</value>
</property>

非 HA 集群

apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: hdfs
spec:
  mounts:
    - mountPoint: hdfs://<namenodeIP>:<port>/
      name: hdfs
      path: /
  accessModes:
    - ReadOnlyMany

其中 mountPoint 为 HDFS 集群的 namenode 的 IP 地址和端口的组合

  • accessModes: 可选 ReadOnlyMany / ReadWriteMany,前者代表只读,后者代表可读写

1.3、创建 Dataset

$ kubectl create -f dataset.yaml

1.4 创建 JindoRuntime 资源对象

创建一个 JindoRuntime 对应的 JindoFSx 集群

apiVersion: data.fluid.io/v1alpha1
kind: JindoRuntime
metadata:
  name: hdfs
spec:
  replicas: 1
  tieredstore:
    levels:
      - mediumtype: SSD
        path: /mnt/disk1/
        quota: 290Gi
        high: "0.9"
        low: "0.2"

多块盘多个quota请参考

path: /mnt/disk1/,/mnt/disk2/,/mnt/disk3/
quotaList: 290G,290G,290G

其中 path 和 quota 的数量应该相同。

1.5、创建 JindoRuntime

执行 create 命令

$ kubectl create -f runtime.yaml

查看 dataset 状态

$ kubectl get dataset hadoop
NAME     UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hdfs     180.01GiB      0.00B      261.00GiB            0.0%          Bound   62m

检查 PV,PVC 创建情况

$ kubectl get pv,pvc
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
persistentvolume/hdfs       100Gi      RWX            Retain           Bound    default/hadoop                           58m

NAME                           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/hdfs      Bound    hadoop   100Gi      RWX                           58m

检查 jindoruntime 部署情况

$ kubectl get jindoruntime hadoop
NAME     MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
hdfs     Ready           Ready                     62m