system: [SYSTEM]

user: 3. 架构与方法 3.1. Hadoop性能优化 在Hadoop系统中，系统的所有管理都是通过参数配置完成的。使用Hadoop时，用户必须首先配置系统参数。作业的类型不同则对系统资源的需求也有所差别，为提高运行效率，吞吐量和系统的整体性能，每种需求都需要进行单独的参数配置。如果仅仅依赖系统的静态默认配置则无法满足所有程序的资源最优。因此，通过研究配置优化方法来改进系统的整体性能具有十分积极的意义。 首先分析影响Hadoop系统性能的主要配置属性及其之间的约束关系，提出了基于遗传模拟退火算法的性能优化方法。其次，考虑到系统中应用程序的复杂性，提出了一个自适应系统配置优化策略。为适应系统中操作类型的复杂性，该策略使用“实时优化”配置模型和“经验借鉴”配置模型来配置系统参数。 3.2. Hadoop配置属性分析及其基准程序 Hadoop系统架构主要由HDFS文件系统和MapReduce计算模型以及默认配置文件组成。在Hadoop集群中，需要配置的文件主要包括3个，分别core-default.xml，hdfs-default.xml和mapred-default.xml。这些属性的配置支撑着整个系统的运作。在不影响系统的默认配置的前提下，可以对相应的站点文件中这三部分的默认属性值进行修改。表1和表2列出了Hadoop系统的基本配置属性和影响系统性能的主要配置属性。 Table 1 Hadoop basic configuration propertie 配置文件 配置属性 说明 core-site.xml fs.default.name Address of hdfs hadoop.tmp.dir Storage folder of hdfs hdfs-site.xml dfs.replication Backups of the data in hdfs dfs.http.address http accessing address of dfs mapred-default.xml mapred.job.tracker Address of jobtracker 表1. Hadoop基本配置属性 Table 2 Main configuration attributes affecting Hadoop performanc 配置文件 配置属性 说明 core-site.xml io.file.buffer.size 使用缓冲区的排序文件的大小 io.compression.codecs 数据压缩编码 hdfs-site.xml dfs.block.size 文件数据块的大小 dfs.namenode.handler.count namenode 远程调用的线程数 dfs.heartbeat.interval 每秒心跳次数 mapred-default.xml mapred.reduce.tasks 每项工作的reduce个数 mapred.compress.map.output map输出数据是否压缩 io.sort.factor 文件排序时合并的流数 io.sort.mb 文件排序时缓冲区的大小 表2. 影响Hadoop性能的主要配置属性 从配置Hadoop参数对进行Hadoop性能调优的角度而言，首先要考虑的是集群自身的特点，集群特点不同所以会有不同的参数设置。其次，集群中的参数与参数之间也具有比较复杂的制约关系，配置时要注意这些关系不被破坏，保持整体的相对平衡。此外，应用任务要在合适的执行环境下运行，这对环境也提出了不同的要求，因此需要针对任务的需要相应的调整系统配置实现任务的高效运行。 作为大数据分析平台的代表，MapReduce拥有巨大的参数空间，Hadoop的配置属性有超过180个，所有的配置属性以键值对的形式存储在XML格式化文件中。其中有70多个参数影响作业性能，直接造成MapReduce作业参数的调整艰巨而费时 [ 4 ]，表3是影响Haddoop性能的部分配置属性和默认值的示例。以下面两个属性为例分析属性配置对资源利用的影响。 Table 3 Some properties and default values that affect Hadoop performanc 配置属性 默认值 dfs. datanode. handler.count 3 dfs. replication. min 1 dfs. namenode. handler. count 10 io. sort. factor 10 io. sort. mb 100 io.sort. record. percent 0.05 io.sort.spill.percent 0.80 mapred. job. tracker. handler. count 10 mapred. map.tasks 2 mapred. reduce. tasks 1 mapred. reduce. parallel. copies 5 表3. 影响Hadoop性能的部分属性和默认值 每个Map/Reduce任务都作为一个单独的进程运行，并且多个任务是并行处理的。如果并行运行进程太多，则会导致资源争用并降低系统的整体性能。如果这两个值设置得太高，将生成大量的磁盘同步读写操作并且争用磁盘资源。恰当的设置每个资源的map/reduce任务，平衡配置属性之间的相互约束才能够使资源可以充分利用，系统的性能达到最佳。 目前它主要依靠经验和暴力搜索来寻找最佳配置，这需要很长时间并且效果不显著。一旦集群的结构或应用变化很大，现有配置将不再存在申请，需要重新积累经验。因此，考虑一种新的配置方法来提高系统的性能是十分必要的。 基准测试程序通过测试集群按照预期运行任务来检测集群的性能，测试的结果用于调整集群的性能达到最佳状态。不同类型的工作对各种资源都有不同的需求，根据实际操作选择基准程序的类型，从而调整各种配置参数并使其性能系统实现最佳。表4列出了一些Hadoop提供的基准测试程序。 Table 4 Hadoop partial basic test progra 基准程序 测试性能 DFSCIOTest 分布式 I/O dfsthroughput HDFS的吞吐量 testfilesystem 文件系统的读写测试 testmapredsort Map Reduce整体 Gridmix 集群加载功能 MRBench 复杂查询的关系数据处理和执行能力 NNBench 名称节点负载 表4. Hadoopde部分基础测试程序 前四个测试程序在hadoop安装目录下的hadoop -* -test.jar中。这些程序可以很容易地以最低成本进行测试。Gridmix就在Hadoop安装目录下的src/benchmarks /目录中。与表4前四个测试程序相比，Gridmix模拟了以webdataScan，javaSort和streamSort为代表的实际集群的工作负载。MRBench面向业务数据的处理和大量数据的修改，主要处理关系数据并执行复杂的查询。NNBench用于测namenode的负载，英特尔公司还提出了一套Hadoop基准测试套件HiBench。表5是对测试用例的分析和HiBench中包含的资源特征。 Table 5 HiBench test case and its resource characteristic 应用 基准程序 资源特征 Micro benchmarks Sort Intensive I/O， middle CPU Word count Intensive CPU， networkand light I/O Tera sort Map and Shufflfle stage is intensive CPU Web search Nutch indexing Map stage is intensive CPU Reduce stage is intensive I/O Page rank Intensive CPU Machine learning Bayesian Intensive I/O Classifification The first job is intensive CPU K-means clustering Center point intensive CPU Clustering is intensive I/O HDFS Enhanced DFSIO Intensive I/O 表5. HiBench测试用例和它的资源特征 3.3. 实验方法 遗传模拟退火算法(GA)是一种将遗传算法与模拟火算法相结合的智能算法。遗传算法是一类借鉴生物进化规律演化而来的随机搜索方法，常用于寻优，但易陷入局部极值 [ 5 ]，模拟退火算法 [ 6 ] 是一种通过模拟热力学中固体退火原理的随机寻优算法，不易陷入局部最优。因此，提出了结合遗传算法和模拟退火算法的遗传模拟退火算法 [ 9 ]，遗传模拟退火算法是一种基于组合思想而产生的混合优化算法 [ 7 ] 以遗传算法为框架，在执行遗传操作的过程中加入退火操作 [ 8 ]。结合这两种算法，不仅可以提高本地搜索能力，也可以全球化优化，找到理想的近似最优解。使算法能更好地跳出局部极值，搜索到全局最优解 [ 9 ]。 根据遗传模拟退火算法得到的整体性能较好，在长期优化中优化速度会更快的特点，可以用来解决在全局空间内通过随机搜索找出系统的近似最优分配方案的这一类问题。以下将描述基于Hadoop配置的优化遗传模拟退火算法。 详细介绍主要操作：生成初始种群，染色体使用浮动编码方法，每个基因位置的值范围 ( M i n ， M a x ) ，随机生成的基因值是 M i n + ( M a x − M i n ) ∗ R a n d o m ( ) ； 选择：轮盘赌选择方法用于生成随机数 γ ∈ ( 0 ， 1 ) 。 f i 是一个个体，个体相对适应度是 P i = f i ∑ i = 1 0 f i ，如果 ∑ k = 0 i = 1 P k < γ < ∑ k = 0 i P k ，则 i 被选中复制。 交叉：根据实数编码规则，从种群中选择两个个体以一定概率交叉 [ 10 ]，将染色体随机分成22组，用概率 P c 杂交，染色体A通过算数杂交方法相交新的染色体B，染色体随机分成组，每组包含2个染色体，通过概率 P c 执行交叉操作，染色体组( a ， b )通过算数杂交方法生成新的染色体组( a ， b )。 a ′ = ( 1 − α ) a + β ∗ b b ′ = ( 1 − β ) b + α ∗ a (1) 在公式中， 0 < α ， β < 1 ， γ ≤ 1 。如果 a ′ ( b ′ ) < M i n ，那么 a ′ ( b ′ ) = M i n 。如果 a ′ ( b ′ ) > M a x ， a ′ ( b ′ ) = M a x 变异：基因突变以Pm的概率进行，基因c通过非均变异法形成 c ′ ： { c ′ = c + k ∗ ( M a x − c ) ∗ γ θ > 0.5 c ′ = c + k ∗ ( c − M i n ) ∗ γ θ ≤ 0.5 ，在公式中， k ∈ ( 0 ， 1 ] ， γ 和 θ 是(0，1)间的随机数。