下载安装docker和minikube。参考文档:安装minikube
拉取GeaFlow镜像
docker pull tugraph/geaflow:0.4
如果遇到网络问题导致拉取失败,也可以通过下面命令直接构建镜像(构建镜像之前需要先启动docker容器,构建脚本根据机器类型build对应类型的镜像):
git clone https://github.com/TuGraph-family/tugraph-analytics.git cd tugraph-analytics/ bash ./build.sh --module=geaflow
整个编译过程可能持续一段时间,请耐心等待。镜像编译成功后,通过以下命令查看镜像:
docker images
远程拉取的镜像名称为:tugraph/geaflow:0.4。 本地镜像名称为:geaflow:0.1,只需选择一种方式构建镜像即可。
下面介绍如何安装Geaflow Kubernetes Operator。
git clone https://github.com/TuGraph-family/tugraph-analytics.git cd tugraph-analytics/
docker pull tugraph/geaflow-kubernetes-operator:0.4
如果遇到网络问题导致拉取失败,也可以通过下面命令直接构建镜像:
cd tugraph-analytics/geaflow-kubernetes-operator/ bash ./build-operator.sh
operator项目最低要求jdk11。整个编译过程可能持续一段时间,请耐心等待。镜像编译成功后,通过以下命令查看镜像:
docker images
远程拉取的镜像名称为:tugraph/geaflow-kubernetes-operator:0.4。 本地镜像名称为:geaflow-kubernetes-operator:0.1,只需选择一种方式构建镜像即可。
打开/helm/geaflow-kubernetes-operator/values.yaml。
如有必要则可修改image.repository和image.tag以使用正确的镜像名。
cd tugraph-analytics/geaflow-kubernetes-operator/ helm install geaflow-kubernetes-operator helm/geaflow-kubernetes-operator
请将operator-pod-name替换为实际的operator pod名称。
kubectl port-forward ${operator-pod-name} 8089:8089
Geaflow-kubernetes-operator成功部署并运行后,就可以编写CR的yaml文件进行作业提交啦。
geaflow-kubernetes-operator成功部署并运行后,就可以编写作业的yaml文件进行作业提交了。 首先我们编写一个geaflow内置示例作业的yaml文件。
apiVersion: geaflow.antgroup.com/v1 kind: GeaflowJob metadata: # 作业名称 name: geaflow-example spec: # 作业使用的GeaFlow镜像 image: geaflow:0.1 # 作业拉取镜像的策略 imagePullPolicy: IfNotPresent # 作业使用的k8s service account serviceAccount: geaflow # 作业java进程的主类 entryClass: com.antgroup.geaflow.example.graph.statical.compute.khop.KHop clientSpec: # client pod相关的资源设置 resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m masterSpec: # master pod相关的资源设置 resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m driverSpec: # driver pod相关的资源设置 resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m # driver个数 driverNum: 1 containerSpec: # container pod相关的资源设置 resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m # container个数 containerNum: 1 # 每个container内部的worker个数(线程数) workerNumPerContainer: 4 userSpec: # 作业指标相关配置 metricConfig: geaflow.metric.reporters: slf4j geaflow.metric.stats.type: memory # 作业存储相关配置 stateConfig: geaflow.file.persistent.type: LOCAL geaflow.store.redis.host: host.minikube.internal geaflow.store.redis.port: "6379" # 用户自定义参数配置 additionalArgs: kubernetes.resource.storage.limit.size: 12Gi geaflow.system.state.backend.type: MEMORY
Geaflow 作业依赖于redis组件,可以通过docker快速启动一个redis容器并将端口映射到localhost。
docker pull redis:latest docker run -p 6379:6379 --name geaflow_redis redis:latest
若你已经部署了一个redis组件,则可以将example.yaml中的以下参数替换为已有的redis host和端口号。
spec: userSpec: stateConfig: geaflow.store.redis.host: ${your.redis.host} geaflow.store.redis.port: ${your.redis.port}
然后通过如下命令即可将作业提交到k8s集群。
cd tugraph-analysis/geaflow-kubernetes-operator/example kubectl apply example_hla.yml
对于提交HLA作业的情况,需要额外注意以下几个参数:
spec: # 必填 entryClass: com.example.MyEntryClass # 可选 udfJars: - name: myUdf.jar url: http://localhost:8888/download/myUdf.jar
对于提交DSL作业的情况,需要额外注意以下几个参数:
spec: # 不填 # entryClass: com.example.MyEntryClass # 必填 gqlFile: # name必须填写正确,否则无法找到对应文件 name: myGql.gql url: http://localhost:8888/download/myGql.gql # 可选 udfJars: - name: myUdf.jar url: http://localhost:8888/download/myUdf.jar
关于DSL作业和HLA作业的更多参数,我们在项目目录geaflow-kubernetes-operator/example目录中准备了两个demo作业供大家参考,请分别参考项目中的示例文件:
浏览器访问http://localhost:8089/,即可打开集群页面查看集群下所有geaflowjob作业列表和详情。
执行以下命令可以查看CR的状态
kubectl get geaflowjob geaflow-example