YDB依赖的操作系统环境详解

YDB依赖的操作系统环境详解

操作系统如何选择

1.延云推荐使用CentOS 6.6,6.5的系统(请不要使用CentOS7

2.尽量选择安装英文语言环境,中文版Ambari有时会有问题,。

3.安装桌面版,请别安装最简版。

4.配置系统的yum源,如果部署Ambari会用到。

 

      开源世界确实好,选择很多,但是意味着也坑很多。

      对于YDB来说,是不挑操作系统版本的,只要您的系统能安装上Hadoop,那么YDB一般都能运行起来。甚至有些同学还在MAC上调试YDB。但是如果您是要运行在生产系统上,操作系统的选择就尤为重要了。

      CentOS7笔者在其中一个客户下踩了一个巨坑,一个内核的BUG导致系统不断重启,所以对比较新的内核版本还是比较畏惧,所以笔者不是特别推荐大家使用比较新的系统,建议大家选用经过较多生产系统上验证过的稳定版本。如果非要推荐一个版本,那么延云推荐使用Centos 6.6的系统,因为延云的日常开发与测试均在这个版本上进行。

      CentOS7我们当时踩的坑叫Transparent Huge Pages (THP)BUG,在负载高的时候会造成机器的反复重启,并且从HDP官方也证实了这个BUGhttp://www.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html,但是我们按照上面的方法进行设置后,机器不重启了,但是依然发生偶尔断网的情况。

 

四、操作系统设置

1.Ulimit配置

      操作系统默认只能打开1024个文件,打开的文件超过这个数发现程序会有“too many open files”的错误,1024对于大数据系统来说显然是不够的,如果不设置,基本上整个大数据系统是不可用的,根本不能用于生产环境。

      配置方法如下:

echo "*  soft    nofile  128000" >> /etc/security/limits.conf

echo "*  hard    nofile  128000" >> /etc/security/limits.conf

echo "*  soft    nproc  128000" >> /etc/security/limits.conf

echo "*  hard    nproc  128000" >> /etc/security/limits.conf

cat /etc/security/limits.conf

sed -i 's/1024/unlimited/' /etc/security/limits.d/90-nproc.conf

cat/etc/security/limits.d/90-nproc.conf

ulimit -SHn128000

ulimit -SHu 128000

2.Swap的问题

      10~20年前一台服务器的内存非常有限,64m~128m,所以通过swap可以将磁盘的一部分空间用于内存。但是现今我们的服务器内存普遍达到了64G以上,内存已经不再那么稀缺,但是内存的读取速度与磁盘的读取相差倍数太大,如果我们某段程序使用的内存映射到了磁盘上,将会对程序的性能照成非常严重的影响,甚至导致整个服务的瘫痪。对于YDB系统来说,要求一定要禁止使用Swap.

      禁用方法如下,让操作系统尽量不使用Swap

echo "vm.swappiness=1" >> /etc/sysctl.conf

sysctl -p

sysctl -a|grep swappiness

 

3.网络配置优化

echo " net.core.somaxconn = 32768 " >> /etc/sysctl.conf

sysctl -p

sysctl -a|grepsomaxconn

 

4.SSH无密码登录

安装 HadoopAmbari均需要无密码登录

设置方法请参考如下命令

ssh-keygen

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

 

ssh-copy-id root@ydbslave01

ssh-copy-id root@ydbslave02

…..

5.关闭防火墙

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT

chkconfig iptables off

/etc/init.d/iptables stop

service iptables stop

iptables -F

 

6.配置机器名,以及hosts域名解析

hostname ydbmaster

vi /etc/sysconfig/network

vi /etc/hosts

 

切记 hosts文件中 不要将localhost给注释掉,并且配置完毕后,执行下 hostname -f 看下 是否能识别出域名

 

7.setenforceUmask配置

•setenforce

setenforce 0

sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/refresh-packagekit.conf

cat /etc/yum/pluginconf.d/refresh-packagekit.conf

•Umask

umask 0022

echo umask 0022 >> /etc/profile

8.检查/proc/sys/vm/overcommit_memory的配置值

   如果为2,建议修改为0,否则有可能会出现,明明机器可用物理内存很多,但JVM确申请不了内存的情况。

9.语言环境配置

先修改机器的语言环境

#vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

然后配置环境变量为utf8

echo "export LANG=en_US.UTF-8 " >> ~/.bashrc

source ~/.bashrc

export|grep LANG

 

10.配置时间同步

      HadoopYDB等均要求机器时钟同步,否则机器时间相差较大,整个集群服务就会不正常,所以一定要配置。建议配置NTP服务。

集群时间必须同步,不然会有严重问题

参考资料如下:http://www.linuxidc.com/Linux/2009-02/18313.htm

 

11.JDK安装部署

      YDB支持JDK1.7,JDK1.8,为了便于管理和使用,建议使用YDB随机提供的JDK1.8

建议统一安装到/opt/ydbsoftware路径下。

 

12.环境变量

请大家千万不要在公共的环境变量配置HIVESPARKLUCENEHADOOP等环境变量,以免相互冲突。

13.请检查盘符,不要含有中文

      尤其是Ambari,有些时候,使用U盘或移动硬盘复制软件,如果这个移动硬盘挂载点是中文路径,这时在安装Ambari的时候会出现问题,一定要注意这个问题。

 

14.检查磁盘空间,使用率不得超过90%

      默认Yarn会为每台机器保留10%的空间,如果剩余空间较少,Yarn就会停掉这些机器上的进程,并出现Container released on a *lost* node错误。

 

15.关键日志,定时清理,以免时间久了磁盘满了

如可以编辑crontab -e 每小时,清理一次日志,尤其是hadoop日志,特别占磁盘空间

 

0 */1 * * * find /var/log/hadoop/hdfs  -type f -mmin +1440 |grep -E "\.log\." |xargs rm -rf