"百度基于Spark SQL构建了一个即席查询平台,旨在提供更易用、更稳定、安全且高效的查询服务。平台重点优化了性能和时效性,满足对数据的快速响应需求。"
在构建即席查询平台的过程中,百度选择了Spark作为核心技术,主要考虑了以下几个方面的原因:
1. **对比MPP与Hadoop**:
- MPP(如Impala)在扩展性和查询延迟上有优势,适用于较小规模的数据和较快速的查询需求。
- Hadoop(如Hive)和Spark SQL则更适合大规模数据处理和延时较高的场景,但Spark SQL在容错和调度策略上相对更优,能更好地与存储系统结合。
2. **易用性提升**:
- 平台提供了Platform as a Service(PaaS),用户无需关注部署、升级、调参或监控等运维任务。
- 提供多样化的API接口,包括Web、CLI、JDBC、SDK和Tools,方便不同用户群体使用。
- 引入了清晰的概念抽象,如Resource、Project、Dataset、Table和Partition,简化用户操作。
- 实现了查询级别的资源消耗账单,便于用户理解和控制成本。
3. **稳定性增强**:
- 接入层无单点故障,提高了系统的可用性。
- 支持Query持久化,即使在异常情况下也能恢复执行。
- 处理大量数据查询,保证不同用户的Quota,避免资源争抢。
- 建立了全方位的监控体系,确保问题能够及时发现和解决。
4. **安全性与资源隔离**:
- 使用Cgroup和Namespace实现容器隔离,保障CPU、Memory和文件系统的安全性。
- 对容器进行加固,防止恶意攻击。
- 设计了网络互通与隔离机制,保证数据传输安全。
- 在JVM层面引入安全策略,并在计算和存储框架层实施安全认证和加密传输。
5. **性能与时效性优化**:
- 通过紧密配合的查询和存储引擎,解决了I/O瓶颈。
- 翻译优化和智能调度,避开性能慢的节点。
- 构建索引以加速过滤操作。
- 充分利用内存,优化列式存储,降低框架开销。
- 优化器引入了Limit下推和Filter下推等策略,进一步提高查询效率。
6. **Web界面**:
- 设计了直观的Web界面,便于用户提交查询和查看结果。
百度的Spark SQL即席查询平台通过深度定制和优化,实现了对大数据的高效、安全、稳定的访问,提升了用户体验,满足了业务对数据即时分析的需求。