分布式相关技术学习
Docker
Docker概念
Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker核心技术
- namespace
- cgroup
Docker网络模式
- Bridge:默认设置,此模式会为每一个容器分配Network Namespace、设置IP。
- Host:容器使用宿主机的IP和端口。
- container:和一个指定的容器共享IP、端口范围等。
- none:无网络。
Kubernetes (k8s)
K8S概念
Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用。目标是让部署容器化的应用简单而高效。
Minikube
Minikube 是一种轻量级的 Kubernetes 实现,可在本地计算机上创建 VM 并部署仅包含一个节点的简单集群。
kubectl
Kubernetes 命令行工具 kubectl,让你可以对 Kubernetes 集群运行命令。
Hive
Hive概念
Hive是基于Hadoop的一个数据仓库工具,可实现大规模分析的分布式容错数据仓库系统。底层数据存储于HDFS上,本质是将SQL语句转换为MapReduce任务运行。
k8s部署hive
- 创建Hive的Manifest文件,即创建hive.yaml。
- 使用kubectl apply命令将Manifest文件部署到k8s上。
- 使用kubectl get pods命令查看Hive集群的状态。
- 通过hive创建库表和添加数据等操作验证集群可用性。
Spark
Ray
Ray example
1 | import ray |
Ray和Spark的区别与联系
- 共同点
- Apache Ray 和 Apache Spark 都是为了处理大规模数据和加速机器学习训练等任务而设计的。
- 区别
- Apache Spark 使用Scala或Java的函数式编程模式,对Python等其他语言支持较为有限;Apache Ray提供Python的原生支持。
- Apache Ray适用于实时计算和低延迟的场景;Apache Spark适用于大规模批处理和离线计算的场景。
- 在Spark系统中,只有唯一一个启动任务的master节点;Ray则不同,一个任务可以启动其他任务或者启动actor,并且可以互相通信。
- 联系
- Ray和Spark并不是冲突的,事实上二者可以集成共同使用。使用Raydp(不推荐)或者直接使用pyspark和Ray。
hive + spark + ray
- hive,spark,ray都部署在k8s上;
- 数据存储在hive中;
- 在数据处理部分,使用pyspark;
- 在程序的算法训练部分,使用ray。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Writer-X!