OS and File System

根据Dell(因为我们的硬件采用dell的方案)关于hadoop调优的相关说明,改变几个Linux的默认设置,Hadoop的性能能够增长大概15%。

open file descriptors and files

文件描述符是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开,文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。

在Linux系列的操作系统上,由于Linux的设计思想便是把一切设备都视作文件。因此,文件描述符为在该系列平台上进行设备相关的编程实际上提供了一个统一的方法。

在CentOS中通过下面的命令查看:

cat /proc/sys/fs/file-max

800000

也可以通过查看文件中的内容来查看,其中的fs.file-max定义了最大的打开文件描述符数量:

cat /etc/sysctl.conf

fs.file-max = 800000

net.core.rmem_default = 12697600

net.core.wmem_default = 12697600

net.core.rmem_max = 873800000

net.core.wmem_max = 655360000

net.ipv4.tcp_rmem = 8192 262144 4096000

net.ipv4.tcp_wmem = 4096 262144 4096000

net.ipv4.tcp_max_orphans = 300000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 1025 65535

net.ipv4.tcp_max_syn_backlog = 100000

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp.keepalive_time = 1200

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1500

net.core.somaxconn=32768

vm.swappiness=0

CentOS下可以通过下面的命令来增加最大打开文件描述符数量,在集群中的每台机器上执行:

# su – (hdfs & Hadoop users)

# ulimit –S 4096

# ulimit –H 32832

也可以通过修改/etc/sysctl.conf文件中的fs.file-max来达到目的。

由于这部分的数值远远大于文档中所列出的数字,此部分没有做优化。

File System

Linux的发行版本对于文件系统有着不同的初始设置。经过测试不同的Linux File Systems,发现EXT4格式要比EXT3更好。EXT4中的新特性,比如多块延迟分配,相比于EXT3要提高很大一部分的性能。在EXT3中,当一个文件被创建或数据被添加到一个已经存在的文件时,会直接调用文件block allocator,每个block一次;而EXT4则不同,它会做一个缓冲,以便以后能够最优化地将数据连续地放入硬盘。连续的文件能够很容易地被机械硬盘读写以能够提高存储IO的整体性能。

默认情况下,Linux会把文件访问的时间atime作记录,这在绝大多数场合下都是没有必要的,尤其是IO负载比较高的Hadoop集群下,可以尝试使用noatime和nodiratime。

在Hadoop中,很多中间文件(比如map输出的中间文件)都只会在Hadoop job运行过程中存活,job执行完成就会被删除了,根本没有必要存在访问时间戳。

通过命令cat /etc/fstab来查看当前的设置:

UUID=5d75c681-1101-46c2-9428-3e48310765ce / ext3 defaults 1 1

LABEL=/boot /boot ext3 defaults 1 2

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

LABEL=SWAP-sda3 swap swap defaults 0 0

可以看到当前并没有使用EXT4格式以及noatime。

注意,修改完设置后需要重新挂载文件系统,不需要重启。

mount -o remount /

另外一个对于dataNodes的优化点就是通过改变文件系统的保留块大小。Linux文件系统中为了保证root能够登录到操作系统中,需要保留一定的磁盘空间,默认这个值设置为5%。但是当前磁盘空间都是TB级别的,因此保留5%就会造成一大部分空间的浪费,对于1TB来说就是50G。

通过下面的命令来列出当前的保留磁盘空间。

tune2fs –l /dev/sdaX

下面的命令可以将保留磁盘空间的容量设置成1%:

tune2fs –m 1 /dev/sdaX

Network

两个网络相关的参数可以影响Hadoop的性能。net.core.somaxconn Linux内核设置能够支持NameNode和JobTracker的大量爆发性的HTTP请求。

net.core.somaxconn是listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能,当前已经被调整到32768。

这个参数同样可以通过编辑/etc/sysctl.conf文件来改变,其中有一行:

net.core.somaxconn=32768

设置txqueuelen到4096及以上能够更好地适应在Hadoop集群中的突发流量,txqueuelen代表用来传输数据的缓冲区的储存长度,通过下面的命令可以对该参数进行设置为4096:

sudo ifconfig eth# txqueuelen 4096

其他的一系列在/etc/sysctl.conf中的配置,可以对网络产生影响:

net.core.rmem_default = 12697600

net.core.wmem_default = 12697600

net.core.rmem_max = 873800000

net.core.wmem_max = 655360000

net.ipv4.tcp_rmem = 8192 262144 4096000

net.ipv4.tcp_wmem = 4096 262144 4096000

net.ipv4.tcp_max_orphans = 300000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 1025 65535

net.ipv4.tcp_max_syn_backlog = 100000

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp.keepalive_time = 1200

net.ipv4.tcp_max_tw_buckets = 5000

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1500

上述设置需要重新启动整个集群系统。

Transparent Huge Page

Linux的特性Transparent HugePages在大部分的应用中都提高了整体性能,包括Hadoop的工作负载。但是,其中的一项被称为Compaction的子特性会导致Hadoop工作负载的问题,在设置了Compaction的Hadoop benchmark测试中,结果会存在25%的浮动,而关闭Compaction后浮动消失。

当进行内存碎片整理时,Compaction会提高CPU资源利用率,这能够帮助优化Transparent HugePages,但是偷取了CPU资源,却影响了hadoop中正在运行的task性能。

通过以下命令可以查看是否启用compaction:

cat /sys/kernel/mm/redhat_transparent_hugepages/defrag

以及以下命令来禁用Compaction:

echo never > /sys/kernel/mm/redhat_transparent_hugepages/defrag

这个特定暂时没有进行修改,因为CentOS中没找到在哪儿设置。

Linux kernal swappiness parameter

任何进程只要涉及到换页向磁盘写文件都会降低hadoop的性能,Linux内核进程vm.swappiness会检查无用的内存分页并将它们交换到磁盘上。默认的值是60,可以设置为0——100。对于Hadoop来说,设置成0是一个好主意,这并没有将这个特性关闭,Linux仍然进行换页操作,但是由于这个进程在仍然还有一大部分空闲内存时仍然会进行换页,将它设置成0可以尽可能地减少内存和磁盘的延迟。

这个参数仍然可以通过编辑/etc/sysctl.conf来进行修改。

当前集群已经设置:

vm.swappiness=0

hadoop集群swap_hadoop集群调优-OS和文件系统部分相关推荐

  1. 视频教程-Linux 云计算架构师视频课程(集群、存储、调优)-Linux

    Linux 云计算架构师视频课程(集群.存储.调优) 10年Linux使用及管理经验,7年IT在线教育培训经验.拥有RHCA高级架构师及Openstack证书.精通Linux.Python.思科.C+ ...

  2. 升腾威讯怎么恢复集群_PB级大规模Elasticsearch集群运维与调优实践

    导语 | 腾讯云Elasticsearch 被广泛应用于日志实时分析.结构化数据分析.全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇到的各种典型问题,以及相应的解决思路与 ...

  3. PB 级大规模 Elasticsearch 集群运维与调优实践

    作者:bellen,腾讯云大数据研发工程师. 腾讯云 Elasticsearch 被广泛应用于日志实时分析.结构化数据分析.全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇 ...

  4. PB级大规模Elasticsearch集群运维与调优实践

    导语 | 腾讯云Elasticsearch 被广泛应用于日志实时分析.结构化数据分析.全文检索等场景中,本文将以情景植入的方式,向大家介绍与腾讯云客户合作过程中遇到的各种典型问题,以及相应的解决思路与 ...

  5. mysql集群搭建及性能调优之一(集群搭建)

    本文讲解mysql的集群搭建 文章目录 1. docker安装并启动三台mysql 2. 创建基础库并设置可访问用户 3. 主从配置 3.1 主服务器配置 3.2 从服务器配置 1. docker安装 ...

  6. 【网站架构】Nginx负载均衡宕机怎么办?Nginx性能调优、集群、高可用方案

    ​ 大家好,欢迎来到停止重构的频道. 本期,我们讨论Nginx的性能调优. Nginx一般是作为网站系统的反向代理或负载均衡,但这里有一个问题,负载均衡可以绑定多个后端服务器. 一个后端服务器宕机后, ...

  7. 走进“开心农场主”:游戏数据分析的架构及调优

    发表于 1小时前|  1164次阅读| 来源 CSDN|  1 条评论| 作者 穆黎森 大数据 Hadoop HBase MySQL Java 摘要:08年,他们以<开心农场>打开国际化社 ...

  8. ELASTIC SEARCH 性能调优

    ELASTICSEARCH 性能调优建议 创建索引调优 1.在创建索引的使用使用批量的方式导入到ES. 2.使用多线程的方式导入数据库. 3.增加默认刷新时间. 默认的刷新时间是1秒钟,这样会产生太多 ...

  9. Elasticsearch索引和查询性能调优的21条建议【下】

    Elasticsearch是一款流行的分布式开源搜索和数据分析引擎,具备高性能.易扩展.容错性强等特点.它强化了Apache Lucene的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次. ...

最新文章

  1. 键盘鼠标录制哪个好用_好看好用还不贵的那种键盘鼠标真的有吗?这次还真让我碰到了...
  2. Fastai-数据准备
  3. python流行趋势_Python流行度再创新高,学Python就从风变编程开始
  4. 物种分布模型_减少物种分布建模中的空间自相关
  5. 【NLP-NER】命名实体识别
  6. 计算机网络互联设备功能,计算机网络互联设备简介
  7. 【编辑器】Notepad++相关
  8. Nginx基本配置备忘
  9. 1.2.PHP7.1 狐教程-环境(Win下 PHP开发环境 配置及安装)
  10. 好公司和差公司的对比
  11. java swing登录界面_JAVA SWing实现登陆界面
  12. 音频编解码算法库 (可支持g711u,g711a,g729,g722,opus等)
  13. 中国有史以来最缠绵词章大盘点
  14. 光纤滑环的功能和作用
  15. 2018前端校招总结
  16. 车联网-App车况展示数据设计思路
  17. bootStrap输入框鼠标指针样式设定
  18. System services not available to Activities before onCreate()错误解决方法
  19. GreenDao3.2的基本使用方法
  20. 仓库 “http://ppa.launchpad.net/chris-lea/node.js/ubuntu bionic Release”

热门文章

  1. 字中字效果-html5实例
  2. k8s边缘节点_边缘计算,如何啃下集群管理这块硬骨头?
  3. switch芯片和phy芯片的区别_感应式芯片卡CPU卡的FM1208-9和FM1208-10有什么区别,你知道吗?...
  4. Axure原型设计导出到PDF文件
  5. Project查看资源分配情况
  6. 修改android.jar教程,Android修改jar包文件
  7. 汽车和山羊问题matlab仿真_Matlab----无人机集群对抗中的关键问题和仿真平台(开发中)案例...
  8. 电脑卡顿不流畅是什么原因_什么造成游戏直播画画卡顿、延迟?这三个原因了解一下...
  9. PHP array_pop()函数与示例
  10. python中对比数组长度_在Python中检索数组长度的首选方法