网站制作的教程,线上建模培训班哪个好,长沙百姓网招聘信息,访问中国建设银行网站OS and File System根据Dell(因为我们的硬件采用dell的方案)关于hadoop调优的相关说明#xff0c;改变几个Linux的默认设置#xff0c;Hadoop的性能能够增长大概15%。open file descriptors and files文件描述符是一个索引值#xff0c;指向内核为每一个进程所维护的该进程打…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-max800000也可以通过查看文件中的内容来查看其中的fs.file-max定义了最大的打开文件描述符数量cat /etc/sysctl.conffs.file-max 800000net.core.rmem_default 12697600net.core.wmem_default 12697600net.core.rmem_max 873800000net.core.wmem_max 655360000net.ipv4.tcp_rmem 8192 262144 4096000net.ipv4.tcp_wmem 4096 262144 4096000net.ipv4.tcp_max_orphans 300000net.ipv4.tcp_tw_reuse 1net.ipv4.tcp_tw_recycle 1net.ipv4.ip_local_port_range 1025 65535net.ipv4.tcp_max_syn_backlog 100000net.ipv4.tcp_fin_timeout 30net.ipv4.tcp.keepalive_time 1200net.ipv4.tcp_max_tw_buckets 5000net.ipv4.netfilter.ip_conntrack_tcp_timeout_established 1500net.core.somaxconn32768vm.swappiness0CentOS下可以通过下面的命令来增加最大打开文件描述符数量在集群中的每台机器上执行# su – (hdfs Hadoop users)# ulimit –S 4096# ulimit –H 32832也可以通过修改/etc/sysctl.conf文件中的fs.file-max来达到目的。由于这部分的数值远远大于文档中所列出的数字此部分没有做优化。File SystemLinux的发行版本对于文件系统有着不同的初始设置。经过测试不同的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来查看当前的设置UUID5d75c681-1101-46c2-9428-3e48310765ce / ext3 defaults 1 1LABEL/boot /boot ext3 defaults 1 2tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid5,mode620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0LABELSWAP-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/sdaXNetwork两个网络相关的参数可以影响Hadoop的性能。net.core.somaxconn Linux内核设置能够支持NameNode和JobTracker的大量爆发性的HTTP请求。net.core.somaxconn是listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能当前已经被调整到32768。这个参数同样可以通过编辑/etc/sysctl.conf文件来改变其中有一行net.core.somaxconn32768设置txqueuelen到4096及以上能够更好地适应在Hadoop集群中的突发流量txqueuelen代表用来传输数据的缓冲区的储存长度通过下面的命令可以对该参数进行设置为4096sudo ifconfig eth# txqueuelen 4096其他的一系列在/etc/sysctl.conf中的配置可以对网络产生影响net.core.rmem_default 12697600net.core.wmem_default 12697600net.core.rmem_max 873800000net.core.wmem_max 655360000net.ipv4.tcp_rmem 8192 262144 4096000net.ipv4.tcp_wmem 4096 262144 4096000net.ipv4.tcp_max_orphans 300000net.ipv4.tcp_tw_reuse 1net.ipv4.tcp_tw_recycle 1net.ipv4.ip_local_port_range 1025 65535net.ipv4.tcp_max_syn_backlog 100000net.ipv4.tcp_fin_timeout 30net.ipv4.tcp.keepalive_time 1200net.ipv4.tcp_max_tw_buckets 5000net.ipv4.netfilter.ip_conntrack_tcp_timeout_established 1500上述设置需要重新启动整个集群系统。Transparent Huge PageLinux的特性Transparent HugePages在大部分的应用中都提高了整体性能包括Hadoop的工作负载。但是其中的一项被称为Compaction的子特性会导致Hadoop工作负载的问题在设置了Compaction的Hadoop benchmark测试中结果会存在25%的浮动而关闭Compaction后浮动消失。当进行内存碎片整理时Compaction会提高CPU资源利用率这能够帮助优化Transparent HugePages但是偷取了CPU资源却影响了hadoop中正在运行的task性能。通过以下命令可以查看是否启用compactioncat /sys/kernel/mm/redhat_transparent_hugepages/defrag以及以下命令来禁用Compactionecho 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.swappiness0