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

下载本文档

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

文档简介

1、大数据技术介绍(Hadoop与MPP部分,包含与传统技术的区别)版本号:1.0.0目录1概述51.1大数据及大数据技术51.2引入大数据的意义51.3术语、定义和缩略语52大数据技术的引入62.1传统数据仓库数据特征72.2大数据技术应用场景82.3Hadoop与MPP与传统数据库技术对比与适用场景83Hadoop实施指导意见93.1应用场景93.2前期方案设计阶段的建议103.2.1对Hadoop软件选择的建议103.2.2所需硬件设备建议133.2.3组网方式建议153.2.4规划节点规模时需要考虑的因素183.3建设过程中的建议193.3.1对压缩的考虑193.3.2HBase设计203

2、.3.3参数设置建议213.3.4系统调优263.3.5上线前注意事项313.3.6上线后效果评估323.4运维阶段的建议323.4.1任务调度333.4.2监控管理333.4.3告警管理343.4.4部署管理343.4.5配置管理343.4.6安全管理343.4.7日志管理353.5组织和培训建议353.5.1人员安排建议363.5.2培训建议364MPP数据库指导意见374.1应用场景374.1.1数据集市374.1.2数据分级存储(历史库或者明细库)374.1.3ETL384.1.4小结394.2前期方案设计阶段的建议394.2.1软件平台选型建议394.2.2容量评估方法建议414.2

3、.3网络评估方法建议414.3建设过程中的建议424.3.1数据分布规划424.3.2故障与恢复策略规划444.4运维阶段的建议454.4.1系统监控454.4.2告警管理454.4.3SQL监控464.4.4备份恢复464.4.5安全及权限控制464.4.6扩容及数据重分布464.4.7开发工具474.5组织和培训建议475系统集成建议475.1数据互通的建议485.1.1方式分析485.1.2技术实现485.2统一管理495.3透明访问506附录A-大数据技术介绍516.1Hadoop及生态圈516.1.1Hadoop 简介516.1.2Hadoop生态圈系统586.1.3Hadoop1.

4、0 特性606.1.4Hadoop2.0 特性616.1.5Hadoop选型636.1.6Hadoop HA 方案对比646.2MPP数据库676.2.1数据库架构风格676.2.2MPP数据库基本架构686.2.3MPP数据库主要运行机制696.2.4MPP平台技术规范和要点706.3X86服务器平台716.4网络726.4.1InfiniBand726.4.2万兆网756.4.3千兆网766.4.4适用场景766.5硬盘776.5.1硬盘类型介绍776.5.2硬盘比较分析776.5.3硬盘选购建议786.6虚拟化796.6.1概念796.6.2虚拟化技术介绍806.6.3适用场景801 概

5、述1.1 大数据及大数据技术大数据(Big Data)的定义众说纷纭,从技术讲上它通常具备数据量大(volume)、数据类型多(variety)和数据处理和响应速度快(velocity)的特征。麦肯锡定义大数据为超过了常规数据库软件所能搜集/存储/管理和分析的规模的数据集。大数据处理技术可以认为是处理大数据以便从中获取价值的技术。大数据及其技术正在影响着IT产业,利用Hadoop和关系数据库混搭来解决大数据难题是当前通常采用的方法。1.2 引入大数据的意义引入原则传统数据仓库系统已经建设运营十年,新技术的引入不能影响原有的使用感知,需要按照分阶段逐步引入的方式。可以参考如下的几个引入原则:1、

6、先增量后存量。现有的数据处理系统引入大数据处理技术,面临着模型改造、流程改造等一系列的问题,可以首先在新上线应用引入大数据处理技术。2、先边缘后核心。对于原有功能的迁移,可以先迁移非关键的应用。这些应用不涉及到关键生产任务,可以忍受数据处理延迟和故障修复时间较高等可能出现的风险。3、先简单后复杂。数据处理逻辑较简单的应用也可以首先尝试引入大数据处理技术,降低实施的复杂度,积累运维经验。通过在大数据处理技术的规划、实施及运维过程中积累经验及教训,不断提升和完善大数据技术的应用水平,逐步拓展大数据技术应用领域。1.3 术语、定义和缩略语名词解释Hadoop一个开源的分布式系统基础架构,由Apach

7、e基金会开发。基于Hadoop框架,用户可以方便的开发分布式程序,充分利用集群的威力高速运算和存储。MapReduceMapReduce是Hadoop一种并行计算框架,用于大规模数据集的并行运算,其缩略语为MR。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为数据库表,并提供常用的SQL支持。Hive查询引擎将SQL语句转换为Hadoop平台的MapReduce任务运行。Key-value键值对,其缩略语为K-V。K-V StoreKey-Value 存储引擎,业界使用广泛的有Google BigTable和Apache HBase、Cassandra、MangoDB

8、等。K-V Store系统是经典的NoSQL实现,与传统的关系型数据库相比,目前不支持SQL语言查询、事物、回滚等复杂机制。基于K-V Store开发的应用,其数据表设计模式也与基于关系型数据库的开发有显著区别。由于K-V Store模型简单,可靠性高,易于扩展,在互联网、大数据领域有非常广泛的应用。JDBCJava数据库连接MPP数据库Massivel parallel processing大规模并行处理数据库,相对于Symmetric Multi Processing。DPI(Deep Packet Inspection)深度包检测技术是一种基于应用层的流量检测和控制技术,当IP数据包、T

9、CP或UDP数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。2 大数据技术的引入在大数据时代,传统数据仓库基础架构难以满足海量、多样化数据以及高速响应的需求。主要原因为:传统IT系统采用Scale-up设计路线,扩展性较弱,难以处理海量数据;小型机Unix系统的封闭性导致系统扩容时难以利旧,且拥有成本高。为了解决上述问题,大数据时代涌现出了多种技术,典型技术如下:l Hadoop:基于HDFS和Mapreduce,被互联网厂商广泛用于非结构化数据处理和

10、半结构化日志处理。优点是编程灵活、针对问题优化、扩展性好,且基于廉价的x86标准硬件。l MPP数据库:基于关系代数理论,面向结构化数据处理设计的数据库管理系统。近年演进方向包括:提高扩展性、支持快速复杂查询、支持x86标准硬件、高压缩、列存储、打通与Hadoop交互。例如Vertica和Green Plum等。l NoSql:抛弃了关系数据库复杂的关系操作、事务处理等功能,仅提供简单的键值对(Key,Value)数据的存储与查询,换取高扩展性和高性能。例如HBase和Cassendra等。l 流计算技术:在流数据不断变化的运动过程中实时地进行分析,捕捉到可能对用户有用的信息,并把结果发送出去

11、。例如S4和Storm等。l 内存数据库:将数据存储在内存RAM中并进行计算和查询,充分发挥多核CPU的能力的数据库管理系统。例如HANA、ExaAnalytic、TM1等。大数据技术与传统技术有很大的差别,它们不是为了通用的需求去设计,多是某一些厂商按照自己的特定需求或细分市场设计的,所以在应用的时候需要结合自身需求考虑到底引入哪些技术。2.1 传统数据仓库数据特征传统数据仓库目前在数据量、数据类别、数据应用需求方面具有典型的大数据特征,包括:1、 容量巨大;2、 类别多样;3、 数据处理方式多样;4、 访问需求多样。5、 数据价值不同。2.2 大数据技术应用场景大数据技术可以应用在以下场景

12、(包括但不限于):1、原数据仓库底层结构化数据处理(ETL或ELT)。底层结构化数据处理计算任务重但复杂性不高,不涉及多表关联,适合引入大数据技术实现高效低成本。2、半结构和非结构数据处理与分析。3、数据集市。数据集市应用较为独立,且对可靠性的要求并不是十分严格,适合作为引入大数据技术形成资源池,实现各地市、各部门数据集市的云化、池化和虚拟化,最终实现资源动态调配,达到高效低成本。4、数据仓库数据分级存储。对低价值的细节数据以及长周期的历史数据(冷数据)访问频率较低,也能容忍相对较长的响应时间,可以存储在成本更低的平台上。5、数据挖掘。某些数据挖掘设计长周期的数据,计算时间很长(数天),占用很

13、多数据仓库资源。还有一些数据挖掘算法超出了关系代数计算范畴,需要抽取数据到独立的计算平台(例如SAS)中进行计算。这些数据挖掘任务可以迁移到大数据平台之上进行计算。例如交往圈的计算,因其仅涉及单一数据,但数据量非常大,且需要多次迭代计算。6、对外查询。数据中心中不仅仅是数据处理,也需要将数据处理的结果对外提供查询,而这些查询一部分是海量的OLAP性质的查询,另外还有一部分OLTP性质的查询,即数量众多但每次查询量较少的。针对这些应用场景,可以看到,主要需要引入的是Hadoop和MPP技术,然后逐步考虑NoSQL、流计算和内存计算等技术的引入。2.3 Hadoop与MPP与传统数据库技术对比与适

14、用场景Hadoop和MPP两种技术的介绍请参见附录A。虽然这两种技术同属于分布式计算,但由于依据的理论和采取的技术路线不同而有各自的优缺点和适用范围。两种技术以及传统数据仓库技术的对比如下:HadoopMPP 传统数据仓库平台开放性高低低运维复杂度高,与运维人员能力相关中中扩展能力高中低拥有成本低中高系统和数据管理成本高中中应用开发维护成本高中中SQL支持低高高数据规模PB级别部分PBTB级别计算性能对非关系型操作效率高对关系型操作效率高对关系型操作效率中数据结构结构化、半结构化和非结构数据结构化数据结构化数据综合而言Hadoop和MPP两种技术的特点和适用场景为:l Hadoop 在处理非结

15、构数据和半结构数据上具备优势,尤其适合海量数据批处理等应用需求。当然随着Hadoop技术的成熟,基于Hadoop的即席查询技术也逐渐崭露头角。比如仿照Dremel的开源项目Apache Drill以及Cloudera Impala。l MPP适合替代现有关系数据结构下的大数据处理,具有较高的效率,但其在大规模集群(超过100个节点)下的可用性还有待试点证实。MPP适合多维度数据自助分析、数据集市等;Hadoop 适合海量数据存储查询(详单存储和查询)、批量数据ETL、非结构化数据分析(日志分析、文本分析)等。可以看出,任何一种单一技术都难以数据采集、存储、处理和对外服务的需求,多种技术并存才是

16、发展趋势。3 Hadoop实施指导意见本章主要对Hadoop平台在实施前的方案设计阶段、实施过程中的建设阶段和实施后的运维阶段中采取的步骤以及需要注意的问题提出指导意见。3.1 应用场景Hadoop技术和产品在数据中心中可以用于以下场景(包括但不限于):场景为什么采用Hadoop采用的组件ETL1、降低原始数据存储压力2、降低数据仓库处理压力3、降低存储和处理成本Hive/MR/Pig清单查询1、快速响应海量数据查询2、降低查询成本HBase机器学习和数据挖掘1、降低海量数据挖掘成本2、缩短计算时间3、实现更加灵活的算法mahout/R/MR冷数据存储1、 降低冷数据存储成本2、 降低冷数据查

17、询成本Hive Over HDFS3.2 前期方案设计阶段的建议本节主要对各公司搭建Hadoop平台之前对软硬件选型、组网以及容量规划方面提出建议。3.2.1 对Hadoop软件选择的建议 Hadoop版本选择建议l Hadoop版本现状目前Apache Hadoop开源社区非常活跃,周期性发布升级Hadoop及其相关软件(包括HBase、Hive、Zookeeper等)。此外,一些公司,如Cloudera、Hortonworks公司等也基于Apache Hadoop软件进行打包升级,开源发布其Hadoop版本。Apache Hadoop开源社区发布的软件是当前社区的最新进展,但

18、Hadoop各相关软件分别独立发布,可能存在兼容性的问题。而上述公司发布的软件一般基于Apache Hadoop社区的某个版本进行测试升级修订,并将Hadoop各个系统整合测试,从而发布一个较为稳定且各系统间兼容的软件包。Apache Hadoop开源社区发布的各个版本以及与Cloudera发布的CDH软件包的对应关系如下图所示:其中,Apache Hadoop 0.20版本分支经过将0.20.append(为兼容HBase提供对HDFS文件追加写功能)和0.20.security(提供基于Kerberos认证的功能)整合后,于2011年底发布了Hadoop 1.0版本,并在2012年和201

19、3年持续对该版本进行升级。Apache Hadoop 0.23版本分支则对原有Apache Hadoop 0.20版本做了较大的改动,这包括提供一种通用资源管理框架YARN以及对HDFS主节点扩展方案NameNode Federation。而Apache Hadoop 2.0 alpha版本又在0.23分支上又增加了HDFS主节点高可用方案。总体来看,目前Apache Hadoop开源社区主要在Hadoop 1.0和2.0 两个版本上分别进行持续更新优化。而Cloudera公司的Hadoop版本CDH3和CDH4也分别基于Hadoop 1.0和2.0版本进行封装。一般来讲开源社区的版本更新非常

20、频繁,且有些组件之间并不兼容,而公司推出的版本一般都会基于某几个大版本进行推出。Cloudera版本的Hadoop用的比较广泛,目前Cloudera的最新版为CDH4.3,各组件版本如下:产品包基线版本产品包基线版本Hadoop2.0.0HBase0.94.6Hive0.10.0Cloudera Impala1.0ZooKeeper3.4.3l 操作系统建议操作系统一般使用CENTOS/redhat 6.x,研究院主流为redhat6.4,内核2.6.32以上。 Hadoop组件及其用途Hadoop中主要包括如下组件:l HDFS。是Hadoop的分布式文件系统,用于存储分析和查

21、询所需的数据,可以是结构化数据也可以是非结构化数据。文件按照块进行划分存储在多台机器上,并通过副本的方式保证高可用。l MapReduce。是Hadoop的分布式计算框架,通过Map 的方式将计算任务扩展到多台机器上,进而通过Reduce的方式将多个节点上的结果进行合并。在Hadoop2.0中,原有MapReduce框架被Yarn代替,但对用户的接口不变。MapReduce可以简称为MR,是很多Hadoop组件的计算引擎,例如Hive、Pig、Mahout等。l Hive。是Hadoop上的SQL解析和执行引擎。其支持SQL的一个子集,名为HiveQL。Hive通过元数据保存表结构信息,并将输

22、入的HiveQL转换为MapReduce进行执行。l HBase。是Hadoop上的一个键值对NoSQL数据库,其主要特性是支持高并发文本数据写入和读取,舍弃了关系数据中的事务、关联、复杂索引等 HBase的典型场景可用于详单存储和查询、互联网内容存储、GiS数据存储、半结构化历史数据存储。l Zookeeper。是Hadoop中的分布式可靠协调系统,被Hadoop的一些组件所用,例如HBase和Hive(可选)等。l Mahout:是一组在MapReduce上的实现的数据挖掘算法库,可被调用用于数据挖掘计算。l Oozie:是一个Hadoop上的工作流组件。l Pig。是另一个Hadoop上

23、的脚本语言解析和执行器,将面向过程的Pig Latin语言解析为MapReduce任务执行。l Cascading。是一个架构在Hadoop上的API,用来创建复杂和容错数据处理工作流。它抽象了集群拓扑结构和配置来快速开发复杂分布式的应用,而不用考虑背后的MapReduce。l Impala。是另一个SQL解析引擎,但其绕过了MapReduce,利用自己的执行引擎,充分利用内存来直接访问HDFS上的文件。 数据处理方式建议从上节看,在Hadoop上进行数据处理可以选择多种方式。但目前较为流行的是采用MapReduce直接编程或者利用Hive。Pig由于要学习另外一种语言而用得较少

24、,Impala由于其对内存的渴求而难以用于大数据的加工。对于Hive和MapReduce用于数据处理,比较如下:HiveMapReduce查询语言HQLJava或其他语言调优方法中多性能略差略优易用性简单(类SQL)复杂(编程)数据格式结构化结构化和非结构化均可可以看出Hive和MapReduce在很多方面基本都相同。在调优方法、性能方面,Hive不如MapReduce,尤其是MapReduce可以针对性的对于某些应用的算法优化是Hive无法比拟的。但是Hive因为类SQL实现的机制极高地提升了开发人员的工作效率,减轻了工作量,而MapReduce的编程则相对复杂一些,普通水平的MR程序员,写

25、出来的程序很可能效率低于hive。3.2.2 所需硬件设备建议 服务器配置建议Hadoop被设计运行在大规模通用X86硬件平台之上,使用本地存储(DAS)来实现Scale Out。所以其对硬件的要求较低,一般的PC服务器也可以运行,只要满足发行版所要求的操作系统和JDK需求即可。但是在实际使用中需要根据Hadoop的应用环境来合理配置硬件,充分发挥每个部件的效率。在前期试点中,我们发现如果执行MapReduce,特别是在压缩文件上执行,其对CPU的消耗较高,CPU成为了瓶颈;而在运行Hbase的时候,更多的内存会缓存更多的数据,提高查询吞吐率并缩短响应时间。所以建议这两种情况下,

26、可以考虑按照如下配比来配置硬件:项目主节点配置建议数据处理(MR/hive)的数据节点数据查询(HBase)的数据节点,可以与数据处理的数据节点合设zk节点CPU个数及核心数2路8核以上2路8核以上,如果压缩数据或者处理比较复杂,可以考虑更多路多核的2路6核以上2路8核以上硬盘数硬盘数可以不同太多,4-6块6、8或者12块,数据处理时IO一般不是瓶颈,但更多的磁盘可以存储更多的数据6、8或者12块,取决于存储量(主要靠缓存)硬盘数2-4块内存128G或更高48G或更高64G或更高,太高GC可能成为负担48G或更高网络双口万兆或千兆网卡双口万兆或千兆网卡,主要影响装载速度和节点间数据交换效率双口

27、千兆网卡双口万兆或千兆网卡,对网络延时有高要求,如果可以,建议单独设立奇数个集群,3-5个l 内存的选择:通常情况下,Hadoop处理任务每个CPU逻辑核(指超线程下,一般一个核对应两个逻辑核)对应2G内存即可。l CPU的选择:实测表明:Hadoop处理性能与CPU性能密切相关,任务运行时间与SPEC值基本成反比关系,因此应该选择性能较高的CPU。l 服务器类型:一般的Hadoop项目选择2U的机架式服务器,试点中有公司选择了多节点服务器(2U四节点),也应用得比较好。 硬盘挂载建议操作系统盘可以采用SAS或SATA盘,建议采用两块硬盘盘做RAID1后作为系统盘,磁盘支持热插拔

28、,方便运维。对于数据节点存放数据的磁盘:可以采用SATA降低成本,提高存储量。由于Hadoop在软件层面已实现了数据的冗余备份,不必要在硬件层面通过RAID再做冗余。在效率提升方面,Hadoop自身的“优化策略”推荐HDFS数据直接存储到多块物理盘,而不采用RAID(已经在测试中验证了这个结论)3.2.3 组网方式建议一个完整的Hadoop集群中的节点,分为三个角色:Client、Master 和Slave,如下:其中l Client:部署在用于跟Hadoop进行交互的应用节点中。l Master节点用于集群管理,主要与Client进行通讯,为Client分配可用的Slave节点,同时Mast

29、er会维护Slaves节点上报的每个运行参数。角色包括HDFS中的NameNode、SecondaryNameNode、MapRedcue的JobTracker等(MR2是ResourceManage)。l Slave节点是Hadoop中的执行者,主要模块包括:DataNode用于存储,TaskTracker(MR2为NodeManage)执行并行计算。l 其他可单独部署zookeeper节点集群奇数个(3-5)个,增加一个NTP server节点,实现时间同步。综合来说,在Hadoop集群中有大量文件读写或者MapReduce计算任务提交时候,都会出现大量的网络交互,尤其是MapReduce

30、。所以一般建议给Hadoop提供专用的私有网络,用于内部数据的交互,网络带宽为万兆网(指万兆以太网或Infiniband网络,下同)或千兆,万兆网不仅仅10倍于千兆网的带宽,在峰值流量下,其时延也大大低于千兆网。根据Hortonworks的建议,对于较小的集群至少保证所有节点点到点千兆网连接,对于更大的集群使用千兆网可能造成性能的下降,在超级的数据中心,Yahoo!的做法是同一个机架的20台节点中每台通过2个千兆网卡绑定的方式和其他节点通信,对于机架使用2条万兆网连接。根据Hadoop集群数量不同,可以将集群分为小集群、中级集群和大规模集群三大类。一般来讲,具体个数与组网与核心交换机支持的网络

31、口数量,具有较大关联。以下对这三种规模的集群组网方式进行分别描述。 小集群节点规模:10个节点内主要特征: 计算和存储能力有限,用于进行Hadoop以及相关生态系统应用功能验证建议组网: 主要关注点:优先考虑升级兼容性l Master节点无需HA。l 千兆网络,也可用万兆,为后续扩容准备。l 预先考虑扩容后的IP划分。 中级集群节点规模:10-100节点;主要特征:企业级典型集群规模,总数据量在百TB级别(冗余情况下),主要用于进行中等规模数据量计算(单次10亿级别或者10TB同等数量级数据计算),一般来讲,具体节点个数受限于上层交换机口的数量。建议组网图:主要关注

32、点:集群高可靠,机架之间通讯使用2条万兆网卡连接;l 机架内部通讯使用2条千兆网卡绑定足够,但考虑后续扩容和以及节点性能提升(如使用SSD硬盘)也可使用万兆网卡。l Hadoop HA: HDFS-HA MapReduce-HA 等。l 机柜单点,避免Master在同一机柜。l HDFS机架感知开启。l 交换机HA: 使用双换机放置不同机柜VLT方式的可靠性最高,但会带来连接复杂性上升,具体可以根据能力进行适当调整。 大规模集群节点规模:大于100节点;主要特性:PB级别以上存储规模;MapReduce计算任务量大,且持续增加;多场景需求:MapReduce、HDFS、HBase

33、、Hive、ETL、workflow等;多Rack,跨rack数据传输量频繁;建议组网图:主要关注点:l 节点与机架交换机使用L2连接。l 机架交换机与核心交换机使用L3连接。l 机架内部通讯延迟低于跨机架时延(Hadoop默认策略)。l 交换机 oversubscription(入出率)比率建议2.5:1(不能高于交换机最高值)。l 核心交换机与Rack数相关,Rack数量与核心交换机数量和端口数成正比,但交换机不应太多,会降低机架上传带宽。l 机架交换机方式的机柜交换机的上行链路会成为瓶颈,交换机数量多,设备管理复杂性增加。l 在核心交换机端口紧张情况下,可以从机架交换机接入外部网关,提供

34、集群外部访问能力。3.2.4 规划节点规模时需要考虑的因素1、计算能力估算应依据小规模基准测试针对所需的业务类型进行模拟测试,依据近似线性扩展原理,根据业务需求可计算出计算能力节点个数。考虑到扩容及其他因素影响,建议预留30%的计算能力冗余。2、存储能力估算压缩比、副本数、冗余量的考虑将影响存储能力评估,需要预先确定。可以参考此公式进行估算:(业务估算数据量* 压缩比*副本数)/ 冗余量当HDFS剩余空间较小时会影响性能。建议冗余量设置为30%。进行HBase存储估算时,需要考虑数据膨胀率,一般来讲可以为2。3、其余节点估算除了Master节点和Slave节点外,还应对接口机、监控运维、调度预

35、留机器。3.3 建设过程中的建议本节主要对Hadoop平台搭建和配置过程中遇到的问题提出建议。3.3.1 对压缩的考虑在大数据平台中,采用合理的压缩算法不仅能节省存储,而且还由于减少了IO的数据量而在大部分场景中可以缩短处理时间。因此在系统搭建过程中应提前确定压缩的策略。Hadoop的HDFS中可以采用的压缩算法及其特点如下表:工具算法文件扩展名多文件可分割性(支持MR并行处理)压缩率(压缩至)*snappysnappySnappy是是约37%gzipDEFLATE.gz不不约25%zipDEFLATE.zip是是,在文件范围内约22%bzip2bzip2.bz2不是约18%lzopLZO.l

36、zo不是约35%*压缩率是试点中测试结果,不同的数据压缩率并不一样。以上压缩格式的压缩率为bzip2gziplzosnappy。但是压缩率高通常代表压缩和解压时间长,综合多个试点省对于各种压缩格式性能比较的测试结果,大致得到以下结果:snappylzogzipno compressbzip2。所以在不同的场景下,宜选择不一样的压缩方式,主要可能有以下场景:1、 原始数据就是压缩的,那么最好按照原始数据的压缩格式直接上传HDFS,在HDFS中并行处理过程中可以顺带解压。这样可以缩短装载时间(压缩数据量少)。2、 MapReduce或者Hive的中间结果的压缩。可以在MapReduce程序中设置M

37、ap后的中间结果用压缩模式,然后交给Reduce,试点中我们发现可以节约处理时间,特别是对那种在Map和Reduce中有大量数据交换的操作,例如常规的Join。Hive中也是类似。这种情况下,适合采用snappy与lzo这种压缩解压性能快的压缩算法。以下代码显示了启用rnap输出压缩和设置压缩格式的配置属性。conf.setCompressMapOutput(true); conf.setMapOutputCompressorClass(GzipCodec.class);3、 处理后数据或者冷数据的压缩。这些数据可以采用压缩率稍高的算法进行压缩以节约空间,比如Zip或Bzip2,特别是在冷数据

38、归档的情况下。但如果数据可能会频繁被即席查询的话,还是应该选择解压速度快一些的压缩算法。压缩的设置:如果要压缩MapReduce作业的输出,请在作业配置文件中将press属性设置为true。将pression.codec属性设置为自己打算使用的压缩编码/解码器的类名。3.3.2 HBase设计与传统技术不一样,Hadoop没有走产品化的道路,其中的组件可定制程度非常高。这一方面提高了效率,另一方面也对使用人员提出了更高要求。HBase就是如此,合理的HBase设计可以极大提高查询性能。可以考虑如下设计要素:l Rowkey设计

39、HBase表的rowkey设计,一般是将关系数据库中的候选key拼接形成。但是要注意热点问题,比如rowkey开始的几位是时间排序,那么在插入的时候,最近几天的数据很可能是热点数据,这样所有的查询可能都指向了一个region server导致了HBase的性能瓶颈。尽量避免使用单调递增的rowkey,因为在添加数据的时候,所有的新数据都添加到最后一个region,前面的region没有或者很少有请求,也是热点问题。热点问题的处理方式一般是加盐,即在rowkey前面添加hash数,来对数据进行hash划分。l 列簇设计HBase表的Column Family最好少于4,一般少于3,对于一般数据放

40、入一个列簇中即可。对于一些强关联,频繁访问的数据可以放一列,这样在取数据时,热点访问只用取这一列数据,可以节省IO。多个列簇有各自memstore,memstore 开销大,而且flush一个列簇,其他的类簇也会flush,会造成不必要的开销。l Region划分HBase在导入大量数据前最好预先划分region,这样可以加快导入效率。同时也要避免使用HBase自动划分region,在一种情况下,HBase面临大量写入或者scan请求,同时它的region中的数据又达到了阀值,那么它会启动自动划分region,有可能导致region划分风暴,大量的请求会使region server和name

41、node的压力过大而导致region dead或者name node dead。l 使用TTLTTL(time to live),它一般可以用来控制数据的生存时间。一些数据比如客户几年以前的数据,几年以后已经不关心这些数据,可以使用TTL删除。如果数据没有这些要求,可以不使用。3.3.3 参数设置建议本节主要讨论重点参数的设置建议。 副本个数副本数设置建议按照Hadoop默认的3副本,这可以有效防止硬盘受损、机器或机架故障导致数据丢失或损坏。设置参数为hdfs-site.xml文件中的dfs.replication参数。但在实际的生产中,为了节省存储或者提高处理效率,可以考虑采取

42、动态的副本创建策略。比如对于非主营业务或者临时需求,原始数据装载到HDFS时可以选择一副本或者两副本从而提高装载和出数效率,也可以节省存储空间。可以在上传时设定副本个数为n:hadoop dfs -D dfs.replication=n -put 也可以之后修改副本个数bin/hadoop dfs -setrep -R -w .也可以查看副本个数查看当前hdfs的副本数hadoop fsck -locations 块大小HDFS块大小,默认是64M(某些发布版是128M,比如CDH)。但考虑到目前机器CPU的计算能力普遍很高,对于MapReduce在做Map的时候可以处理比较大的

43、单个文件,目前一般建议Blocksize设置稍微大一点,比如256M或者512M。但跟实际应用场景相关,需要根据不同的硬件环境以及应用场景进行相关测试,然后得出最佳设置。 Slot数(Mapreduce 1.x)Slot数主要是指以下两个参数的的设置与搭配l mapred.tasktracker.map.tasks.maximum 每台tasktracker允许启动的最大map槽位数,官方建议为:(CPU数量 2) ? (CPU数量 * 0.75) : 1l mapred.tasktracker.reduce.tasks.maximum 每台tasktracker允许启动的最大r

44、educe槽位数,官方建议为:(CPU数量 2) ? (CPU数量 * 0.50): 1根据各个省试点的经验,无论是map槽数还是reduce槽数一般设置为CPU核数的12倍,map和reduce的槽数配比一般为2:1。但跟实际应用场景相关,需要根据不同的硬件环境以及应用场景进行相关测试,然后得出最佳设置。 其他配置参数(Hadoop 1.x)l Hdfs配置文件hdfs-site.xml参数名参数值说明dfs.datanode.data.dirfile:/data0,file:/data1,file:/data2Datanode的数据目录:如果datanode对应的机器上有多块

45、磁盘,例如/disk1-/disk3,dfs.data.dir可以配置为”/disk1/data,/disk2/data,/disk3/data”,datanode会在写数据时,以轮询的方式选择一个目录写入数据,一般这些目录是不同的块设备,不存在的目录会被忽略掉,参考配置属性dfs.data.dir.datanode如果有多个磁盘不建议做raid,因为做raid会有性能损失,还会导致一个磁盘坏了,整个硬盘也不能用了,而Hadoop可以规避这个问题。.dirfile:/dir1,file:/dir2,file:/dir3元数据保存目录设置多个,保证数据可靠性df

46、s.datanode.balancer.bandwidthPerSec在带宽和机器数允许的情况下,设置数据均衡传输量为10M/s或更大,加快均衡速度erval1440设置需要支持回撤周期(单位为分钟). 回撤操作:在删除文件的当前目录下(HDFS中)有.Trash目录,讲目录中对应文件移到当前目录即可。l MapReduce配置文件:core-site.xml参数名参数值说明Hadoop.tmp.dir/data2/tmphadoop文件系统依赖的基础配置,默认在/tmp里,默认情况下master会将元数据等存在这个目录下,而slave会将所有上传的文件放在这个目录下,

47、由于上传到Hadoop的所有文件都会被存放在hadoop.tmp.dir所指定的目录,所以要确保这个目录是足够大的,但是对挂载磁盘的IO性能压力比较大文件:mapred-site.xml参数名参数值说明mapred.jobtracker.taskSchedulerOrg.Apache.Hadoop.mapred.FairScheduler公平调度,可以让多个job并行,需要额外的jar包sdefault.tbequeue自定义公平调度名称mapred.fairscheduler.allocation.file/home/bigdata/apps/Hadoop-

48、mr-talkyun/cont/pools.xml公平调度的配置文件mapred.map.child.java.opts-Xmx1024设定每个map的jvm大小,使spill过程有足够的内存,减少磁盘IOmapred.reduce.child.java.opts-Xmx2048设定每个reduce的jvm大小,减少磁盘IOmapred.tasktracker.map.tasks.maximum8 容忍的map作业最大并发个数按照前面的slot数量设置mapred.tasktracker.reduce.tasks.maximum8 容忍的reduce作业最大并发个数同上mapre

49、pression.codec 默认Map结果输出的默认压缩算法mapred.task.timeout默认MapReduce任务默认的超时设置mapred.min.split.size split输入最小尺寸,决定了Map任务数量mapred.reduce.tasks 设定reduce任务数量Tasktracker的中间输出目录: mapred.local.dir。map和reduce任务MapReduce产生的中间数据会特别多,为了减少磁盘压力,如果机器有多个磁盘,也可以像datanode的数据目录设为”/disk1/local,/disk2/local,/di

50、sk3/local”文件:Hadoop-env.sh参数名参数值说明HADOOP_HEAPSIZE4000Hadoop所有进程的jvm配置参数,包括namenode/jobtracker/datanode/tasktracker所使用的最大内存l HBase配置文件:HBase-env.sh参数名参数值说明HBASE_HEAPSIZE8192(根据实际情况考虑)HBase所使用的最大内存HBASE_MANAGES_ZKFalse设置HBase不自行管理zk服务,需额外提供zk集群的服务文件:HBase-site.xml参数名参数值说明HBase.regionserver.handler.cou

51、nt20RegionServer的请求处理IO线程数,对于高并发,适当调高以提升性能HBase.hregion.max.filesizeregion分割的阀值,适当设大以减少region分裂的次数HBase.hregion.majorcompaction0关闭自动major_compact,默认是1天进行1次对table的storefile记性合并清理,在保证集群性能的前提下,由运维人员进行该操作可以避免高峰期,会更灵活HBase.rpc.timeout节点间通信等待时间,主要是为了减少高并发时,延长节点间响应等待时间HBase.client.pause3000客户端在重试前的等待时间HBas

52、e.regionserver.global.memstore.upperLimit0.39memstore占heap的最大百分比,直接影响写的性能hfile.block.chche.size0.4storefile的读缓存占用Heap的大小百分比,该值直接影响数据读的性能HBase.hregion.memstore.flush.sizeRegion上MemStore的大小是64MBHBase.regionserver.handler.count 一个RegionServer的最大并发handler数目HBase.regionserver.coprocessorhandler.count 一个R

53、egionServer的coprocessor最大并发handler数目3.3.4 系统调优 Hive1、少用count(distinct)例如:select count(distinct USR_MOB_NBR) from ODS.TO_CDR性能差的原因:只会用一个reduce去处理。优化的写法:select count(1) from (select USR_MOB_NBR from ODS.TO_CDR group by USR_MOB_NBR ) x;2、表关联时,过滤条件写在合适的位置例如:select a.USR_MOB_NBR,sum(a.MOB_FEE),sum

54、(b.call_cnt)from hive_test_to_cdr aleft outer join hive_test_to_cdr2 B on A.USR_MOB_NBR = b.USR_MOB_NBR and b.call_cnt 10where A.DIR_TYP_CD IN (3,5,6) group by A.USR_MOB_NBR性能差的原因:这样写会导致先关联,后过滤优化的写法:select a.USR_MOB_NBR,sum(a.MOB_FEE),sum(b.call_cnt)from (select * from hive_test_to_cdr where DIR_TYP_CD IN (3,5,6) )aleft outer join hive_test_to_cdr2 B on A.USR_MOB_NBR = b.USR_MOB_NBR and b.call_cnt 10group by A.USR_MOB_NBR3、Map joinMAPJION会把小表全部读入内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配,由于在map是进行了join操作,省去了reduce运行的效率也会高很多这样就不会由于数据倾斜导致某个reduce上落数据太多而失败。于是原来的sql可以通过使用hint的方式指定join时使用mapjoin。sel

温馨提示

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

评论

0/150

提交评论