• 【大数据分析】graphscope开发环境搭建


    基础环境搭建

    虽然Jetbrains的pycharm好用,但是开发graphscope我个人建议还是用jupyterlab。因为graphscope(我用的是0.16.0)的API只能用于Linux,所以如果要用Pycharm,操作系统层面就要带图形化界面。而我只能用纯净版的Linux操作系统,所以使用能远程连接jupyterlab比较好。

    如何快速安装k8s,以及jupyterlab开发环境
    graphscope依赖于k8s环境,关于k8s的部署安装可以参考
    【部署与运维】sealos k8s 的安装和使用
    我们使用jupyterlab进行开发
    【大数据分析】基于virtualenv和jupyterlab搭建远程开发环境

    使用sealos安装helm

    root@master:~# sealos run labring/helm:v3.8.2
    
    • 1

    基于helm安装graphscope

    配置helm的graphscope依赖

    root@master:~# helm repo add graphscope https://graphscope.oss-cn-beijing.aliyuncs.com/charts/
    
    • 1

    然后update一下。
    安装graphscope

    root@master:~# helm install graphscope graphscope/graphscope
    
    • 1

    graphscope的安装对配置有一定的要求,例如所运行的cpu内核数>=4,内存>=8等,还至少两个worker。否则使用kubectl describe pod命令可以查看到pod并没有真正运行。

    查看graphscope在k8s中的service

    查看k8s中的服务,可以看到graphscope的service已经建立。

    root@master:~# kubectl get svc
    NAME                             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                          AGE
    graphscope-coordinator-service   NodePort    10.96.0.13           59001:30922/TCP,8888:30080/TCP   2m1s
    kubernetes                       ClusterIP   10.96.0.1            443/TCP                          19m
    
    • 1
    • 2
    • 3
    • 4

    k8s中sevice的作用(备忘):
    (1)使得集群内部可以访问pod。
    (2)使用 NodePort 或者 LoadBalancer 类型的 Service,外部网络也可以访问该pod。
    (3)每个 service 会创建出来一个虚拟 ip,通过访问 vip:port 就能获取服务的内容(vip是虚拟ip,用于内部访问,外部无法访问的)。

    查看graphscope在k8s中的pod

    root@master:~# kubectl get pod
    NAME                                      READY   STATUS              RESTARTS   AGE
    graphscope-coordinator-744bdb9cf7-fksf6   0/2     ContainerCreating   0          2m25s
    
    • 1
    • 2
    • 3

    可以看到此时的graphscope的pod并没有准备好,进一步用一下命令,可以看到第一次安装graphscope会有一个较长的拉取镜像(pulling image)的过程。
    (这里关于如何修改如下中,graphscope的registry.cn-hongkong.aliyuncs.com镜像源,我还没有找到方法。有找到的读者希望可以指教,我是跨过了一个中秋假期回来才发现pull完的,放假前以为卡住没戏了,回来一看发现pull了两个半小时)

    root@master:~# kubectl describe pod graphscope-coordinator-744bdb9cf7-fksf6
    ......省略
    Events:
      Type    Reason     Age    From               Message
      ----    ------     ----   ----               -------
      Normal  Scheduled  2m44s  default-scheduler  Successfully assigned default/graphscope-coordinator-744bdb9cf7-fksf6 to worker2
      Normal  Pulling    117s   kubelet            Pulling image "registry.cn-hongkong.aliyuncs.com/graphscope/graphscope:0.16.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    成功后再查看pods

    root@master:~#  kubectl get pods
    NAME                                      READY   STATUS    RESTARTS         AGE
    graphscope-coordinator-744bdb9cf7-fksf6   2/2     Running   12 (3d12h ago)   3d15h
    gs-engine-graphscope-8pdnl                2/2     Running   0                3d12h
    gs-engine-graphscope-hsl5d                2/2     Running   0                3d12h
    gs-etcd-graphscope-0                      1/1     Running   0                3d12h
    gs-etcd-graphscope-1                      1/1     Running   0                3d12h
    gs-etcd-graphscope-2                      1/1     Running   0                3d12h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    此时我们可以查看使用graphscope-client需要连接的graphscope服务地址。

    root@master:~# export NODE_IP=$(kubectl --namespace default  get pod -l graphscope.coordinator.name=graphscope-coordinator --no-headers=true | awk '/ /{print $1}' | xargs kubectl -o jsonpath="{.status.hostIP}")
    root@master:~# export NODE_PORT=$(kubectl --namespace default get services -o jsonpath="{.spec.ports[0].nodePort}" graphscope-coordinator-service)
    root@master:~# echo "GraphScope service listen on ${NODE_IP}:${NODE_PORT}"
    GraphScope service listen on 172.16.11.99:30922
    
    • 1
    • 2
    • 3
    • 4

    接着我们在jupyterlab上写一个样例代码

    import graphscope
    sess = graphscope.session(addr="172.16.11.99:30922")
    print(sess)
    
    • 1
    • 2
    • 3

    执行可以得到下面这个结果

    {'status': 'active', 'type': 'k8s', 'engine_hosts': 'gs-engine-graphscope-8pdnl,gs-engine-graphscope-hsl5d', 'namespace': 'default', 'cluster_type': '1', 'session_id': 'session_dfzwgkuz', 'num_workers': 2, 'coordinator_endpoint': '172.16.11.99:30922', 'engine_config': {'networkx': 'ON', 'vineyard_socket': '/tmp/vineyard_workspace/vineyard.sock', 'vineyard_rpc_endpoint': '172.16.11.99:30868', 'enable_java_sdk': 'ON', 'vineyard_service_name': 'gs-vineyard-service-graphscope', 'mars_endpoint': None}}
    
    • 1
  • 相关阅读:
    CF803B Distances to Zero(模拟+思维)
    实用工具系列 - FileZilla安装下载与使用
    153-Vue中的vuex内的辅助函数——mapState,mapGetters,mapMutations,mapActions的用法
    android 项目中导入flutter module
    Java之Spring MVC中表单标签的简介说明
    利用化合物名称从PubChempy中批量下载化合物信息
    PHP实现简易快捷的软著保护方式
    用dubbo直接调用webservice
    mac免费杀毒软件哪个好用?如何清理mac系统需要垃圾
    代码随想录二刷 Day 44
  • 原文地址:https://blog.csdn.net/sword_csdn/article/details/126769384