这是一篇由Ashwin Sinha撰写的客座博客。
该博客介绍Wormhole,一个开源的基于Docker的Presto和Alluxio集群部署解决方案。通过该方案可以对文件系统进行快速分析(我们使用S3,GCS,OSS)。在数据分析方面,人们通常手动编写SQL查询并喜欢分析仓库中的数据(例如MySQL数据库)。但是随着数据的增长,这些存储开始能以支撑,因此需要在相同或更少的时间范围内更快地获得的结果。这可以通过分布式计算解决,事实上Presto就是为此而设计的。当Presto与Alluxio连接后,它的工作速度甚至会更快。这就是Wormhole项目产生的全部动机。
下图为解决方案的架构图:
让我们按照Wormhole中配置顺序来逐一介绍每个组件:
- Consul — Consul是一种服务网络解决方案,其功能是为跨任何运行平台以及公有或私有云的应用提供网络连接和保护服务。它通过容器的containerID来帮助识别容器,具体配置说明参见此处。
- Docker—ocker是一系列平台即服务(platform-as-a-service)产品,它们在被称为容器的包中使用操作系统级虚拟化支撑交付软件。容器彼此隔离,并将它们自己的软件、库和配置文件捆绑在一起;它们可以通过完善定义的通道相互通信。在我们的配置中,我们将所有服务都放置在Docker容器中,具体配置说明参见此处。
- Alluxio Master — Alluxio masters按高可用(HA)模式进行部署。它们负责制定查询执行计划,并将查询分发给workers,然后将合并的各个结果返回并发送回请求者。具体配置说明参见此处。
- Alluxio Worker — Alluxio workers是Alluxio的实际缓存存储组件。从Alluxio文件系统(FS)查询数据时,它从底层文件系统(可能是S3,GCS或任何已配置的FS)中获取数据,并以LRU方式存储在RAM中。下次无需访问FS并从其自己的缓存中返回数据块,具体配置说明参见此处。
- Hive Metastore — Hive Metastore是所有Hive表的元数据的集合。在我们的配置中,我们在MySQL上创建元数据存储以存储Alluxio的定位数据,具体配置说明参见此处。
- Presto Coordinator—Presto协调器按高可用(HA)模式进行部署。它们负责制定jiquery执行计划,并将查询分发给worker,然后将合并的各个结果返回并发送回请求者,具体配置说明参见此处。
- Presto Worker — Presto workers负责处理底层Alluxio中的数据。它们提取数据,对其执行操作,然后将各个结果发送给协调器,具体配置说明参阅此处。
除了上述组件外,我们还需要一个Zookeeper quorum组件及配置,这是为了使Alluxio主服务器和Presto协调器高度可用(HA)。有关配置的完整文档,请参阅此处。
实际运行
现在我们已经在Alluxio的顶层配置了Presto,那么应当如何使它可供所有人使用呢?答案是需要使用其他一些工具,例如Metabase,提供与Presto的连接。我们只需要添加适当的配置,它们就可用于各种数据分析。
Presto和Alluxio还提供UI来跟踪当前状态,这对用户作用很有帮助。
下一步计划
后面我们的工作重点将是通过用户界面使该解决方案提供自助服务,并使其实现自扩展(可能可以在Kubernetes上部署)。
关于作者
本文作者是一位专业的数据工程师,喜欢学习和使用分布式系统。他也是一名开源爱好者,乐于贡献社区,可以参考github和medium上的工作。此外,他还是喜欢探索远方并享受长途骑行的旅行者。
更多精彩内容,请Allluxio微信公众号:Alluxio_China