部署Hadoop集群之前的一些系统配置
修改内核参数
在/etc/sysctl.conf文件中添加如下配置(需要root权限)
以下参数的默认值是在centos7下查看的
fs.file-max = 6815744 //文件描述符总数,默认值:94121
fs.aio-max-nr = 1048576 //最大并发io请求数,默认值:1048576
net.core.rmem_default = 262144 //操作系统接收缓冲区的默认大小,默认值:212992
net.core.wmem_default = 262144 //操作系统发送缓冲区的默认大小,默认值:212992
net.core.rmem_max = 16777216 //操作系统接收缓冲区的最大值,默认:212992
net.core.wmem_max = 16777216 //操作系统发送缓冲区的最大值,默认:212992
net.ipv4.tcp_rmem = 4096 262144 16777216 //接收窗口尺寸的最小、默认、最大值,默认值:4096 87380 6291456
net.ipv4.tcp_wmem = 4096 16384 4194304 //接收窗口尺寸的最小、默认、最大值,默认值:4096 87380 6291456
保存文件,在命令行执行sysctl -p动态加载配置,也可以使用sysctl -a查看内核配置。
文件系统限制
为了避免集群中的任何文件描述符错误,需要增加单个用户或者进程一次打开文件数量的限制
查看当前操作系统最大打开文件数和最大用户进程数
[root@test ~]# ulimit -Sn //最大文件数软限制
1024
[root@test ~]# ulimit -Hn //最大文件数硬限制
4096
[root@test ~]# ulimit -Su //用户打开最大进程数,软硬限制一样。
3757
[root@test ~]# ulimit -Hu
3757
对于Hadoop集群来说肯定是不够的。当然也可以直接使用ulimit -a查看所有的配置。
在/etc/security/limits.conf文件添加如下的配置。
* - nofile 65535
* - nproc unlimited
其中的*代表所有用户,如果想要只添加对单个用户的修改,可以直接写用户名,其中 -(横线) 代表软硬限制都使用一样的配置。
如果想要配置生效,需要重新开启另外一个会话,查看修改后的值:
[root@test ~]# ulimit -Sn
65535
[root@test ~]# ulimit -Hn
65535
[root@test ~]# ulimit -Su
unlimited
[root@test ~]# ulimit -Hu
unlimited
[root@test ~]#
磁盘设置
确保在挂载磁盘的时候使用noatime时间以及挂载所有目录时使用nodir时间,这样可以避免在对Linux文件系统中的文件和目录进行读取操作时进行不必要的写入操作,从而提高集群性能,。
eg:
修改:
重新挂载磁盘
# mount -o remount /dev/mapper/centos-root
# mount -o remount /dev/mapper/centos-home
测试磁盘的IO速度
使用hdparm -t命令测试磁盘的速度,hdparm需要安装
[root@test ~]# hdparm -t /dev/mapper/cl-data /dev/mapper/cl-data:
Timing buffered disk reads: MB in 3.05 seconds = 52.50 MB/sec //速度最好是达到70MB/s 以上
启用NTP服务
确保集群的时间同步是开启的,centos7默认的时间同步是使用chrony,配置文件/etc/chrony.conf。当然也可以重新安装ntp服务。这两个功能是一样的。
检查DNS
使用主机名而不是IP来标识节点,理想状态下,集群中的所有节点都必须配置NDS和反向DNS,确保所有主机名配置完全限定域名(FQDN),例如:
[root@test ~]# hostname --fqdn
test //我这里就不是
如果无法配置DNS,需要把主机名和IP的对于关系加入到/etc/hosts文件
禁用swap
swap交换分区,会降低处理速度
# swapoff -a //关闭交换分区
# swapon -s //检查服务器的状态
# swapon -a //开启交换分区
默认情况下,大多数操作系统的swappiness值为60,这个值表示当内存还剩余多少时开始使用交换分区,设置为0表示除非内存不足(现在对0的解释是0意味着“在任何情况下都不要发生交换”),不然不适用交换分区,设置为100,表示立即使用。
这里如果开启了交换分区,那么应该在/etc/sysctl.conf文件添加如下配置
vm.swappiness = 10
# sysctl -p
禁用SElinux
[root@test ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@test ~]# setenforce
关闭IPv6
在/etc/sysctl.conf文件最后配置如下:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
也可以通过环境变量HADOOP_OPTS添加如下参数来禁止Hadoop的的IPv6.
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
防火墙
如果是自己测试可以关闭防火墙,生产环境就自己配置相应的值了
SSH
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa //指定生产秘钥的文件
内存脏页(脏数据)
请查看
https://www.cnblogs.com/yinzhengjie/p/9994207.html
部署Hadoop集群之前的一些系统配置的更多相关文章
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- 如何部署hadoop集群
假设我们有三台服务器,他们的角色我们做如下划分: 10.96.21.120 master 10.96.21.119 slave1 10.96.21.121 slave2 接下来我们按照这个配置来部署h ...
- 批量部署Hadoop集群环境(1)
批量部署Hadoop集群环境(1) 1. 项目简介: 前言:云火的一塌糊涂,加上自大二就跟随一位教授做大数据项目,所以很早就产生了兴趣,随着知识的积累,虚拟机已经不能满足了,这次在服务器上以生产环境来 ...
- 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建
准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...
- 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- 阿里云ECS服务器部署HADOOP集群(六):Flume 安装
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...
- 阿里云ECS服务器部署HADOOP集群(七):Sqoop 安装
本篇将在 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper) 阿 ...
- 阿里云ECS服务器部署HADOOP集群(五):Pig 安装
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...
随机推荐
- Microsoft Visual Studio常用快捷键
快速补全关键字 1)tab; 删除整行代码 1)Ctrl + L; 回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ct ...
- BUAAOO-Final-Summary
目录 总结本单元两次作业的架构设计 总结自己在四个单元中架构设计及OO方法理解的演进 总结自己在四个单元中测试理解与实践的演进 总结自己的课程收获 立足于自己的体会给课程提三个具体改进建议 两次架构设 ...
- 解决Vivado XSDK在Ubuntu系统上自带UART Terminal Crash问题
在Ubuntu 18.04 LTS系统上使用某些版本的Vivado XSDK的Eclipse IDE中自带的串口Terminal会有Crash的问题.Xilinx的XSDK的Terminal插件是用的 ...
- SpringBoot学习<一>——快速搭建SpringBoot
这是我的第一篇博客,博客记录我以后的学习,包括一些总结之类的东西,当然,这些记录是针对于与我个人而言的,可能有些地方会有不好的,或者出现错误,欢迎大家来指正(如果有人看的话)废话不多说.进入正题:Sp ...
- 如何让django模型中的字段和model名显示为中文
如何让django模型中的字段和model名显示为中文:在模型中加入class Meta即可 class People(models.Model): name = models.CharField(n ...
- 【hive】centos7下apache-hive-3.1.2-bin的安装测试
前言:安装hive还是遇见些问题,但还好都解决了,比当初安装配置hadoop-3.2.0容易点...... 正文: 1.下载并安装hive:tar -zxvf apache-hive-3.1.2-bi ...
- SQL Server 字段提取拼音首字母
目前工作中遇到一个情况,需要将SQL Server中的一个字段提取拼音的首字母,字段由汉字.英文.数字以及“-”构成,百度了一堆,找到如下方法,记录一下,以备后用! 首先建立一个函数 --生成拼音首码 ...
- php连接mySql,加密函数
连接MySQL mysql_connect(servername,username,password); 面向对象: <?php $servername = "localhost&qu ...
- SHELL脚本编程的条件测试
SHELL脚本编程的条件测试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.条件测试概述 判断某需求是否满足,需要由测试机制来实现 专用的测试表达式需要由测试命令辅助完成测试过 ...
- 如何顺利完成Kubernetes源码编译?
为什么要编译源码 ? Kubernetes是一个非常棒的容器集群管理平台.通常情况下,我们并不需要修改K8S代码即可直接使用.但如果,我们在环境中发现了某个问题/缺陷,或按照特定业务需求需要修改K8S ...