基于TDH+Hive构建大数据离线计算平台的方法和实现

来源 :科技风 | 被引量 : 0次 | 上传用户:lpdshr
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:当前,传统的数据库技术及单纯基于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— ),女,汉族,陕西铜川人,硕士,讲师,研究方向:计算机专业教学。
其他文献
摘要:《互换性与技术测量基础》是应用型高等院校机械类相关专业的一门专业基础学科,具有内容涵盖广,知识体系庞杂,理论与实践联系紧密等特点。针对目前《互换性与技术测量基础》教学课程中出现的学生参与度低,知识点抽象难懂,理论课堂局限性等问题,将从教学方法、教学设计、实验课程等方面进行教改与探讨,以便达到更好的教学效果。  关键词:互换性与技术测量基础;教学方法;实验课程  Theteachingrefo
摘要:现阶段我国教育部明确提出以就业为导向,加快推进职业教育的改革创新发展,就业为导向是职业教育发展的根本方向及总体目标,职业教育发展要着重培养学生的职业技能。在中职教育期间,要为中职学生提供最佳的学习及发展机会,要让其成为出色的终身学习者及未来劳动者,计算机教学是中职职业教学中一项集知识技能于一体的教学,其最主要任务是提升学生计算机知识水平及实践动手能力,要重视以就业为导向的中职计算机课堂教学实
摘要:将理论知识融入案例教学中的方法,它不仅能够促进学生学习理论知识,还能激发学生在交流互动中的思考,同时还提高了学生分析问题的积极性,是符合当代大学生需求并且对培养大学生创新能力有效的教学方法。  关键词:转化式教学法;系统解剖学;教学应用  Applicationoftransformationalteachingmethodinsystematicanatomyteaching  LiaoS
摘要:在现代社会的不断发展中,人才培養目标发生了一定的转变,高职院校在进行具体教育工作时,数学教育改革是现代教育发展对其教学活动提出的最新要求,教师需要对其进行深入分析与合理优化,确保能够更为高效地开展数学教学,强化学生数学素养,本文首先分析现阶段高职数学教学具体情况,然后综合探究数学教学改革的具体策略,希望能够有效提升整体教学效果。  关键词:高职院校;数学教育;教育改革    高等院校在进行课
摘要:新时期,林业技术创新与林业的发展之间有十分紧密的联系,所以必须要结合林业发展的需要和林业技术创新的关键点来做好针对性的分析,尤其要把握不断变化的林业推广和林业技术发展之间的紧密性联系,帮助增强农业技术创新的效应,来带动现代农业的发展,为林业单位带来新的经济增长点,所以本文主要结合林业技术创新与现代林业发展的思考展开了研究与分析。  关键词:林业技术创新;现代林业发展;思考分析    当前时期
摘要:目的:探讨体验式教学在基础护理实训教学中的应用效果。方法:选择我院2019级三年制大专护理专业的学生作为研究对象。随机分为对照组147人和试验组154人,对照组采用传统教学方式,试验组采用体验式教学法,比较两组护生学期末理论和实训考核成绩和人文关怀能力得分。结果:试验组护生的理论、实训以及人文关怀能力得分均高于对照组,差异具有统计学意义(p<0.05)。结论:与传统教学模式相比,体验式教学可
摘要:基于信息化时代背景对中职平面设计课程的教学现状进行了分析,指出中职平面设计课程在教学内容等方面存在的一些缺陷。通过和企业需求进行对比后,对中职平面课程教学提出了进一步优化方案。  关键词:平面设计课程;企业需求;人才培养;课程优化    中职教育已成为国民教育体系中越来越重要的组成部分,直接为企业生产服务第一线提供劳动者。在信息化时代,平面设计课程不仅是平面设计专业的专业核心课程,具备一定的
摘要:基于不同面料衣物对储放环境需求存在差异的现实问题,为更好地保护各类衣物,本文对风压分区为衣物除湿保存的方法进行讨论。通过分区存放的措施,使娇贵衣物和贴身衣物处于正压区,干燥气体优先干燥正压区衣物,然后流进普通衣物所在区域干燥,最终实现衣物分级保护。  关键词:风压;除湿;衣物存放    衣柜作为在家庭中存放衣物的收纳区,其主要功能是储放衣物,保障衣物不受外界污染物的玷污,避免外界各种因素损坏