hadoopmpp技术介绍对比与应用_第1页
hadoopmpp技术介绍对比与应用_第2页
hadoopmpp技术介绍对比与应用_第3页
hadoopmpp技术介绍对比与应用_第4页
hadoopmpp技术介绍对比与应用_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大数据技术介绍(HADOOP与MPP部分,包含与传统技术的区别)版本号100目录1概述511大数据及大数据技术512引入大数据的意义513术语、定义和缩略语52大数据技术的引入621传统数据仓库数据特征722大数据技术应用场景823HADOOP与MPP与传统数据库技术对比与适用场景83HADOOP实施指导意见931应用场景932前期方案设计阶段的建议10321对HADOOP软件选择的建议10322所需硬件设备建议13323组网方式建议15324规划节点规模时需要考虑的因素1833建设过程中的建议19331对压缩的考虑19332HBASE设计20333参数设置建议21334系统调优26335上线前注意事项31336上线后效果评估3234运维阶段的建议32341任务调度33342监控管理33343告警管理34344部署管理34345配置管理34346安全管理34347日志管理3535组织和培训建议35351人员安排建议36352培训建议364MPP数据库指导意见3741应用场景37411数据集市37412数据分级存储(历史库或者明细库)37413ETL38414小结3942前期方案设计阶段的建议39421软件平台选型建议39422容量评估方法建议41423网络评估方法建议4143建设过程中的建议42431数据分布规划42432故障与恢复策略规划4444运维阶段的建议45441系统监控45442告警管理45443SQL监控46444备份恢复46445安全及权限控制46446扩容及数据重分布46447开发工具4745组织和培训建议475系统集成建议4751数据互通的建议48511方式分析48512技术实现4852统一管理4953透明访问506附录A大数据技术介绍5161HADOOP及生态圈51611HADOOP简介51612HADOOP生态圈系统58613HADOOP10特性60614HADOOP20特性61615HADOOP选型63616HADOOPHA方案对比6462MPP数据库67621数据库架构风格67622MPP数据库基本架构68623MPP数据库主要运行机制69624MPP平台技术规范和要点7063X86服务器平台7164网络72641INFINIBAND72642万兆网75643千兆网76644适用场景7665硬盘77651硬盘类型介绍77652硬盘比较分析77653硬盘选购建议7866虚拟化79661概念79662虚拟化技术介绍80663适用场景801概述11大数据及大数据技术大数据(BIGDATA)的定义众说纷纭,从技术讲上它通常具备数据量大VOLUME、数据类型多(VARIETY)和数据处理和响应速度快(VELOCITY)的特征。麦肯锡定义大数据为超过了常规数据库软件所能搜集/存储/管理和分析的规模的数据集。大数据处理技术可以认为是处理大数据以便从中获取价值的技术。大数据及其技术正在影响着IT产业,利用HADOOP和关系数据库混搭来解决大数据难题是当前通常采用的方法。12引入大数据的意义引入原则传统数据仓库系统已经建设运营十年,新技术的引入不能影响原有的使用感知,需要按照分阶段逐步引入的方式。可以参考如下的几个引入原则1、先增量后存量。现有的数据处理系统引入大数据处理技术,面临着模型改造、流程改造等一系列的问题,可以首先在新上线应用引入大数据处理技术。2、先边缘后核心。对于原有功能的迁移,可以先迁移非关键的应用。这些应用不涉及到关键生产任务,可以忍受数据处理延迟和故障修复时间较高等可能出现的风险。3、先简单后复杂。数据处理逻辑较简单的应用也可以首先尝试引入大数据处理技术,降低实施的复杂度,积累运维经验。通过在大数据处理技术的规划、实施及运维过程中积累经验及教训,不断提升和完善大数据技术的应用水平,逐步拓展大数据技术应用领域。13术语、定义和缩略语名词解释HADOOP一个开源的分布式系统基础架构,由APACHE基金会开发。基于HADOOP框架,用户可以方便的开发分布式程序,充分利用集群的威力高速运算和存储。MAPREDUCEMAPREDUCE是HADOOP一种并行计算框架,用于大规模数据集的并行运算,其缩略语为MR。HIVE是基于HADOOP的一个数据仓库工具,可以将结构化的数据文件映射为数据库表,并提供常用的SQL支持。HIVE查询引擎将SQL语句转换为HADOOP平台的MAPREDUCE任务运行。KEYVALUE键值对,其缩略语为KV。KVSTOREKEYVALUE存储引擎,业界使用广泛的有GOOGLEBIGTABLE和APACHEHBASE、CASSANDRA、MANGODB等。KVSTORE系统是经典的NOSQL实现,与传统的关系型数据库相比,目前不支持SQL语言查询、事物、回滚等复杂机制。基于KVSTORE开发的应用,其数据表设计模式也与基于关系型数据库的开发有显著区别。由于KVSTORE模型简单,可靠性高,易于扩展,在互联网、大数据领域有非常广泛的应用。JDBCJAVA数据库连接MPP数据库MASSIVELPARALLELPROCESSING大规模并行处理数据库,相对于SYMMETRICMULTIPROCESSING。DPIDEEPPACKETINSPECTION深度包检测技术是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。2大数据技术的引入在大数据时代,传统数据仓库基础架构难以满足海量、多样化数据以及高速响应的需求。主要原因为传统IT系统采用SCALEUP设计路线,扩展性较弱,难以处理海量数据;小型机UNIX系统的封闭性导致系统扩容时难以利旧,且拥有成本高。为了解决上述问题,大数据时代涌现出了多种技术,典型技术如下HADOOP基于HDFS和MAPREDUCE,被互联网厂商广泛用于非结构化数据处理和半结构化日志处理。优点是编程灵活、针对问题优化、扩展性好,且基于廉价的X86标准硬件。MPP数据库基于关系代数理论,面向结构化数据处理设计的数据库管理系统。近年演进方向包括提高扩展性、支持快速复杂查询、支持X86标准硬件、高压缩、列存储、打通与HADOOP交互。例如VERTICA和GREENPLUM等。NOSQL抛弃了关系数据库复杂的关系操作、事务处理等功能,仅提供简单的键值对KEY,VALUE数据的存储与查询,换取高扩展性和高性能。例如HBASE和CASSENDRA等。流计算技术在流数据不断变化的运动过程中实时地进行分析,捕捉到可能对用户有用的信息,并把结果发送出去。例如S4和STORM等。内存数据库将数据存储在内存RAM中并进行计算和查询,充分发挥多核CPU的能力的数据库管理系统。例如HANA、EXAANALYTIC、TM1等。大数据技术与传统技术有很大的差别,它们不是为了通用的需求去设计,多是某一些厂商按照自己的特定需求或细分市场设计的,所以在应用的时候需要结合自身需求考虑到底引入哪些技术。21传统数据仓库数据特征传统数据仓库目前在数据量、数据类别、数据应用需求方面具有典型的大数据特征,包括1、容量巨大;2、类别多样;3、数据处理方式多样;4、访问需求多样。5、数据价值不同。22大数据技术应用场景大数据技术可以应用在以下场景(包括但不限于)1、原数据仓库底层结构化数据处理(ETL或ELT)。底层结构化数据处理计算任务重但复杂性不高,不涉及多表关联,适合引入大数据技术实现高效低成本。2、半结构和非结构数据处理与分析。3、数据集市。数据集市应用较为独立,且对可靠性的要求并不是十分严格,适合作为引入大数据技术形成资源池,实现各地市、各部门数据集市的云化、池化和虚拟化,最终实现资源动态调配,达到高效低成本。4、数据仓库数据分级存储。对低价值的细节数据以及长周期的历史数据(冷数据)访问频率较低,也能容忍相对较长的响应时间,可以存储在成本更低的平台上。5、数据挖掘。某些数据挖掘设计长周期的数据,计算时间很长(数天),占用很多数据仓库资源。还有一些数据挖掘算法超出了关系代数计算范畴,需要抽取数据到独立的计算平台(例如SAS)中进行计算。这些数据挖掘任务可以迁移到大数据平台之上进行计算。例如交往圈的计算,因其仅涉及单一数据,但数据量非常大,且需要多次迭代计算。6、对外查询。数据中心中不仅仅是数据处理,也需要将数据处理的结果对外提供查询,而这些查询一部分是海量的OLAP性质的查询,另外还有一部分OLTP性质的查询,即数量众多但每次查询量较少的。针对这些应用场景,可以看到,主要需要引入的是HADOOP和MPP技术,然后逐步考虑NOSQL、流计算和内存计算等技术的引入。23HADOOP与MPP与传统数据库技术对比与适用场景HADOOP和MPP两种技术的介绍请参见附录A。虽然这两种技术同属于分布式计算,但由于依据的理论和采取的技术路线不同而有各自的优缺点和适用范围。两种技术以及传统数据仓库技术的对比如下HADOOPMPP传统数据仓库平台开放性高低低运维复杂度高,与运维人员能力相关中中扩展能力高中低拥有成本低中高系统和数据管理成本高中中应用开发维护成本高中中SQL支持低高高数据规模PB级别部分PBTB级别计算性能对非关系型操作效率高对关系型操作效率高对关系型操作效率中数据结构结构化、半结构化和非结构数据结构化数据结构化数据综合而言HADOOP和MPP两种技术的特点和适用场景为HADOOP在处理非结构数据和半结构数据上具备优势,尤其适合海量数据批处理等应用需求。当然随着HADOOP技术的成熟,基于HADOOP的即席查询技术也逐渐崭露头角。比如仿照DREMEL的开源项目APACHEDRILL以及CLOUDERAIMPALA。MPP适合替代现有关系数据结构下的大数据处理,具有较高的效率,但其在大规模集群(超过100个节点)下的可用性还有待试点证实。MPP适合多维度数据自助分析、数据集市等;HADOOP适合海量数据存储查询(详单存储和查询)、批量数据ETL、非结构化数据分析(日志分析、文本分析)等。可以看出,任何一种单一技术都难以数据采集、存储、处理和对外服务的需求,多种技术并存才是发展趋势。3HADOOP实施指导意见本章主要对HADOOP平台在实施前的方案设计阶段、实施过程中的建设阶段和实施后的运维阶段中采取的步骤以及需要注意的问题提出指导意见。31应用场景HADOOP技术和产品在数据中心中可以用于以下场景(包括但不限于)场景为什么采用HADOOP采用的组件ETL1、降低原始数据存储压力2、降低数据仓库处理压力3、降低存储和处理成本HIVE/MR/PIG清单查询1、快速响应海量数据查询2、降低查询成本HBASE机器学习和数据挖掘1、降低海量数据挖掘成本2、缩短计算时间3、实现更加灵活的算法MAHOUT/R/MR冷数据存储1、降低冷数据存储成本2、降低冷数据查询成本HIVEOVERHDFS32前期方案设计阶段的建议本节主要对各公司搭建HADOOP平台之前对软硬件选型、组网以及容量规划方面提出建议。321对HADOOP软件选择的建议3211HADOOP版本选择建议HADOOP版本现状目前APACHEHADOOP开源社区非常活跃,周期性发布升级HADOOP及其相关软件(包括HBASE、HIVE、ZOOKEEPER等)。此外,一些公司,如CLOUDERA、HORTONWORKS公司等也基于APACHEHADOOP软件进行打包升级,开源发布其HADOOP版本。APACHEHADOOP开源社区发布的软件是当前社区的最新进展,但HADOOP各相关软件分别独立发布,可能存在兼容性的问题。而上述公司发布的软件一般基于APACHEHADOOP社区的某个版本进行测试升级修订,并将HADOOP各个系统整合测试,从而发布一个较为稳定且各系统间兼容的软件包。APACHEHADOOP开源社区发布的各个版本以及与CLOUDERA发布的CDH软件包的对应关系如下图所示其中,APACHEHADOOP020版本分支经过将020APPEND为兼容HBASE提供对HDFS文件追加写功能和020SECURITY提供基于KERBEROS认证的功能整合后,于2011年底发布了HADOOP10版本,并在2012年和2013年持续对该版本进行升级。APACHEHADOOP023版本分支则对原有APACHEHADOOP020版本做了较大的改动,这包括提供一种通用资源管理框架YARN以及对HDFS主节点扩展方案NAMENODEFEDERATION。而APACHEHADOOP20ALPHA版本又在023分支上又增加了HDFS主节点高可用方案。总体来看,目前APACHEHADOOP开源社区主要在HADOOP10和20两个版本上分别进行持续更新优化。而CLOUDERA公司的HADOOP版本CDH3和CDH4也分别基于HADOOP10和20版本进行封装。一般来讲开源社区的版本更新非常频繁,且有些组件之间并不兼容,而公司推出的版本一般都会基于某几个大版本进行推出。CLOUDERA版本的HADOOP用的比较广泛,目前CLOUDERA的最新版为CDH43,各组件版本如下产品包基线版本产品包基线版本HADOOP200HBASE0946HIVE0100CLOUDERAIMPALA10ZOOKEEPER343操作系统建议操作系统一般使用CENTOS/REDHAT6X,研究院主流为REDHAT64,内核2632以上。3212HADOOP组件及其用途HADOOP中主要包括如下组件HDFS。是HADOOP的分布式文件系统,用于存储分析和查询所需的数据,可以是结构化数据也可以是非结构化数据。文件按照块进行划分存储在多台机器上,并通过副本的方式保证高可用。MAPREDUCE。是HADOOP的分布式计算框架,通过MAP的方式将计算任务扩展到多台机器上,进而通过REDUCE的方式将多个节点上的结果进行合并。在HADOOP20中,原有MAPREDUCE框架被YARN代替,但对用户的接口不变。MAPREDUCE可以简称为MR,是很多HADOOP组件的计算引擎,例如HIVE、PIG、MAHOUT等。HIVE。是HADOOP上的SQL解析和执行引擎。其支持SQL的一个子集,名为HIVEQL。HIVE通过元数据保存表结构信息,并将输入的HIVEQL转换为MAPREDUCE进行执行。HBASE。是HADOOP上的一个键值对NOSQL数据库,其主要特性是支持高并发文本数据写入和读取,舍弃了关系数据中的事务、关联、复杂索引等HBASE的典型场景可用于详单存储和查询、互联网内容存储、GIS数据存储、半结构化历史数据存储。ZOOKEEPER。是HADOOP中的分布式可靠协调系统,被HADOOP的一些组件所用,例如HBASE和HIVE(可选)等。MAHOUT是一组在MAPREDUCE上的实现的数据挖掘算法库,可被调用用于数据挖掘计算。OOZIE是一个HADOOP上的工作流组件。PIG。是另一个HADOOP上的脚本语言解析和执行器,将面向过程的PIGLATIN语言解析为MAPREDUCE任务执行。CASCADING。是一个架构在HADOOP上的API,用来创建复杂和容错数据处理工作流。它抽象了集群拓扑结构和配置来快速开发复杂分布式的应用,而不用考虑背后的MAPREDUCE。IMPALA。是另一个SQL解析引擎,但其绕过了MAPREDUCE,利用自己的执行引擎,充分利用内存来直接访问HDFS上的文件。3213数据处理方式建议从上节看,在HADOOP上进行数据处理可以选择多种方式。但目前较为流行的是采用MAPREDUCE直接编程或者利用HIVE。PIG由于要学习另外一种语言而用得较少,IMPALA由于其对内存的渴求而难以用于大数据的加工。对于HIVE和MAPREDUCE用于数据处理,比较如下HIVEMAPREDUCE查询语言HQLJAVA或其他语言调优方法中多性能略差略优易用性简单(类SQL)复杂(编程)数据格式结构化结构化和非结构化均可可以看出HIVE和MAPREDUCE在很多方面基本都相同。在调优方法、性能方面,HIVE不如MAPREDUCE,尤其是MAPREDUCE可以针对性的对于某些应用的算法优化是HIVE无法比拟的。但是HIVE因为类SQL实现的机制极高地提升了开发人员的工作效率,减轻了工作量,而MAPREDUCE的编程则相对复杂一些,普通水平的MR程序员,写出来的程序很可能效率低于HIVE。322所需硬件设备建议3221服务器配置建议HADOOP被设计运行在大规模通用X86硬件平台之上,使用本地存储(DAS)来实现SCALEOUT。所以其对硬件的要求较低,一般的PC服务器也可以运行,只要满足发行版所要求的操作系统和JDK需求即可。但是在实际使用中需要根据HADOOP的应用环境来合理配置硬件,充分发挥每个部件的效率。在前期试点中,我们发现如果执行MAPREDUCE,特别是在压缩文件上执行,其对CPU的消耗较高,CPU成为了瓶颈;而在运行HBASE的时候,更多的内存会缓存更多的数据,提高查询吞吐率并缩短响应时间。所以建议这两种情况下,可以考虑按照如下配比来配置硬件项目主节点配置建议数据处理(MR/HIVE)的数据节点数据查询(HBASE)的数据节点,可以与数据处理的数据节点合设ZK节点CPU个数及核心数2路8核以上2路8核以上,如果压缩数据或者处理比较复杂,可以考虑更多路多核的2路6核以上2路8核以上硬盘数硬盘数可以不同太多,46块6、8或者12块,数据处理时IO一般不是瓶颈,但更多的磁盘可以存储更多的数据6、8或者12块,取决于存储量(主要靠缓存)硬盘数24块内存128G或更高48G或更高64G或更高,太高GC可能成为负担48G或更高网络双口万兆或千兆网卡双口万兆或千兆网卡,主要影响装载速度和节点间数据交换效率双口千兆网卡双口万兆或千兆网卡,对网络延时有高要求,如果可以,建议单独设立奇数个集群,35个内存的选择通常情况下,HADOOP处理任务每个CPU逻辑核(指超线程下,一般一个核对应两个逻辑核)对应2G内存即可。CPU的选择实测表明HADOOP处理性能与CPU性能密切相关,任务运行时间与SPEC值基本成反比关系,因此应该选择性能较高的CPU。服务器类型一般的HADOOP项目选择2U的机架式服务器,试点中有公司选择了多节点服务器(2U四节点),也应用得比较好。3222硬盘挂载建议操作系统盘可以采用SAS或SATA盘,建议采用两块硬盘盘做RAID1后作为系统盘,磁盘支持热插拔,方便运维。对于数据节点存放数据的磁盘可以采用SATA降低成本,提高存储量。由于HADOOP在软件层面已实现了数据的冗余备份,不必要在硬件层面通过RAID再做冗余。在效率提升方面,HADOOP自身的“优化策略”推荐HDFS数据直接存储到多块物理盘,而不采用RAID(已经在测试中验证了这个结论)323组网方式建议一个完整的HADOOP集群中的节点,分为三个角色CLIENT、MASTER和SLAVE,如下其中CLIENT部署在用于跟HADOOP进行交互的应用节点中。MASTER节点用于集群管理,主要与CLIENT进行通讯,为CLIENT分配可用的SLAVE节点,同时MASTER会维护SLAVES节点上报的每个运行参数。角色包括HDFS中的NAMENODE、SECONDARYNAMENODE、MAPREDCUE的JOBTRACKER等MR2是RESOURCEMANAGE。SLAVE节点是HADOOP中的执行者,主要模块包括DATANODE用于存储,TASKTRACKERMR2为NODEMANAGE执行并行计算。其他可单独部署ZOOKEEPER节点集群奇数个(35)个,增加一个NTPSERVER节点,实现时间同步。综合来说,在HADOOP集群中有大量文件读写或者MAPREDUCE计算任务提交时候,都会出现大量的网络交互,尤其是MAPREDUCE。所以一般建议给HADOOP提供专用的私有网络,用于内部数据的交互,网络带宽为万兆网(指万兆以太网或INFINIBAND网络,下同)或千兆,万兆网不仅仅10倍于千兆网的带宽,在峰值流量下,其时延也大大低于千兆网。根据HORTONWORKS的建议,对于较小的集群至少保证所有节点点到点千兆网连接,对于更大的集群使用千兆网可能造成性能的下降,在超级的数据中心,YAHOO的做法是同一个机架的20台节点中每台通过2个千兆网卡绑定的方式和其他节点通信,对于机架使用2条万兆网连接。根据HADOOP集群数量不同,可以将集群分为小集群、中级集群和大规模集群三大类。一般来讲,具体个数与组网与核心交换机支持的网络口数量,具有较大关联。以下对这三种规模的集群组网方式进行分别描述。3231小集群节点规模10个节点内主要特征计算和存储能力有限,用于进行HADOOP以及相关生态系统应用功能验证建议组网主要关注点优先考虑升级兼容性MASTER节点无需HA。千兆网络,也可用万兆,为后续扩容准备。预先考虑扩容后的IP划分。3232中级集群节点规模10100节点;主要特征企业级典型集群规模,总数据量在百TB级别(冗余情况下),主要用于进行中等规模数据量计算(单次10亿级别或者10TB同等数量级数据计算),一般来讲,具体节点个数受限于上层交换机口的数量。建议组网图主要关注点集群高可靠,机架之间通讯使用2条万兆网卡连接;机架内部通讯使用2条千兆网卡绑定足够,但考虑后续扩容和以及节点性能提升(如使用SSD硬盘)也可使用万兆网卡。HADOOPHAHDFSHAMAPREDUCEHA等。机柜单点,避免MASTER在同一机柜。HDFS机架感知开启。交换机HA使用双换机放置不同机柜VLT方式的可靠性最高,但会带来连接复杂性上升,具体可以根据能力进行适当调整。3233大规模集群节点规模大于100节点;主要特性PB级别以上存储规模;MAPREDUCE计算任务量大,且持续增加;多场景需求MAPREDUCE、HDFS、HBASE、HIVE、ETL、WORKFLOW等;多RACK,跨RACK数据传输量频繁;建议组网图主要关注点节点与机架交换机使用L2连接。机架交换机与核心交换机使用L3连接。机架内部通讯延迟低于跨机架时延(HADOOP默认策略)。交换机OVERSUBSCRIPTION(入出率)比率建议251(不能高于交换机最高值)。核心交换机与RACK数相关,RACK数量与核心交换机数量和端口数成正比,但交换机不应太多,会降低机架上传带宽。机架交换机方式的机柜交换机的上行链路会成为瓶颈,交换机数量多,设备管理复杂性增加。在核心交换机端口紧张情况下,可以从机架交换机接入外部网关,提供集群外部访问能力。324规划节点规模时需要考虑的因素1、计算能力估算应依据小规模基准测试针对所需的业务类型进行模拟测试,依据近似线性扩展原理,根据业务需求可计算出计算能力节点个数。考虑到扩容及其他因素影响,建议预留30的计算能力冗余。2、存储能力估算压缩比、副本数、冗余量的考虑将影响存储能力评估,需要预先确定。可以参考此公式进行估算(业务估算数据量压缩比副本数)/冗余量当HDFS剩余空间较小时会影响性能。建议冗余量设置为30。进行HBASE存储估算时,需要考虑数据膨胀率,一般来讲可以为2。3、其余节点估算除了MASTER节点和SLAVE节点外,还应对接口机、监控运维、调度预留机器。33建设过程中的建议本节主要对HADOOP平台搭建和配置过程中遇到的问题提出建议。331对压缩的考虑在大数据平台中,采用合理的压缩算法不仅能节省存储,而且还由于减少了IO的数据量而在大部分场景中可以缩短处理时间。因此在系统搭建过程中应提前确定压缩的策略。HADOOP的HDFS中可以采用的压缩算法及其特点如下表工具算法文件扩展名多文件可分割性(支持MR并行处理)压缩率(压缩至)SNAPPYSNAPPYSNAPPY是是约37GZIPDEFLATEGZ不不约25ZIPDEFLATEZIP是是,在文件范围内约22BZIP2BZIP2BZ2不是约18LZOPLZOLZO不是约35压缩率是试点中测试结果,不同的数据压缩率并不一样。以上压缩格式的压缩率为BZIP2GZIPLZOSNAPPY。但是压缩率高通常代表压缩和解压时间长,综合多个试点省对于各种压缩格式性能比较的测试结果,大致得到以下结果SNAPPYLZOGZIPNOCOMPRESSBZIP2。所以在不同的场景下,宜选择不一样的压缩方式,主要可能有以下场景1、原始数据就是压缩的,那么最好按照原始数据的压缩格式直接上传HDFS,在HDFS中并行处理过程中可以顺带解压。这样可以缩短装载时间(压缩数据量少)。2、MAPREDUCE或者HIVE的中间结果的压缩。可以在MAPREDUCE程序中设置MAP后的中间结果用压缩模式,然后交给REDUCE,试点中我们发现可以节约处理时间,特别是对那种在MAP和REDUCE中有大量数据交换的操作,例如常规的JOIN。HIVE中也是类似。这种情况下,适合采用SNAPPY与LZO这种压缩解压性能快的压缩算法。以下代码显示了启用RNAP输出压缩和设置压缩格式的配置属性。CONFSETCOMPRESSMAPOUTPUTTRUECONFSETMAPOUTPUTCOMPRESSORCLASSGZIPCODECCLASS3、处理后数据或者冷数据的压缩。这些数据可以采用压缩率稍高的算法进行压缩以节约空间,比如ZIP或BZIP2,特别是在冷数据归档的情况下。但如果数据可能会频繁被即席查询的话,还是应该选择解压速度快一些的压缩算法。压缩的设置如果要压缩MAPREDUCE作业的输出,请在作业配置文件中将MAPREDOUTPUTCOMPRESS属性设置为TRUE。将MAPREDOUTPUTCOMPRESSIONCODEC属性设置为自己打算使用的压缩编码/解码器的类名。332HBASE设计与传统技术不一样,HADOOP没有走产品化的道路,其中的组件可定制程度非常高。这一方面提高了效率,另一方面也对使用人员提出了更高要求。HBASE就是如此,合理的HBASE设计可以极大提高查询性能。可以考虑如下设计要素ROWKEY设计HBASE表的ROWKEY设计,一般是将关系数据库中的候选KEY拼接形成。但是要注意热点问题,比如ROWKEY开始的几位是时间排序,那么在插入的时候,最近几天的数据很可能是热点数据,这样所有的查询可能都指向了一个REGIONSERVER导致了HBASE的性能瓶颈。尽量避免使用单调递增的ROWKEY,因为在添加数据的时候,所有的新数据都添加到最后一个REGION,前面的REGION没有或者很少有请求,也是热点问题。热点问题的处理方式一般是“加盐“,即在ROWKEY前面添加HASH数,来对数据进行HASH划分。列簇设计HBASE表的COLUMNFAMILY最好少于4,一般少于3,对于一般数据放入一个列簇中即可。对于一些强关联,频繁访问的数据可以放一列,这样在取数据时,热点访问只用取这一列数据,可以节省IO。多个列簇有各自MEMSTORE,MEMSTORE开销大,而且FLUSH一个列簇,其他的类簇也会FLUSH,会造成不必要的开销。REGION划分HBASE在导入大量数据前最好预先划分REGION,这样可以加快导入效率。同时也要避免使用HBASE自动划分REGION,在一种情况下,HBASE面临大量写入或者SCAN请求,同时它的REGION中的数据又达到了阀值,那么它会启动自动划分REGION,有可能导致REGION划分风暴,大量的请求会使REGIONSERVER和NAMENODE的压力过大而导致REGIONDEAD或者NAMENODEDEAD。使用TTLTTL(TIMETOLIVE),它一般可以用来控制数据的生存时间。一些数据比如客户几年以前的数据,几年以后已经不关心这些数据,可以使用TTL删除。如果数据没有这些要求,可以不使用。333参数设置建议本节主要讨论重点参数的设置建议。3331副本个数副本数设置建议按照HADOOP默认的3副本,这可以有效防止硬盘受损、机器或机架故障导致数据丢失或损坏。设置参数为HDFSSITEXML文件中的DFSREPLICATION参数。但在实际的生产中,为了节省存储或者提高处理效率,可以考虑采取动态的副本创建策略。比如对于非主营业务或者临时需求,原始数据装载到HDFS时可以选择一副本或者两副本从而提高装载和出数效率,也可以节省存储空间。可以在上传时设定副本个数为NHADOOPDFSDDFSREPLICATIONNPUT也可以之后修改副本个数BIN/HADOOPDFSSETREPRW也可以查看副本个数查看当前HDFS的副本数HADOOPFSCKLOCATIONS3332块大小HDFS块大小,默认是64M(某些发布版是128M,比如CDH)。但考虑到目前机器CPU的计算能力普遍很高,对于MAPREDUCE在做MAP的时候可以处理比较大的单个文件,目前一般建议BLOCKSIZE设置稍微大一点,比如256M或者512M。但跟实际应用场景相关,需要根据不同的硬件环境以及应用场景进行相关测试,然后得出最佳设置。3333SLOT数(MAPREDUCE1X)SLOT数主要是指以下两个参数的的设置与搭配MAPREDTASKTRACKERMAPTASKSMAXIMUM每台TASKTRACKER允许启动的最大MAP槽位数,官方建议为CPU数量2CPU数量0751MAPREDTASKTRACKERREDUCETASKSMAXIMUM每台TASKTRACKER允许启动的最大REDUCE槽位数,官方建议为CPU数量2CPU数量0501根据各个省试点的经验,无论是MAP槽数还是REDUCE槽数一般设置为CPU核数的12倍,MAP和REDUCE的槽数配比一般为21。但跟实际应用场景相关,需要根据不同的硬件环境以及应用场景进行相关测试,然后得出最佳设置。3334其他配置参数HADOOP1XHDFS配置文件HDFSSITEXML参数名参数值说明DFSDATANODEDATADIRFILE/DATA0,FILE/DATA1,FILE/DATA2DATANODE的数据目录如果DATANODE对应的机器上有多块磁盘,例如/DISK1/DISK3,DFSDATADIR可以配置为”/DISK1/DATA,/DISK2/DATA,/DISK3/DATA”,DATANODE会在写数据时,以轮询的方式选择一个目录写入数据,一般这些目录是不同的块设备,不存在的目录会被忽略掉,参考配置属性DFSDATADIRDATANODE如果有多个磁盘不建议做RAID,因为做RAID会有性能损失,还会导致一个磁盘坏了,整个硬盘也不能用了,而HADOOP可以规避这个问题。DFSNAMENODENAMEDIRFILE/DIR1,FILE/DIR2,FILE/DIR3元数据保存目录设置多个,保证数据可靠性DFSDATANODEBALANCERBANDWIDTHPERSEC20485760在带宽和机器数允许的情况下,设置数据均衡传输量为10M/S或更大,加快均衡速度FSTRASHINTERVAL1440设置需要支持回撤周期(单位为分钟)回撤操作在删除文件的当前目录下(HDFS中)有TRASH目录,讲目录中对应文件移到当前目录即可。MAPREDUCE配置文件CORESITEXML参数名参数值说明HADOOPTMPDIR/DATA2/TMPHADOOP文件系统依赖的基础配置,默认在/TMP里,默认情况下MASTER会将元数据等存在这个目录下,而SLAVE会将所有上传的文件放在这个目录下,由于上传到HADOOP的所有文件都会被存放在HADOOPTMPDIR所指定的目录,所以要确保这个目录是足够大的,但是对挂载磁盘的IO性能压力比较大文件MAPREDSITEXML参数名参数值说明MAPREDJOBTRACKERTASKSCHEDULERORGAPACHEHADOOPMAPREDFAIRSCHEDULER公平调度,可以让多个JOB并行,需要额外的JAR包MAPREDQUEUENAMESDEFAULTTBEQUEUE自定义公平调度名称MAPREDFAIRSCHEDULERALLOCATIONFILE/HOME/BIGDATA/APPS/HADOOPMRTALKYUN/CONT/POOLSXML公平调度的配置文件MAPREDMAPCHILDJAVAOPTSXMX1024设定每个MAP的JVM大小,使SPILL过程有足够的内存,减少磁盘IOMAPREDREDUCECHILDJAVAOPTSXMX2048设定每个REDUCE的JVM大小,减少磁盘IOMAPREDTASKTRACKERMAPTASKSMAXIMUM8容忍的MAP作业最大并发个数按照前面3333的SLOT数量设置MAPREDTASKTRACKERREDUCETASKSMAXIMUM8容忍的REDUCE作业最大并发个数同上MAPREDMAPOUTPUTCOMPRESSIONCODEC默认MAP结果输出的默认压缩算法MAPREDTASKTIMEOUT默认MAPREDUCE任务默认的超时设置MAPREDMINSPLITSIZESPLIT输入最小尺寸,决定了MAP任务数量MAPREDREDUCETASKS设定REDUCE任务数量TASKTRACKER的中间输出目录MAPREDLOCALDIR。MAP和REDUCE任务MAPREDUCE产生的中间数据会特别多,为了减少磁盘压力,如果机器有多个磁盘,也可以像DATANODE的数据目录设为”/DISK1/LOCAL,/DISK2/LOCAL,/DISK3/LOCAL”文件HADOOPENVSH参数名参数值说明HADOOP_HEAPSIZE4000HADOOP所有进程的JVM配置参数,包括NAMENODE/JOBTRACKER/DATANODE/TASKTRACKER所使用的最大内存HBASE配置文件HBASEENVSH参数名参数值说明HBASE_HEAPSIZE8192(根据实际情况考虑)HBASE所使用的最大内存HBASE_MANAGES_ZKFALSE设置HBASE不自行管理ZK服务,需额外提供ZK集群的服务文件HBASESITEXML参数名参数值说明HBASEREGIONSERVERHANDLERCOUNT20REGIONSERVER的请求处理IO线程数,对于高并发,适当调高以提升性能HBASEHREGIONMAXFILESIZE53687091200REGION分割的阀值,适当设大以减少REGION分裂的次数HBASEHREGIONMAJORCOMPACTION0关闭自动MAJOR_COMPACT,默认是1天进行1次对TABLE的STOREFILE记性合并清理,在保证集群性能的前提下,由运维人员进行该操作可以避免高峰期,会更灵活HBASERPCTIMEOUT600000节点间通信等待时间,主要是为了减少高并发时,延长节点间响应等待时间HBASECLIENTPAUSE3000客户端在重试前的等待时间HBASEREGIONSERVERGLOBALMEMSTOREUPPERLIMIT039MEMSTORE占HEAP的最大百分比,直接影响写的性能HFILEBLOCKCHCHESIZE04STOREFILE的读缓存占用HEAP的大小百分比,该值直接影响数据读的性能HBASEHREGIONMEMSTOREFLUSHSIZEREGION上MEMSTORE的大小是64MBHBASEREGIONSERVERHANDLERCOUNT一个REGIONSERVER的最大并发HANDLER数目HBASEREGIONSERVERCOPROCESSORHANDLERCOUNT一个REGIONSERVER的COPROCESSOR最大并发HANDLER数目334系统调优3341HIVE1、少用COUNTDISTINCT例如SELECTCOUNTDISTINCTUSR_MOB_NBRFROMODSTO_CDR性能差的原因只会用一个REDUCE去处理。优化的写法SELECTCOUNT1FROMSELECTUSR_MOB_NBRFROMODSTO_CDRGROUPBYUSR_MOB_NBRX2、表关联时,过滤条件写在合适的位置例如SELECTAUSR_MOB_NBR,SUMAMOB_FEE,SUMBCALL_CNTFROMHIVE_TEST_TO_CDRALEFTOUTERJOINHIVE_TEST_TO_CDR2BONAUSR_MOB_NBRBUSR_MOB_NBRANDBCALL_CNT10WHEREADIR_TYP_CDIN3,5,6GROUPBYAUSR_MOB_NBR性能差的原因这样写会导致先关联,后过滤优化的写法SELECTAUSR_MOB_NBR,SUMAMOB_FEE,SUMBCALL_CNTFROMSELECTFROMHIVE_TEST_TO_CDRWHEREDIR_TYP_CDIN3,5,6ALEFTOUTERJOINHIVE_TEST_TO_CDR2BONAUSR_MOB_NBRBUSR_MOB_NBRANDBCALL_CNT10GROUPBYAUSR_MOB_NBR3、MAPJOINMAPJION会把小表全部读入内存中,在MAP阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在MAP是进行了JOIN操作,省去了REDUCE运行的效率也会高很多这样就不会由于数据倾斜导致某个REDUCE上落数据太多而失败。于是原来的SQL可以通过使用HINT的方式指定JOIN时使用MAPJOIN。SELECT/MAPJOINA/FA,FBFROMATJOINBFONFATAANDFFTIME20110802相关参数HIVEMAPJOINCACHENUMROWS25000HIVEMAPJOINSMALLTABLEFILESIZE250000004、BUCKETEDMAPJOINBUCKETEDMAPJOIN是一种特殊的MAPSIDEJOIN,其针对的是所有的表都使用待JOIN的KEY作为BUCKET列,并且BUCKET数量彼此有倍数关系的场景。在这种场景下,由于不需要将整张表导入内存,只需要将相应的BUCKET导入内存,因此,适宜一些数据量比较大的表。例如,TABLEA使用KEY作为BUCKET列,共有8个BUCKET,TABLEB也是用KEY作为BUCKET列,有16个BUCKET,则使用MAPSIDEJOIN,A只需要将B对应的2个BUCKET放入内存即可,如下SELECT/MAPJOINB/AKEY,AVALUEFROMAJOINBONAKEYBKEY5、合理使用MAP端部分聚合并不是所有的聚合操作都要在REDUCE端完成,很多聚合操作都可以先在MAP端进行部分聚合,最后在REDUCE端得出最终结果。相关参数HIVEMAPAGGRTRUE是否在MAP端进行聚合,默认为TRUEHIVEGROUPBYMAPAGGRCHECKINTERVAL100000在MAP端进行聚合操作的条目数目6、防止数据倾斜当出现数据倾斜的时候,我们可以采用HIVE提供的通用的方法来进行负载均衡,相关参数HIVEGROUPBYSKEWINDATAFALSE当选项设定为TRUE,生成的查询计划会有两个MRJOB。第一个MRJOB中,MAP的输出结果集合会随机分布到REDUCE中,每个REDUCE做部分聚合操作,并输出结果,这样处理的结果是相同的GROUPBYKEY有可能被分发到不同的REDUCE中,从而达到负载均衡的目的;第二个MRJOB再根据预处理的数据结果按照GROUPBYKEY分布到REDUCE中(这个过程可以保证相同的GROUPBYKEY被分布到同一个REDUCE中),最后完成最终的聚合操作。7、合理使用列裁剪(COLUMNPRUNING)在读数据的时候,只读取查询中需要用到的列,而忽略其他列。例如,对于查询SELECTA,BFROMTWHEREESETHIVEINPUTFORMATORGAPACHEHADOOPHIVEQLIOCOMBINEHIVEINPUTFORMATHUGETABLESELECTCOUNT1FROMSRC_MMSCLOG就只产生一个MAP任务了。3342MAPREDUCE1、选择合适的压缩格式输入文件的压缩格式大大影响MAPREDUCE的执行效率,具体请参考软件参数建议的压缩算法一节。2、压缩MAP中间输出在MAP任务完成后对将要写入磁盘的数据进行压缩是一种很好的优化方法,它能够使数据写入磁盘的速度更快,节省磁盘空间,减少需要传送到REDUCER的数据量,以达到减少MAPREDUCE作业执行时间的目的。相关参数MAPREDMAPOUTPUTCOMPRESSTRUE,MAPREDMAPOUTPUTCOMPRESSIONCODECORGAPACHEHADOOPIOCOMPRESSSNAPPYCODEC。3、使用COMBINER函数COMBINER相当于是本地的REDUCE,它是用REDUCER接口来定义的,只对本节点生成的数据进行规约。可以减少MAP与REDUCE阶段之间SHUFFLE的数据量,较低的网络流量缩短了执行时间。4、控制MAP个数如果输入文件是多个很小的文件,如果直接运行MAPREDUCE会导致MAP个数过多而影响整体性能,建议在装载到HDFS之前对文件进行合并,从而避免了MAPTASK过多的现象,提高了处理性能。5、选择合适的JOIN方式关联时根据实际情况采用不同的处理方式,一般关联大表采用REDUCE端关联,关联小表采用MAP端关联,以提高处理性能。对大表关联,一般先将父表的外键和子表的主键相同的记录归到同一组,然后进行关联。对小表关联,一般使用哈希表保存子表(通常是维表),然后通过查询哈希表进行关联。6、代码重构与算法优化在满足业务功能的情况下,调整程序代码,优化算法,提升性能,提高MAPREDUCE代码的扩展性和维护性。3343HBASESCANCACHING在对HBASE表进行扫描时,可以设置SCANCACHING的大小,一般为1000左右,这样可以避免默认的一次一条记录的SCAN导致的大量远程调用。配置项HBASEIPCCLIENTTCPNODELAY设置为TRUE,可以提升HBASE性能HBASEMASTERLOADBALANCEBYTABLE设置为TRUEHBASEREGIONSERVERCHECKSUMVERIFY设置为TRUE,可以避免HDFS层的验证HBASECLIENTREADSHORTCIRCUIT设置为TRUE,这样可以提高HBASE的LOCALITY335上线前注意事项HADOOP平台上线前准备与验证主要从对数,正确率,数据入库完整性,数据入库逻辑失真,特殊字符失真,数据汇总逻辑等几方面。以下提供评估参考格式实施事件实施内容提前对环境、空间、版本等检查提前对环境、空间、版本等检查提前部署应用HADOOP平台部署导出静态数据和配置数据应用规格数据上线前准备提前进行系统事务通告、申告通知各部门大数据系统上线导入静态和配置数据导入准备好的应用规格数据启动系统应用执行相关脚本启

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论