4.1 大数据平台建设阶段
处在这个阶段的企业已完成一个包含绝大部分大数据基础组件的平台,将数据导入系统,并运行一些基本的大数据查询和报表生成任务。此阶段一般会经历三个步骤:大数据平台起步、系统自动化和大数据平台的生产化。
4.1.1 大数据平台起步
最开始,企业的大数据团队可能会安装一个Hadoop集群和Hive(可能带有Sqoop),以便将数据传输到集群并运行一些查询。近年来,Kafka和Spark等组件也被考虑在内。如果要进行日志分析,也可以安装ELK(Elasticsearch、Logstash、Kibana)等套件。
但是,这些系统大多数是复杂的分布式系统,其中一些系统需要数据库支持。虽然许多系统提供单节点模式,但团队仍需要熟悉常见的DevOps工具,如Ansible、Puppet、Chef、Fabric等。
由于开源社区的辛勤工作,对大多数软件工程团队来说,使用这些工具和原型设计应该是可行的。技术实力比较强的团队可能在几周内就可以设置好一个能够联通及运行的系统,具体的工作量一般取决于要安装的组件数量。
4.1.2 系统自动化
安装好大数据组件之后,企业已经拥有了一个基本的大数据系统,接下来可能有如下需求(见图4-1)。
·一些定期运行的Hive查询,比如每小时一次或每天一次,以生成商业智能报告。
·使用一些Spark程序运行机器学习程序,生成一些用户分析模型,使产品系统可以提供个性化服务。
·一些需要不定时从远程站点提取数据的爬虫程序。
·一些流数据处理程序,用于创建实时数据仪表板,显示在大屏幕上。
图4-1 系统自动化阶段
要实现这些需求,大数据平台需要一个作业调度系统,以根据时间或数据可用性来运行它们,例如使用Oozie、Azkaban、Airflow等工作流系统,可以指定何时运行程序(类似于Linux系统上的Cron程序)。
工作流系统之间的功能差异很大。例如,一些系统提供依赖关系管理,允许指定调度逻辑,如作业A仅在作业B和作业C完成时运行;一些系统允许仅管理Hadoop程序,而另一些系统则允许更多类型的工作流程。平台必须选一个最符合自己要求的系统。
除了工作流系统,还有其他需要自动化的任务。例如,如果HDFS上的某些数据需要在一段时间后删除,假设数据只保留一年,那么在第366天,系统需要从数据集最早的一天中删除数据,这称为数据保留策略。
4.1.3 大数据平台的生产化
现在企业已经拥有了一个自动数据管道,数据终于可以在这个数据流水线上流动起来了。大功告成?现实情况是,生产环境中还会遇到下面这些棘手的问题:
·硬盘故障(据统计,硬盘第1年的故障率为5.1%);
·服务器故障(据统计,服务器第4年的故障率为11%);
·使用的大量开源程序有很多bug;
·自行开发的数据应用程序可能也会有一些bug;
·外部数据源有延迟;
·数据库有宕机时间;
·网络有错误;
·运维时的误操作。
这些问题在规模稍微大一些的系统中都会经常发生。为了保证系统的正常运行,我们还需要做好以下这些(见图4-2)。
·监控系统:监控硬件、操作系统、资源使用情况、程序运行。
·系统探针:系统需要的各种运行指标,以便可以被监控。
·警报系统:出现问题时,需要通知运维工程师。
·避免单点故障(SPOF):避免一个组件或者节点的失效造成整个系统的崩溃。
·备份:需要尽快备份重要数据;不要依赖Hadoop的3份数据副本,因为它们也可能被人为误操作而删除。
·恢复:如果不希望每次发生故障时都手动处理所有错误,那么最好尽可能让这些错误自动恢复。
可见,建立企业级系统并不像安装一些开源程序那么容易,把系统安装好并不意味着就可以直接在生产中使用它。虽然这些问题在系统刚刚成形的一两个月内不太明显,但对于任何一个在生产环境中运行大数据平台的团队,运维问题都是必须面对的。
图4-2 大数据平台的生产化阶段