Download and install Docker and Minikube. Refer to the documentation: Installing Minikube.
Pull GeaFlow Image
Run the following command to pull the remote geaflow image:
docker pull tugraph/geaflow:0.6
If the pull fails due to network problems, you can also run the following command to directly build the local image (before building the image, start the docker container):
git clone https://github.com/apache/geaflow.git geaflow cd geaflow/ bash ./build.sh --module=geaflow
The entire compilation process may take some time, please be patient. After the image compilation is successful, use the following command to view the image.
docker images
The name of the remotely pulled image is: tugraph/geaflow:0.6 . The name of the local image is geaflow:0.1. You only need to select one method to build the image.
Below is an introduction on installation of Geaflow Kubernetes Operator。
git clone https://github.com/apache/geaflow.git geaflow cd geaflow/
docker pull tugraph/geaflow-kubernetes-operator:0.6
If the pull fails due to network problems, you can also run the following command to directly build the local image (before building the image, start the docker container):
cd geaflow/geaflow-kubernetes-operator/ bash ./build-operator.sh
Geaflow-kubernetes-operator need JDK11 or above version to build. The entire compilation process may take some time, please be patient. After the image compilation is successful, use the following command to view the image.
docker images
The name of the remotely pulled image is: tugraph/geaflow-kubernetes-operator:0.6 . The name of the local image is geaflow-kubernetes-operator:0.1. You only need to select one method to build the image.
Open the file /helm/geaflow-kubernetes-operator/values.yaml. If you need to modify the image name, you could change image.repository and image. tag to use the correct image.
cd geaflow/geaflow-kubernetes-operator/ helm install geaflow-kubernetes-operator helm/geaflow-kubernetes-operator
Please replace ${operator-pod-name} with the actual operator pod name.
kubectl port-forward ${operator-pod-name} 8089:8089
After geaflow-kubernetes-operator is successfully deployed and run, you can write the job‘s yaml file and submit the job. First, we write a yaml file of geaflow’s built-in sample job.
apiVersion: geaflow.antgroup.com/v1 kind: GeaflowJob metadata: # Job name name: geaflow-example spec: # Job image name image: geaflow:0.1 # Image pull policy of the job pods imagePullPolicy: IfNotPresent # Kubernetes service account of the job serviceAccount: geaflow # Java main class of the job entryClass: com.antgroup.geaflow.example.graph.statical.compute.khop.KHop clientSpec: # Resource params of client pod resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m masterSpec: # Resource params of master pod resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m driverSpec: # Resource params of driver pod resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m # Driver number driverNum: 1 containerSpec: # Resource params of container pod resource: cpuCores: 1 memoryMb: 1000 jvmOptions: -Xmx800m,-Xms800m,-Xmn300m # Container number containerNum: 1 # Worker number per container pod workerNumPerContainer: 4 userSpec: # Metric params of job metricConfig: geaflow.metric.reporters: slf4j geaflow.metric.stats.type: memory # State config of job stateConfig: geaflow.file.persistent.type: LOCAL geaflow.store.redis.host: host.minikube.internal geaflow.store.redis.port: "6379" # Additional user defined params additionalArgs: geaflow.system.state.backend.type: MEMORY
The Geaflow job relies on the redis component. You can quickly start a redis container through docker and map the port to localhost.
docker pull redis:latest docker run -p 6379:6379 --name geaflow_redis redis:latest
If you have already deployed a redis component, you can replace the following parameters in example.yaml with the existing redis host and port number.
spec: userSpec: stateConfig: geaflow.store.redis.host: ${your.redis.host} geaflow.store.redis.port: ${your.redis.port}
Then run the following command to submit the job:
cd geaflow/geaflow-kubernetes-operator/example kubectl apply example_hla.yml
When submitting HLA jobs, you need to pay extra attention to the following parameters:
spec: # Required entryClass: com.example.MyEntryClass # Optional udfJars: - name: myUdf.jar url: http://localhost:8888/download/myUdf.jar
When submitting DSL jobs, you need to pay extra attention to the following parameters:
spec: # Do not fill in entryClass # entryClass: com.example.MyEntryClass # Required gqlFile: # Name must be correct name: myGql.gql url: http://localhost:8888/download/myGql.gql # Optional udfJars: - name: myUdf.jar url: http://localhost:8888/download/myUdf.jar
Regarding more parameters of DSL jobs and HLA jobs, we have prepared two demo jobs in the project directory geaflow-kubernetes-operator/example directory for your reference. Please refer to the sample files in the project respectively:
Visit http://localhost:8089, you can open the cluster overview page to view the list and details of all geaflow job CRs in the cluster.
Run the following command to view the status of CR
kubectl get geaflowjob geaflow-example