Hadoop集群开发(一)--操作系统配置

操作系统

推荐使用Rhel或Centos系统,正式环境使用6.8版本,个人学习推荐使用7.2

环境搭建

Java

推荐使用JDK1.8版本

系统环境

修改系统相关配置

#修改主机名称
vi /etc/hostname
HDP001

#修改IP地址映射
vi /etc/hosts
162.168.1.191    HDP001    hdp001
162.168.1.192    HDP002    hdp002
162.168.1.193    HDP003    hdp003
162.168.1.194    HDP004    hdp004
162.168.1.195    HDP005    hdp005

#修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

#关闭Selinux
sed -i "SELINUX=enforcing/SELINUX=disable/g" /etc/selinux/config

#修改最大打开文件句柄数
vi /etc/security/limits.conf
*    soft nofile 131072   #星号表示对所有用户生效,可替换为用户名,为针对指定用户生效
*    hard nofile    131072

#修改最大进程数
vi /etc/security/limits.d/20-nproc.conf
*    soft nproc    unlimited
*    hard nproc    unlimited

#修改Swap参数
vi /etc/sysctl.conf
vm.min_free_kbytes=40960
##缺省值是102400,用来确定系统开始回收内存的阈值.保持物理内存有足够的空闲空间,防止突发性的换页.对于生产环境的服务器,可以设置为内存总量的4%。

vm.vfs_cache_pressure=200
##缺省值是100,这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,增大这个值,可以增加回收的倾向

vm.swappiness=40
##缺省值是60。这个参数的意义是,如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区,可以通过修改swappiness 的数值。swappiness=0的时候表示最大限度使用物理内存,然后才是swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面.

#挂载参数优化
##当文件被创建,修改和访问时,Linux系统会记录这些时间信息。当系统的读文件操作频繁时,记录文件最近一次被读取的时间信息,将是一笔不少的开销。所以,为了提高系统的性能,我们可以在读取文件时不修改文件的atime属性。可以通过在加载文件系统时使用notime选项来做到这一点。当以noatime选项加载(mount)文件系统时,对文件的读取不会更新文件属性中的atime信息。设置noatime的重要性是消除了文件系统对文件的写操作,文件只是简单地被系统读取。由于写操作相对读来说要更消耗系统资源,所以这样设置可以明显提高服务器的性能。注意wtime信息仍然有效,任何时候文件被写,该信息仍被更新
##立即生效  mount -o remount /
vi /etc/fstab
proc /proc    proc    defaults 0 0
none /dev/pts    devpts gid=5,mode=620 0 0
/dev/md0    /boot    ext3    defaults    0 0
/dev/md1    none    swap    sw    0 0
/dev/md2    /    ext3    defaults,noatime    0 0

新建用户

groupadd hadoop
useradd -g hadoop hadoop -d /home/hadoop
echo 123456|passwd --stdin hadoop

配置互信

切换至集群安装用户(hadoop)

su - hadoop
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub > authorized_keys
chmod 600 ~/.ssh/*
ssh localhost date

修改SSH配置文件

vi /etc/ssh/ssh_config
StrictHostKeyChecking no

vi /etc/ssh/sshd_config
PrintLastLog    yes

配置集群时间同步

hadoop集群间节点时间不宜超过30秒,否则在运行任务时可能出现异常。

hbase数据库那么对于时间同步的要求更加严格。因此hadoop集群之间需要进行时间同步。

通常,使用NTP(ntpdate是立即进行时间同步,可能会导致任务重复调度)服务来进行集群件服务器的时间同步:选取其中一台服务器为ntp服务端,其他服务器作为NTP客户端来同步此服务器的时间。

Centos7系统默认使用chronyc服务来进行时间同步,在使用ntpd服务之前需先禁用chronyc后启用ntpd

#禁用chronyc服务
systemctl stop chronyd
systemctl disable chronyd

#设置NTP服务自动同步硬件时间
vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes

#NTP服务端配置
##设定其他IP地址对本地时间同步的访问权限
restrict 162.168.1.191 mask 255.255.255.255 nomodify

##设定局域网内访问权限
restrict 162.168.1.0 mask 255.255.255.0 nomodify

#设定服务端时间同步服务器
server  127.127.1.0
fudge 127.127.1.0 stratum 8   #stratum 指定同步地址优先级

#注释原有公网同步地址
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

#NTP客户端配置
##注释原有同步公网地址
server  162.168.1.191 #配置上面配置的同步服务器IP地址
fudge 127.127.1.0 stratum 8

#配置完成后,重启服务生效
systemctl stop ntpd
systemctl start ntpd

#设置NTPD服务开机启动
systemctl enable ntpd

规划集群目录

/opt
|-------wks
|-----------java
|-----------mariadb
|-----------hdp
|-----------|-----core
|-----------|---------|-----hadoop
|-----------|---------|-----zookeeper
|-----------|---------|-----spark
|-----------|-----conf
|-----------|-----data
|-----------|-----logs
|-----------|-----tmp
cd /opt
mkdir wks
cd wks
mkdir java mariadb hdp
cd hdp
mkdir core conf data tmp logs
cd core
mkdir hadoop zookeeper spark hive kafka flume
cd ../tmp
mkdir mr_cache nm_cache
cd ../data
mkdir  hadoop zookeeper
cd hadoop
mkdir datanode journalnode namenode yarn
cd yarn
mkdir staging
mkdir -p /opt/wks/hdp/logs/yarn/userlogs

相关推荐