Hulu整个AI Platform可以分为三层,从上到下依次是AI服务层,ML数据层,基础架构层。AI服务层主要是用于线上模型管理和部署,涉及到CICD, 监控,负载均衡等服务相关内容。ML数据层则包含了机器学习所用到的数据源,包含经过多个ETL pipeline清洗后生成的用于存放特征的数据仓库。最底层则是基础架构层,包括分布式存储,计算和调度等等,本文重点介绍这一层。

Sophon是Hulu在HOLAP的一个尝试。Hulu底层查询引擎采用Impala,前端可视化采用类似MSTR和Tableau这样的方案,而Sophon则是一个中间件,位于Impala查询系统和可视化系统之间,起到数据建模、数据缓存和数据路由等功能(具体可查看这篇文章)。本文重点讨论数据缓存部分的实现。

Spark Streaming是Spark生态系统中的重要组成部分,在实现上复用Spark计算引擎。Spark Streaming的优势是吞吐量大,响应时间也可以接受(秒级),并且兼容Spark系统中的其他工具库如MLlib和GraphX。对于时间不敏感且流量很大的系统,Spark Streaming是更优的选择。

同其他大部分分布式系统一样,Apache Mesos为了简化设计,也是采用了master/slave结构,为了解决master单点故障,将master做得尽可能地轻量级,其上面所有的元数 据可以通过各个slave重新注册而进行重构,故很容易通过zookeeper解决该单点故障问题。本文介绍了同其他大部分分布式系统一样,Apache Mesos为了简化设计,也是采用了master/slave结构,为了解决master单点故障,将master做得尽可能地轻量级,其上面所有的元数 据可以通过各个slave重新注册而进行重构,故很容易通过zookeeper解决该单点故障问题。

在大数据处理场景中,多表Join是非常常见的一类运算。为了便于求解,通常会将多表join问题转为多个两表连接问题。两表Join的实现算法非常多,一般我们会根据两表的数据特点选取不同的join算法,其中,最常用的两个算法是map-side join和reduce-side join。本文将介绍如何在apache spark中实现这两种算法。