软件2015年卷IT传媒品牌-1-基于Mahout框架的Hadoop平台作业日志分析平台设计与实现曹1政(北京邮电大学计算机科学与技术学院,北京100876)摘要:随着Hadoop的流行与HadoopYarn的出现,集群的规模越来越大。在Hadoop生态圈中对集群运行状态的开源实现已经很成熟,但是尚未有对一个对Hadoop作业的运行趋势进行统计分析的平台。本文介绍了一个面向HadoopYarn的作业资源统计分析平台,面向集群管理员与普通用户,以时间、用户双维度对作业进行统计分析,得出一个Hadoop作业运行的标准。关键词:关键词1;数据分析;2;Hadoop;3;Yarn;4;作业分析;5;机器学习;5;Mahout中图分类号:TP399文献标识码:ATheDesignAndImplementationOfHadoop’sLogStatisticsAnalysisSystemBasedOnMahoutCaoZheng11(SchoolofComputerScienceandTechnology,BeijingUniversityofPostsandTelecommunications,Beijing100876,China)【Abstract】WiththewilduseofHadoopandappearanceofHadoopYarn,thescaleofclustersisgettinglarger.AndtheOpensourceimplementationoftheclustersoperatingstatemonitorsystemintheHadoopecosystemhasbeenverymature,butthereisnotyetaplatformforstatisticalanalysisoftherunningtrendoftheHadoopJobs.Inthispaper,ajobresourcestatisticalanalysisplatformYarnHadoopispresented,whichisfortheClusterAdministratorandtheordinaryusers,withthedoubledimensionofdateandusertoanalyzethejob,andgetthestandardofHadoopoperation.【Keywords】BigData;Hadoop;Yarn;JobAnalyzer;MachineLearning;Mahout0引言由Google公司于2004年提出的MapReduce并行计算框架目前被广泛应用于解决大规模数据处理问题。Hadoop是Apache基金会所开发的分布式系统基础架构,是Google的MapReduce编程模型的开源实习。由于Hadoop生态圈的日渐成熟,Hadoop逐渐成为许多互联网公司基础计算平台的一个核心部分。本系统在实现一个面向Hadoop生态圈的一个增强的监控分析平台。MapReduce拥有诸多良好特性,如负载平衡、高可扩展性以及容错等[1]。MapReduce是当前工业界和学术界最有效的大规模数据处理问题并行解决方案之一[2]。但由于Hadoop编程的可控性与编程人员的参差不齐,在Hadoop集群的使用过程中经常发生难以预料的错误。Hadoop日志是用户定位问题的最重要渠道,Hadoop集群也专门配置了HistoryServer来让开发人员使用以了解其提交的作业执行情况,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。但对较长期的日志展示分析效果欠佳,集群管理人员和开发人员难以了解整个集群的指标聚合指标[3]。本系统旨在基于Hadoop集群记录的作业运行日志和配置信息,统计作业在时间和用户两个维度上的运行指标,并针对一个具体作业,分析作业内任务的执行情况,进而为作业优化提供数据参考。目前笔者使用的线上集群规模为500台主机,内存为32TB,日均JOB数为两万左右。传统的作业分析软件如集群监控软件:Nigos、Ganglia、Flume等已无法满足作者简介:曹政(1989-),男,北京邮电大学硕士研究生,主要研究方向为网络管理、大数据平台架构软件2015年卷IT传媒品牌-2-监控需求,普通用户与集群管理员都迫切需要一个任务分析平台1.hadoop生态圈相关简介Hadoop是一个集成了了分布式文件系统HDFS和大规模并行计算模型MapReduce的开源框架。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。在Hadoop的生态圈中,一系列的为了处理超过单机尺度的数据处理的框架因此诞生。本文主要涉及了Yarn(MRv2)、Mahout、HDFS、Hive、Spark等[4]。1.1MapReduce——Hadoop的核心图1MapReduce架构图Google的网络搜索引擎在得益于算法发挥作用的同时,MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背后的最具影响力的“发动机”。除了Hadoop,你还会在MapReduce上发现MPP(SybaseIQ推出了列示数据库)和NoSQL(如Vertica和MongoDB)[5]。MapReduce的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题,此时分布式计算优势就体现出来。将这种技术与Linux服务器结合可获得性价比极高的替代大规模计算阵列的方法[6]。Yahoo在2006年看到了Hadoop未来的潜力,并邀请Hadoop创始人DougCutting着手发展Hadoop技术,在2008年Hadoop已经形成一定的规模。Hadoop项目再从初期发展的成熟的过程中同时吸纳了一些其他的组件,以便进一步提高自身的易用性和功能。1.2HDFS和MapReduce对于分布式计算,每个服务器必须具备对数据的访问能力,是HDFS(HadoopDistributedFileSystem)所起到的作用[7]。HDFS与MapReduce的结合是强大的。在处理大数据的过程中,当Hadoop集群中的服务器出现错误时,整个计算过程并不会终止。同时HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。HDFS对存储的数据格式并无苛刻的要求,数据可以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。开发人员编写代码责任是使数据有意义。HadoopMapReduce级的编程利用JavaAPIs,并可手动加载数据文件到HDFS之中。1.3Pig和Hive对于开发人员,直接使用JavaAPIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换[8]。Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(hivesuperimposesstructureondatainHDFS),并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。软件2015年卷IT传媒品牌-3-Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用HadoopJavaAPIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。1.4HadoopYarnApacheHadoopYARN(YetAnotherResourceNegotiator,另一种资源协调者)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处[9]。YARN最初是为了修复MapReduce实现里的明显不足,并对可伸缩性、可靠性和集群利用率进行了提升。本文采用的是Hadoop2.20,采用Yarn作为研究框架因为其出色的资源管理与良好的对接其他集群框架,Hive与Spark的资源都由其进行分配(SparkonYarn、HiveonYarn)。1.5Hadoop日志系统Hadoop自带了一个历史服务器,可以通过历史服务器查看已经运行完的Mapreduce作业记录。可以在相应HistoryServer的19888端口上打开历史服务器的WEBUI界面。可以查看已经运行完的作业情况。并且Hadoop有众多的开源日志系统:Facebook的scribe、Apache的Chukwa、LinkedIn的Kafka、Cloudera的Flume。其旨在构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;并具有高可扩展性。1.6Mahout框架Mahout是ApacheSoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘[10]。图2Mahout架构图通过使用ApacheHadoop库,Mahout可以有效地扩展到云中。Mahout支持一些集群算法实现(都是使用Map-Reduce编写的),它们都有一组各自的目标和标准:Canopy:一种快速集群算法,通常用于为其他集群算法创建初始种子。k-Means(以及模糊k-Means):根据项目与之前迭代的质心(或中心)之间的距离将项目添加到k集群中。Mean-Shift:无需任何关于集群数量的推理知识的算法,它可以生成任意形状的集群。Dirichlet:借助基于多种概率模型的集群,它不需要提前执行特定的集群视图。软件2015年卷IT传媒品牌-4-2.系统设计2.1系统架构本系统旨在基于作业的运行日志和配置信息,在时间和用户维度上统计分析作业的多种运行指标。作业的日志和配置数据从HDFS到HBase的同步,主要使用增量同步的方法实现,由于系统所有的统计分析指标(如某小时某个用户提交的作业总数等)都以小时为最小统计分析单位,因此数据同步单元也只需每隔一个小时同步一次数据,将这一小时内最新的作业日志和配置信息格式化后装载HBase。在Python中,Snakebite库提供了优秀的HDFS文件读写能力,其基于RPC访问Hadoop进行文件的读写,且方便易用,因此系统使用Snakebite完成作业日志和配置文件的读取操作。图3系统架构图图3中描述了本系统的整体架构,考虑到日志数据的快速增长以及快速查询的需求,原始的作业日志和配置信息保存在HDFS,通过系统提供的数据同步单元将作业的日志和配置信息结构化后保存到HBase中,作业调度单元周期性地检查HBase,并将HBase中最新的作业信息使用Hive或者直接利用HBaseShell进行分析统计,最终将完成统计分析的数据保存在MySQL,以提供数据查询API访问。HBase能够提供海量数据的存储设施,其支持列扩充,本系统涉及的大量分析统计工作,绝大部分是对各项指标的汇总操作,HBase足以提供这样的能力。此外,HBase也可以与Hive结合使用,以增强HBaseShell的统计分析能力[11]。2.2Hadoop