Hadoop分布式集群部署
一、系统参数配置优化
1、系统内核参数优化配置
修改文件/etc/sysctl.conf,添加如下配置,然后执行sysctl -p命令使配置生效
net.ipv4.conf.all.arp_notify = 1
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
2、修改Linux最大限制
追加如下配置到文件/etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
3、磁盘I/O优化调整
Linux磁盘I/O调度器对磁盘的访问支持不同的策略,默认的为CFQ,建议设置为deadline。
我这里是sda磁盘,你需要根据你的磁盘进行IO调度策略设置,如下设置:
#echo deadline > /sys/block/sda/queue/scheduler
如果想永久生效,加入到/etc/rc.local即可。
以上3步都配置完毕后,重启操作系统生效。
二、安装前环境配置
1、部署环境清单说明
2、设置主机名
192.168.10.91:
#hostname hadoop-nn
#echo "hostname hadoop-nn" >> /etc/rc.local
192.168.10.92:
#hostname hadoop-snn
#echo "hostname hadoop-snn" >> /etc/rc.local
192.168.10.93:
#hostname hadoop-dn-01
#echo "hostname hadoop-dn-01" >> /etc/rc.local
3、关闭防火墙(所有节点)
#systemctl stop firewalld
#systemctl disable firewalld
4、关闭SELinux(所有节点)
#setenforce 0
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
5、添加以下配置到/etc/hosts(所有节点)
192.168.10.91 hadoop-nn master
192.168.10.92 hadoop-snn slave01
192.168.10.93 hadoop-dn-01 slave02
6、NTP时间同步
在Hadoop namenode节点安装ntp服务器,然后其他各个节点都同步namenode节点的时间。
192.168.10.91:
#yum -y install ntp
#systemctl start ntpd
#systemctl enable ntpd
然后在其他节点同步ntp时间。
192.168.10.92;192.168.10.93:
#yum -y install ntp
#ntpdate hadoop-nn
添加一个计划任务,Hadoop需要各个节点时间的时间都是一致的,切记。
三、开始部署Hadoop
1、 安装JAVA(所有节点)
#yum -y install java java-devel
查看java版本,确保此命令没有问题
#java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
另外openjdk安装后,不会默许设置JAVA_HOME环境变量,要查看安装后的目录,可以用命令。
#update-alternatives --config jre_openjdk
There is 1 program that provides 'jre_openjdk'.
Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre)
默认jre目录为:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre
设置环境变量,可用编辑/etc/profile.d/java.sh
#!/bin/bash
#
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
export CLASSPATH=$JAVA_HOME/lib/rt.jar:$JAVA_HOME/../lib/dt.jar:$JAVA_HOME/../lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
完成这项操作之后,需要重新登录,或source一下profile文件,如果你对大数据开发感兴趣,想系统学习大数据的话,可以加入大数据技术学习交流扣群:522数字189数字307以便环境变量生效,当然也可以手工运行一下,以即时生效
#source /etc/profile.d/java.sh
2、创建hadoop用户(所有节点)
#useradd hadoop
#passwd hadoop
设置密码,为简单起见,3台机器上的hadoop密码最好设置成一样,比如123456。为了方便,建议将hadoop加入root用户组,操作方法:
#usermod -g root hadoop
执行完后hadoop即归属于root组了,可以再输入id hadoop查看输出验证一下,如果看到类似下面的输出:
#id hadoop
uid=1002(hadoop) gid=0(root) groups=0(root)
3、在NameNode节点创建秘钥
192.168.10.91:
创建RSA秘钥对
#su - hadoop
$ssh-keygen
在NameNode节点复制公钥到所有节点Hadoop用户目录下,包括自己:
$ssh-copy-id hadoop@192.168.10.91
$ssh-copy-id hadoop@192.168.10.92
$ssh-copy-id hadoop@192.168.10.93
4、解压Hadoop二进制包并设置环境变量(所有节点)
#wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.8.4/hadoop-2.8.4.tar.gz
#tar xf hadoop-2.8.4.tar.gz -C /usr/local/
#ln -sv /usr/local/hadoop-2.8.4/ /usr/local/hadoop
编辑环境配置文件/etc/profile.d/hadoop.sh,定义类似如下环境变量,设定Hadoop的运行环境。
#!/bin/bash
#
export HADOOP_PREFIX="/usr/local/hadoop"
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
创建数据和日志目录:
#mkdir -pv /data/hadoop/hdfs/{nn,snn,dn}
#chown -R hadoop:hadoop /data/hadoop/hdfs
#mkdir -pv /var/log/hadoop/yarn