大数据培训公司 深度解密京东登月平台基础架构_光环大数据培训

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大数据培训公司深度解密京东登月平台基础架构_光环大数据培训

光环大数据大数据培训机构,近日,京东发布登月机器学习平台,并在京东云上线,正式对外提供人工智能服务。登月机器学习平台的上线代表着京东人工智能技术从应用级服务到基础算法的全面对外开放,实践着京东RaaS(零售即服务)的发展策略。今天我们邀请了AI与大数据部的工程师为大家深度解密京东登月平台基础架构。

从2016年9月开始,京东AI基础平台部基于Kubernetes和Docker构建机器学习平台的底层架构,后续逐步完善和优化了网络、GPU管理、存储、日志、监控、权限管理等功能。目前集群管理的容器实例数量有5K+,至今已上线运行了20多个AI前向服务(50多个API),同时为后向训练提供支持,在618大促中表现高效稳定。

架构

登月平台的基础架构以Docker+Kubernetes为中心,底层基础设施包括CPU、GPU、FPGA计算资源,IB、OPA高速互联网络以及多样化的文件系统,之上是机器学习框架和算法库,最上层是业务应用。管理中心包括权限管理、任务管理、流程管理、监控中心、日志中心。

平台整体设计思想是Kubernetes调度一切,应具有以下特性(为了方便起见所有的inference类型的应用我们称为App,所有training类型的应用我们称为Job):

高可用、负载均衡。大量的inference App运行在容器中,需要保证App能够稳定高效的对外提供服务。

应用打包与隔离。研究人员、开发人员将自己的代码打包成image,方便的进行CI/CD,透明的将自己的App运行于平台中。

自动扩容/缩容,training/inference用同一批机器调度。白天有许多

活跃的用户,平台应该扩展更多inference App,而到了晚上,应该将更多的资源分配给training Job。

作为大数据调度平台。平台不仅可以原生的调度Tensorflow/Caffe/XGBoost/MXNet等机器学习、深度学习工具包,也应该将Hadoop/Spark系列的大数据生态系统调度在Kubernetes中。

支持丰富的硬件资源类型。根据不同的App,Job类型,应该使用不同的硬件资源以提高加速比,平台不仅需要支持CPU、GPU,还应该支持FPGA,InfiniBand,OPA等专用高速计算资源。

最大化利用整个集群资源。显而易见,对于平台来说已经不再区分是inference App还是training Job,所有的计算资源都统一在一个大的资源池中。

推行数据隔离架构,保证数据安全。通过网络优势将数据和计算进行分离,提供更高级别的数据access权限。

多租户安全保证。平台接入公有云,需要支持multi-tenancy的架构,不同的用户共享计算资源的池子,但是彼此在网络级别、文件系统级别、Linux 内核级别都相互隔离。

登月平台架构

网络

Kubernetes自身不具备网络组件,需要使用第三方网络插件实现。前期我们调研了Flannel、Weave、Calico三种容器网络,并做了性能对比测试。由于Flannel、Weave都是overlay网络,均采用隧道方式,网络通信包传输过程中都有封包拆包处理,因此性能大打折扣;而Calico基于BGP路由方式实现,没有封包拆包和NAT,性能堪比物理机网络。

另外,Calico是纯三层的数据中心解决方案,主机之间二层通信使用的是物理机的MAC地址,避免了ARP风暴。除了路由方式,Calico也支持IPIP的隧道方式;如果使用BGP方式,需要机房的网络设备开启BGP功能。

公有云上需要解决的一个重要问题就是多租户网络隔离,我们使用了Kubernetes自身的NetworkPolicy和Calico的网络策略实现。给每个用户分配一个单独的Namespace,Namespace内部的Pod间可以通信,但Namespace之间

(ingress)的Pod不允许通信。Kubernetes的NetworkPolicy只支持对“入流量”

作限制,而Calico的网络策略作了更多的扩展,支持对“出流量”(egress)作限制,而且还具备更精细的规则控制,如协议、端口号、ICMP、源网段、目的网段等。

大部分容器网络给容器分配的IP只对集群内部可见,而登月平台上很多前向服务对外提供RPC接口,需要将容器IP暴露到集群外部。经调研之后选用了

Cisco开源的Contiv项目,它的底层原理是用OVS打通了容器的跨主机通信,我们使用的是它的VLAN模式,相对于基于隧道技术实现的overlay网络来说,这是underlay网络,它不是构建于物理机的网络之上,而是与物理机位于同一网络层面,这种网络的性能接近于物理网络。

存储

Kubernetes本身不提供存储功能,而是通过存储插件与第三方存储系统实现,Kubernetes支持二十多种存储后端,我们选用了Glusterfs。

Glusterfs是面向文件的分布式存储系统,架构和部署都很简单,社区版已经足够稳定,它的特点是:弹性、线性横向扩展、高可靠。Glusterfs在架构上消除了大多数文件系统对元数据服务的依赖,取而代之的是以弹性哈希算法实现文件定位,优化了数据分布,提高了数据访问并行性,极大地提升了性能和扩展性。

Kubernetes的Volume支持静态分配和动态分配两种方式。静态分配指的是由管理员手动添加和删除后端存储卷,动态分配则是使用Kubernetes的StorageClass结合Heketi服务实现。Heketi是Glusterfs的卷的管理服务,对外提供REST接口,可以动态创建、销毁Glusterfs Volume。

Glusterfs虽然性能很好,却不适合存储海量小文件,因为它只在宏观上对数据分布作了优化,却没在微观上对文件IO作优化。登月平台上大多数前向服务都是图像识别应用,需要将图片和识别结果保存下来,用作训练数据,进行算法的迭代优化。我们在调研之后采用了SeaweedFS作为小文件存储系统。

SeaweedFS的设计思想源于Facebook的Haystack论文,架构和原理都很简单,性能极好,部署和维护也很方便。SeaweedFS对外提供REST接口,结合它的filer服务可实现目录管理,我们在此基础上实现了批量上传和下载功能。SeaweedFS具有rack-aware和datacenter-aware功能,可根据集群的拓扑结构(节点在机架和数据中心的分布情况)实现更可靠的数据冗余策略。目前登月平台上很多图像服务已经接入SeaweedFS,每天存储的图片数量达到600万张,存储量以每天30G的速度增长。

因为多数计算任务都会使用HDFS,所以HDFS也是登月平台必不可少的存储组件。为了提高数据读写速度,我们引入Alluxio作为HDFS的cache层,跟直接读写HDFS相比,性能提升了几十倍。

在文件系统的多租户隔离方面,使用Kerberos和Ranger对HDFS作安全管理,Kerberos提供了身份验证,Ranger提供了权限校验。而Glusterfs的Volume 使用mount方式挂载到容器中,本身就可将用户限定在特定卷中,因此可变相支持多租户隔离。

相关文档
最新文档