Hulu大数据架构与应用经验

时间:2022-04-22
本文章向大家介绍Hulu大数据架构与应用经验,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

内容来源:2017年8月12日,Hulu大数据架构部门负责人董西成在“网易博学实践日:大数据与人工智能技术大会”进行《Hulu大数据架构与应用经验》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:1540 | 4分钟阅读

摘要

Hulu大数据架构部门负责人董西成为我们分享Hulu在大数据架构与应用上的实践经验。

Overview

上图是hulu整体的大数据架构。我们的架构和其它架构基本都是大同小异,只在几个地方稍有不同。

Hulu在yarn上主要跑了四种东西,批处理、交互式计算、流式处理和服务。

我们自己开发了一个交互式计算引擎Nesto,在运行服务这一块,我们有一个工具叫Voidbox。

在这之上,我们还提供了各种各样的工具,方便用户使用整个集群。比如客户端管理工具Firework,还有统一的配置管理中心Horcrux,以及其它的工具。

除此之外,在上图右边可以看到我们用了两个集群管理工具,Cloudera Manager和Hawkeye。

我们有4个clusters、3个datacenters,这些基础设施都是被北京和美国的所有团队共享。目前在大数据基础架构这一块大约有十个人在负责整个集群的运维优化和开发。

Hulu Focus

Hawkeye

作为一个大数据基础运维团队,有一部分工作就是运维。运维必然需要一个强大的管理和监控系统,Hawkeye主要是帮助用户更好地了解数据或应用程序的变化,主要分为三部分。

第一个是报表。我们会给各个团队周期性地发送一些报表,这些报表里包括了冷热数据的分布、小文件的分布以及数据增长情况。让各团队了解数据的变化。

第二个是各种报警。有服务级别的报警、数据增长的报警、大的应用程序报警、服务状态的报警等等。这些报警信息有的会发送给数据团队,有的会发送给基础设施团队,以了解整个集群的运营情况。

我们还有自动化的程序,自动根据磁盘或者机器的状况产生任务,把它发送给常驻机房的团队,帮助我们进行修复。

Firework

Firework集成了hulu内部所有的Hadoop位置信息和版本信息。如果想用Firework访问不同的集群,只需要用相应的命令指令要访问哪一个机房,它会自动从中央仓库上把对应的版本缓存在本地,然后通过应用对应的客户端来访问Central。

Hulu Spark

目前Spark已经升级到了2.1版本,我们在内部版本里打了超过30个比较大的patches。

sparkstreaming和kafka结合的时候,任何的风吹草动都会使spark streaming出现问题,因为它在稳定性这一块非常差,现在开源社区还没有解决这个问题。

每一个spark会有很多executors,有时候客户需要调试各个executors。我们会采用一些启发式的算法,动态地探测各个executors的运行情况并对出现问题的executors采取一些措施。

我们有high cpu的applications,针对这样的应用程序,我们允许用户来定制每个节点可以跑的executors个数。

以上的例子都是我们对spark内部做的一些调整和优化,来帮助用户提高spark的稳定性和性能。

OLAP Engines

现在出现了越来越多的OLAP引擎,OLAP通常会分为三层。

如上图所示,最底层就是各种各样的OLAP引擎,有Impala、Presto、Nesto以及Druid。

上面是基于OLAP引擎开发的应用,比如多维分析、时间序列分析、Cohort的分析以及用户流通率分析。

最顶层就是各种各样的可视化系统,Tableau和Hulu BI Portal。

OLAP - Presto

OLAP引擎中比较好用的就要算Presto了。Hulu在Presto里面启用了Resource group特性,可以把OLAP的资源分成若干个资源池,给不同的组来使用。

ElasticPresto就是可伸缩的Presto,根据查询的负载,动态地增加或者减少计算资源。在这一块yarn为我们提供了很好的操作系统。把Presto运行到yarn上,可以简化部署,滚动升级变得非常容易,并可以根据负载的情况不断弹性伸缩可用的计算资源。

OLAP – Nesto Background

Hulu自己开发了一个计算引擎Nesto,它主要是解决嵌套式数据查询的问题。

Hadoop Multi-DC

Challenge

数据量非常大,应用程序也非常多,还有很多混合类型的应用程序。

我们把切换的downtime控制在一天之内,或者几个小时甚至更短。

Hulu的场景比较特殊,由于我们是一个跨国的公司,涉及到很多office,要与多个办事处的所有数据组协调。

如果想做透明的迁移,可能要做很多技术上的改动,自定义基础结构(代码级)以保证顺利地迁移。

Components

DCNamenode:支持数据中心级拓扑。

DCTunnel:根据文件夹级白名单和黑名单同步块;有带宽限制;基于优先级的块复制;调整报价;显示进度的Web门户网站。

DCBalancer:每一个数据中心内的平衡。

总结

构建基本的工具来更好地为用户服务,为用户的特殊案例定制开源项目,为特殊场景构建新系统。

今天的分享就到这里,谢谢大家!