论文部分内容阅读
摘 要:当前,传统的数据库技术及单纯基于Hadoop的分布式计算方法已无法满足离线数据和业务量的快速增长需求,运行成本大、工作效率低、用户体验差。文章提出基于TDH+Hive的离线计算平台,采用TDH作为离线数据存储平台,并通过Azkaban任务调度工具在Hive中对数据进行相应的ETL转换,根据不同作业对实时性要求的差异,将运行时间分散到不同时间段,实现系统性能的平衡,提升离线大数据的处理效率,同时能够精简数据、节省存储空间,降低后续的开发成本,提升开发效率。
关键词:离线数据;TDH;Hive;Azkaban
中图分类号:TP392
1 绪论
自20世纪90年代“大数据”的概念被提出以来,其重要性备受关注,“人类的大数据时代已经到来”更是在2012年麦肯锡咨询公司的研究报告中被强调。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产[1]。由此可见,运用新技术手段对大数据进行专业的“加工”和“处理”才能激发其内在价值,实现数据的“增值”。
本文基于TDH+Hive构建大数据的离线计算平台,采用TDH作为离线数据存储平台,并通过Azkaban任务调度工具在Hive中对数据进行相应的ETL转换。相对于传统的单纯基于Hadoop的分布式计算方法运行成本大、工作效率低、用户体验差等问题,本文构建的离线大数据计算平台,能够在兼容各类数据源的前提下,大大提高数据的处理能力,同时可以通过对数据的精简来达到节省存储空间的目的,进而降低后续的开发成本,提升开发效率。
2 TDH、Hive、Azkaban概述
2.1 TDH大数据平台
TDH是国内外较为领先的一款大数据基础软件,也是目前国内应用最为广泛的一站式Hadoop发行版,性能较开源Hadoop2有很大优势,已应用在各行各业。TDH整合高度容错、高效索引、内存计算、执行优化等技术来高效率、低成本的实现平台处理10GB至100PB的海量数据。同时,它引入不停机扩容机制来满足客户动态数据的变动需求,以此来解决MPP或混合架构数据迁移的问题。
TDH主要在HDFS和YARN之上对Hadoop进行了改进,它提供了高速的Erasure Code编码方式,适合nearline storage类应用,降低一半磁盘容量需求的同时提高了一倍的容错性能。它的这个功能主要为拥有PB级别的客户所应用,比如电信行业的话单数据、交通/电力行业的传感器数据、金融行业的历史交易数据等。在YARN上进行改进的目的主要是为了能更全面的管理CPU/内存等资源,并有效地支持Spark和Map/Reduce应用集群。它的技术优势主要表现在以下3个方面:极致的性能与可扩展性;简易的操作和管理;完整的SQL和ACID支持。
2.2 Hive数据仓库
Hive是建立在Hadoop上的数据仓库基础构架。在Hive中,定义了一种类似于SQL的查询语言HQL,用户只要熟悉SQL语句就可以进行查询数据操作,也可以不需要开发专门的MapReduce应用来进行不太复杂的MapReduce统计,这就可以非常便利的用于数据仓库的统计分析,因此它具有学习成本低的优势。除此之外,对于熟练应用MapReduce的用户可以在Hive中方便的开发出自定义的Mapper和Reducer来应对复杂的操作。同时,它为数据抽取、转换、加载(ETL)提供了一系列的工具,实现了存储、查询和分析存储在Hadoop中海量数据的功能。
在Hive中,Hadoop、Mapreduce是架构的基础,它主要由服务端组件以及客户端组件两个类构成,涉及的组件有:CLI、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver。下面就对两大类组件进行简单介绍。服务端组件中的Metastore作为元数据服务组件提供存储Hive元数据的服务;为了使不同类型的编程语言能够进行Hive接口的调用,在服务端组件中使用Thrift服务来实现可扩展而且跨语言的开发;Complier、Optimizer和Executor组成了服务端组件中的Driver组件,目的是能够对HQL语句进行解析、編译优化以后生成相应的执行计划,再通过调用底层的mapreduce来计算框架。在另一类的客户端组件中:CLI为命令行接口;诸如JDBC、ODBC等许多客户端接口在Hive的架构中是被设计在thrift客户端之上的;在Hive客户端中,启动Hive Web Interface(HWI)组件后,用户便可以使用网页方式来进行访问服务。
2.3 Azkaban任务调度工具
Azkaban是一套简单的任务调度服务,其功能是在某一个工作流内按照规定好的流程或顺序来执行一组工作,它是由Linkedin开源的一个批量工作流任务调度器,整体包括三部分Webserver、Dbserver、Executorserver,是Linkin的开源项目,开发语言为Java。它定义了一种KV文件格式来设立了各个任务之间的耦合、依存关系,同时,它还提供了一种便于web用户界面维护和跟踪的工作流服务功能。
Azkaban是一个相似于Oozie的工作流控制引擎,在这种架构中,它可以用来应对多个Hadoop离线计算任务之间的耦合、依存关系问题,用它来替代Crontab对周期性的任务进行调度也具有易操作性,拥有美观的可视化管理界面的同时更加直观,可靠性更强。
3 基于TDH+Hive的离线计算平台的设计与实现 本文提出构建基于TDH+Hive的大数据离线计算平台,可以将分布式计算框架运用到平台的海量离线数据的处理中,确保了大数据处理能力保持高效能的基础之上,能够高性价比地对积累的大量信息开展数据挖掘,与此同时,还能够灵活方便地提供添加新业务的处理流程。
3.1 离线计算平台设计目标
通过离线计算平台的构建,希望能够解决以下三点问题:
①高效率的处理大量的平台离线数据。随着数据的不同积累,在保障数据计算的正确性前提下,还能够保持数据的完整性,以及存储空间的合理占用。
②能够兼容多种数据源。在平台的海量大数据中,源数据具有复杂多样性,除了话单文件同时还有一些互联网的非结构化的数据。
③能够对数据进行精简从而节约成本。海量数据本身确实具有巨大的价值,但在项目的执行过程当中会对数据开展多维度多批次的操作处理,部分结果数据实质上是基于同一类型源数据获取的,伴随着过程的累积,这部分结果数据会变为价值不高的冗余数据。需要对数据进行提炼,进而优化存储空间、降低运行成本。
3.2 离线计算平台整体架构设计
在这个设计思路中,沿用传统数据平台机构的理念,继续采用了分层设计。它是根据需要提供服务的不同类型来设计不同的模块层次,并且限定了每个层次模块只能通过层次边界的接口与其下一层或者上一层的模块对接,这样就避免了跨层的交互。这样的架构中,各功能模块的内部是高内聚的,模块与模块之间是松耦合的,这非常有利于实现平台的高可靠性,高扩展性以及易维护性。举例来说,当需要扩容Hadoop集群时,只需在基础设施层增加一台新的Hadoop节点服务器即可,不需要对其他模块层进行任何变动,并且对用户是完全透明的。
在数据采集层中,它的主要功能是运用ETL操作将数据从各类数据源中采集出来,进而存储到数据存储器中。在这里,数据源种类多种多样,有日志、业务数据库、来自HTTP/FTP的数据,还有其他的数据源。
在数据存储与分析层中,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案[2]。在实时性要求不高的前提下,优选Hive对海量离线数据进行分析和计算。Hadoop框架中提供有MapReduce接口,Spark的性能优于MapReduce,在Hive中可以使用SparkSQL操作。
在数据共享层中,提供了数据共享服务,使得计算结果存放于此,以便于各业务和应用都能够方便的获取数据,以解决不能直接从HDFS上获取数据的问题。
3.3 离线计算平台的实现
①根据离线计算平台各种业务的数据处理需求,制定任务流程图,对于数据操作步骤类似的业务流程进行合并处理,然后将可以复用的任务流程抽象出来。
②建立流程处理框架,在Azkaban中配置数据处理任务的启动时间、启动间隔以及使用模板。
③將数据处理模板的流程进行归纳。对全部业务数据的处理需求进行收集、掌握,结合处理步骤,抽象出覆盖所有需求的数据处理任务流程。
④数据依赖和并发控制。根据各数据处理作业的依赖关系,合理巧妙的设定启动时间。
⑤对数据不稳定的情况进行处理。在数据处理时,要适当避免因话单记录时间不一而导致的完整业务只产生一部分话单记录情况所出现的误差。
⑥研究并实现基于Azkaban任务调度的处理流程。将处理步骤一致的流程抽象为模板,将符合要求的现有或新增业务数据均套用模板流程,通过这种方法可以减少冗余代码,降低成本和误差。在其中引入了数据静止时间的模式,这就可以在不影响计算效能的基础上,运用人为的向后回顾一个时间段来减少Hadoop数据采集时延造成的误差[3],这就大大提高了处理离线数据时的高效性和准确性。
4 结语
本文提出的基于TDH+Hive的离线计算平台,是通过对分布式数据处理技术进行深入的研究,在结合了实际需求的基础上,设计的一种可以实现新旧业务兼容的离线数据处理模式。该方法采用TDH作为离线数据存储平台,并通过Azkaban任务调度工具在Hive中对数据进行相应的ETL转换。将分布式计算框架应用到平台的离线数据处理中,能够在保障大数据处理效能的前提下,降低了运行成本,提升了离线大数据的处理效能和不同种类数据源的兼容性,并对数据进行了精简,从而节省了存储空间,降低了后续的开发成本,大大提升了开发效率。
参考文献:
[1]佰读.“大智移云”介绍(一):大数据与“大智移云”[C].河北省廊坊市应用经济学会.对接京津——京津冀协同发展(廊坊·北京副中心)论文集.河北省廊坊市应用经济学会:廊坊市应用经济学会,2016:101107.
[2]张勇.基于大数据的存储架构的分析与实现[J].宿州教育学院学报,2016,19(06):110111.
[3]朱燕燕.基于Hive的离线数据处理方法与实现[D].东南大学,2016.
作者简介:王敏(1984— ),女,汉族,陕西铜川人,硕士,讲师,研究方向:计算机专业教学。
关键词:离线数据;TDH;Hive;Azkaban
中图分类号:TP392
1 绪论
自20世纪90年代“大数据”的概念被提出以来,其重要性备受关注,“人类的大数据时代已经到来”更是在2012年麦肯锡咨询公司的研究报告中被强调。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产[1]。由此可见,运用新技术手段对大数据进行专业的“加工”和“处理”才能激发其内在价值,实现数据的“增值”。
本文基于TDH+Hive构建大数据的离线计算平台,采用TDH作为离线数据存储平台,并通过Azkaban任务调度工具在Hive中对数据进行相应的ETL转换。相对于传统的单纯基于Hadoop的分布式计算方法运行成本大、工作效率低、用户体验差等问题,本文构建的离线大数据计算平台,能够在兼容各类数据源的前提下,大大提高数据的处理能力,同时可以通过对数据的精简来达到节省存储空间的目的,进而降低后续的开发成本,提升开发效率。
2 TDH、Hive、Azkaban概述
2.1 TDH大数据平台
TDH是国内外较为领先的一款大数据基础软件,也是目前国内应用最为广泛的一站式Hadoop发行版,性能较开源Hadoop2有很大优势,已应用在各行各业。TDH整合高度容错、高效索引、内存计算、执行优化等技术来高效率、低成本的实现平台处理10GB至100PB的海量数据。同时,它引入不停机扩容机制来满足客户动态数据的变动需求,以此来解决MPP或混合架构数据迁移的问题。
TDH主要在HDFS和YARN之上对Hadoop进行了改进,它提供了高速的Erasure Code编码方式,适合nearline storage类应用,降低一半磁盘容量需求的同时提高了一倍的容错性能。它的这个功能主要为拥有PB级别的客户所应用,比如电信行业的话单数据、交通/电力行业的传感器数据、金融行业的历史交易数据等。在YARN上进行改进的目的主要是为了能更全面的管理CPU/内存等资源,并有效地支持Spark和Map/Reduce应用集群。它的技术优势主要表现在以下3个方面:极致的性能与可扩展性;简易的操作和管理;完整的SQL和ACID支持。
2.2 Hive数据仓库
Hive是建立在Hadoop上的数据仓库基础构架。在Hive中,定义了一种类似于SQL的查询语言HQL,用户只要熟悉SQL语句就可以进行查询数据操作,也可以不需要开发专门的MapReduce应用来进行不太复杂的MapReduce统计,这就可以非常便利的用于数据仓库的统计分析,因此它具有学习成本低的优势。除此之外,对于熟练应用MapReduce的用户可以在Hive中方便的开发出自定义的Mapper和Reducer来应对复杂的操作。同时,它为数据抽取、转换、加载(ETL)提供了一系列的工具,实现了存储、查询和分析存储在Hadoop中海量数据的功能。
在Hive中,Hadoop、Mapreduce是架构的基础,它主要由服务端组件以及客户端组件两个类构成,涉及的组件有:CLI、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver。下面就对两大类组件进行简单介绍。服务端组件中的Metastore作为元数据服务组件提供存储Hive元数据的服务;为了使不同类型的编程语言能够进行Hive接口的调用,在服务端组件中使用Thrift服务来实现可扩展而且跨语言的开发;Complier、Optimizer和Executor组成了服务端组件中的Driver组件,目的是能够对HQL语句进行解析、編译优化以后生成相应的执行计划,再通过调用底层的mapreduce来计算框架。在另一类的客户端组件中:CLI为命令行接口;诸如JDBC、ODBC等许多客户端接口在Hive的架构中是被设计在thrift客户端之上的;在Hive客户端中,启动Hive Web Interface(HWI)组件后,用户便可以使用网页方式来进行访问服务。
2.3 Azkaban任务调度工具
Azkaban是一套简单的任务调度服务,其功能是在某一个工作流内按照规定好的流程或顺序来执行一组工作,它是由Linkedin开源的一个批量工作流任务调度器,整体包括三部分Webserver、Dbserver、Executorserver,是Linkin的开源项目,开发语言为Java。它定义了一种KV文件格式来设立了各个任务之间的耦合、依存关系,同时,它还提供了一种便于web用户界面维护和跟踪的工作流服务功能。
Azkaban是一个相似于Oozie的工作流控制引擎,在这种架构中,它可以用来应对多个Hadoop离线计算任务之间的耦合、依存关系问题,用它来替代Crontab对周期性的任务进行调度也具有易操作性,拥有美观的可视化管理界面的同时更加直观,可靠性更强。
3 基于TDH+Hive的离线计算平台的设计与实现 本文提出构建基于TDH+Hive的大数据离线计算平台,可以将分布式计算框架运用到平台的海量离线数据的处理中,确保了大数据处理能力保持高效能的基础之上,能够高性价比地对积累的大量信息开展数据挖掘,与此同时,还能够灵活方便地提供添加新业务的处理流程。
3.1 离线计算平台设计目标
通过离线计算平台的构建,希望能够解决以下三点问题:
①高效率的处理大量的平台离线数据。随着数据的不同积累,在保障数据计算的正确性前提下,还能够保持数据的完整性,以及存储空间的合理占用。
②能够兼容多种数据源。在平台的海量大数据中,源数据具有复杂多样性,除了话单文件同时还有一些互联网的非结构化的数据。
③能够对数据进行精简从而节约成本。海量数据本身确实具有巨大的价值,但在项目的执行过程当中会对数据开展多维度多批次的操作处理,部分结果数据实质上是基于同一类型源数据获取的,伴随着过程的累积,这部分结果数据会变为价值不高的冗余数据。需要对数据进行提炼,进而优化存储空间、降低运行成本。
3.2 离线计算平台整体架构设计
在这个设计思路中,沿用传统数据平台机构的理念,继续采用了分层设计。它是根据需要提供服务的不同类型来设计不同的模块层次,并且限定了每个层次模块只能通过层次边界的接口与其下一层或者上一层的模块对接,这样就避免了跨层的交互。这样的架构中,各功能模块的内部是高内聚的,模块与模块之间是松耦合的,这非常有利于实现平台的高可靠性,高扩展性以及易维护性。举例来说,当需要扩容Hadoop集群时,只需在基础设施层增加一台新的Hadoop节点服务器即可,不需要对其他模块层进行任何变动,并且对用户是完全透明的。
在数据采集层中,它的主要功能是运用ETL操作将数据从各类数据源中采集出来,进而存储到数据存储器中。在这里,数据源种类多种多样,有日志、业务数据库、来自HTTP/FTP的数据,还有其他的数据源。
在数据存储与分析层中,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案[2]。在实时性要求不高的前提下,优选Hive对海量离线数据进行分析和计算。Hadoop框架中提供有MapReduce接口,Spark的性能优于MapReduce,在Hive中可以使用SparkSQL操作。
在数据共享层中,提供了数据共享服务,使得计算结果存放于此,以便于各业务和应用都能够方便的获取数据,以解决不能直接从HDFS上获取数据的问题。
3.3 离线计算平台的实现
①根据离线计算平台各种业务的数据处理需求,制定任务流程图,对于数据操作步骤类似的业务流程进行合并处理,然后将可以复用的任务流程抽象出来。
②建立流程处理框架,在Azkaban中配置数据处理任务的启动时间、启动间隔以及使用模板。
③將数据处理模板的流程进行归纳。对全部业务数据的处理需求进行收集、掌握,结合处理步骤,抽象出覆盖所有需求的数据处理任务流程。
④数据依赖和并发控制。根据各数据处理作业的依赖关系,合理巧妙的设定启动时间。
⑤对数据不稳定的情况进行处理。在数据处理时,要适当避免因话单记录时间不一而导致的完整业务只产生一部分话单记录情况所出现的误差。
⑥研究并实现基于Azkaban任务调度的处理流程。将处理步骤一致的流程抽象为模板,将符合要求的现有或新增业务数据均套用模板流程,通过这种方法可以减少冗余代码,降低成本和误差。在其中引入了数据静止时间的模式,这就可以在不影响计算效能的基础上,运用人为的向后回顾一个时间段来减少Hadoop数据采集时延造成的误差[3],这就大大提高了处理离线数据时的高效性和准确性。
4 结语
本文提出的基于TDH+Hive的离线计算平台,是通过对分布式数据处理技术进行深入的研究,在结合了实际需求的基础上,设计的一种可以实现新旧业务兼容的离线数据处理模式。该方法采用TDH作为离线数据存储平台,并通过Azkaban任务调度工具在Hive中对数据进行相应的ETL转换。将分布式计算框架应用到平台的离线数据处理中,能够在保障大数据处理效能的前提下,降低了运行成本,提升了离线大数据的处理效能和不同种类数据源的兼容性,并对数据进行了精简,从而节省了存储空间,降低了后续的开发成本,大大提升了开发效率。
参考文献:
[1]佰读.“大智移云”介绍(一):大数据与“大智移云”[C].河北省廊坊市应用经济学会.对接京津——京津冀协同发展(廊坊·北京副中心)论文集.河北省廊坊市应用经济学会:廊坊市应用经济学会,2016:101107.
[2]张勇.基于大数据的存储架构的分析与实现[J].宿州教育学院学报,2016,19(06):110111.
[3]朱燕燕.基于Hive的离线数据处理方法与实现[D].东南大学,2016.
作者简介:王敏(1984— ),女,汉族,陕西铜川人,硕士,讲师,研究方向:计算机专业教学。