Hadoop集群搭建系统环境准备
简介
Hadoop集群的搭建需要一系列的环境准备,包括操作系统参数的调整以及一些必备软件的安装等。
环境准备
硬件配置我就不说了,CDH官网有说明:硬件配置
测试使用嘛,随便搞搞就行。
操作系统就选用很受欢迎的开源免费的CentOS了。
以4个节点的测试集群为例:
ip | hostname |
---|---|
192.168.0.201 | master1 |
192.168.0.202 | master2 |
192.168.0.203 | worker1 |
192.168.0.204 | worker2 |
所有节点安装CentOS7-x64操作系统
修改主机名hostname
# vim /etc/hostname
master1
或者# hostnamectl set-hostname master1
查看hostname# hostname
配置ip
# vim /etc/sysconfig/network-scripts/ifcfg-eth33/
TYPE=Ethernet
BOOTPROTO=static # 设置为静态
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes # 开机启用
IPADDR=192.168.0.201 # ip地址
GATEWAY=xxx.xxx.xxx.xxx # 网关
NETMASK=xxx.xxx.xxx.xxx # 子网掩码
DNS=xxx.xxx.xxx.xxx # DNS
重启服务# systemctl restart network
查看ip# ip addr
修改Hosts
# vim /etc/hosts
192.168.0.201 master1
192.168.0.202 master2
192.168.0.203 worker1
192.168.0.204 worker2
关闭防火墙
Hadoop集群运行需要用到很多端口,关掉防火墙省事些。
关闭防火墙:# systemctl stop firewalld.service
关闭开机自动启动:# systemctl disable firewalld.service
关闭SELinux
编辑/etc/selinux/config
文件,将SELINUX=enforcing
改为SELINUX=disabled
配置SSH免密码登陆
1.查看ssh服务状态(CentOS默认已安装并开机自启动的)# service sshd status
2.生成私钥和公钥(所有节点都执行)# ssh-keygen -t rsa
# cd ~/.ssh
3.在master2节点# cp id_rsa.pub master2.id_rsa.pub
# scp master2.id_rsa.pub root@master1:~/.ssh
4.在worker1节点# cp id_rsa.pub worker1.id_rsa.pub
# scp worker1.id_rsa.pub root@master1:~/.ssh
5.在worker2节点# cp id_rsa.pub worker2.id_rsa.pub
# scp worker2.id_rsa.pub root@master1:~/.ssh
6.在master1节点
将所有节点的公钥信息保存到主节点下的authorized_keys(新生成的)文件中# cat id_rsa.pub >> authorized_keys
# cat master2.id_rsa.pub >> authorized_keys
# cat worker1.id_rsa.pub >> authorized_keys
# cat worker2.id_rsa.pub >> authorized_keys
如图所示:
7.再把authorized_keys文件拷贝到其它节点上去# scp authorized_keys root@master2:~/.ssh
# scp authorized_keys root@worker1:~/.ssh
# scp authorized_keys root@worker2:~/.ssh
8.测试SSH:
配置ntp时间同步
集群中所有节点必须保持时间同步,如果时间相差较大会引起问题(如HBase服务无法正常启动)
实现方法:master1节点作为ntp服务器,对其它节点提供时间同步服务。 所有其它节点以master1节点为基础同步时间。
1.所有节点安装相关ntp组件# yum install ntp/或者手动安装rpm包
2.所有节点设置时区,中国上海:# timedatectl set-timezone Asia/Shanghai
3.启动ntp,以及设置开机启动# systemctl start ntpd
# systemctl enable ntpd
4.在master1节点上设置现在的准确时间# date -s “2017-06-15 09:10:00”
5.配置ntp服务器(master1节点)# vim /etc/ntp.conf
配置示例:
6.在其它节点上设置ntp客户端# vim /etc/ntp.conf
配置示例:
7.配置文件修改完毕后,重启ntp服务# systemctl restart ntpd
8.在其它节点上手动同步master1的时间# ntpdate -u 192.168.0.201
9.查看同步状态(可能需要稍等一会才能同步上)# ntpstat
禁用Transparent Hugepage
1.查看当前是否启用(启用状态可能会严重降低Hadoop集群性能,CentOS默认启用)# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never 表示已启用
always madvise [never] 表示已禁用
2.禁用Transparent Hugepage(重启生效):# vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
配置如图:
3.赋予rc.local文件可执行权限# chmod +x /etc/rc.d/rc.local
调整vm.swappiness Linux内核参数
该值用于控制从物理内存到磁盘上的虚拟内存的应用数据的交换。值越高,内存交换越积极。值越低,交换的次数越少。
大多数系统默认为60,但不适用于Hadoop集群,因为即使有足够的内存,Hadoop进程也有可能会被交换到磁盘,影响集群稳定性和性能。
1.查看当前的参数# cat /proc/sys/vm/swappiness
30 当前是30,建议设置为1-10之间,最好为1
2.设置vm.swappiness值为1# vim /etc/sysctl.conf
vm.swappiness=1
如图所示:
MySQL 5.6安装
1.检查MySQL及相关RPM包是否已安装,如果有安装,则移除# rpm -qa | grep -i mysql
# yum -y remove mysql-libxxxx
2.下载MySQL包:MySQL-5.6.36-1.linux_glibc2.5.x86_64.rpm-bundle.tar
解压:# tar -xvf MySQL-5.6.36-1.linux_glibc2.5.x86_64.rpm-bundle.tar
3.安装mysql-server# rpm -ivh MySQL-server-5.6.36-1.linux_glibc2.5.x86_64.rpm
与已安装的软件有冲突,需要卸载有冲突的软件:# yum -y remove xxxxxxxxx
再次安装mysql-server,安装成功,但是下面执行数据库初始化会报错,缺少一个模块
需要安装autoconf(需要联网或者搭建本地yum仓库或者从CentOS7安装包里拷出autoconf的rpm包及其依赖包,手动安装):# yum -y install autoconf
说明:这里有个坑,即最好是先安装autoconf,然后再装mysql-server,这个时候安装程序就会自动进行Mysql初始化。
4.安装客户端# rpm -ivh MySQL-client-5.6.36-1.linux_glibc2.5.x86_64.rpm
5.初始化mysql(因为安装server之前没有安装autoconf,所以这里需要手动初始化mysql)# /usr/bin/mysql_install_db
6.启动mysql服务# service mysql start
若无法启动则将/var/lib/mysql
目录下所有文件及子文件夹的用户及用户组设置为mysql# chown -R mysql:mysql /var/lib/mysql/
设置开机启动:# chkconfig mysql on
# chkconfig --list | grep mysql
7.对mysql进行安全设置
查看root账户密码:# cat /root/.mysql_secret
执行安全设置(需要确保MySQL服务已经正常启动):# /usr/bin/mysql_secure_installation
a)修改root用户密码 Y
b)删除匿名账号 Y
c)取消root用户远程登录 N
d)删除test库和对test库的访问权限 Y
e)刷新授权表使修改生效 Y
8.进入mysql# mysql -uroot -p
9.开放远程登陆权限mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
10.MySQL的默认安装位置
/var/lib/mysql/ ———-#数据库目录
/usr/share/mysql ——–#配置文件目录
/usr/bin ——————#相关命令目录
/etc/init.d/mysql ———#启动脚本
11.如果需要修改字符集则需配置/etc/my.cnf
文件
若etc
目录下没有该文件则从/usr/share/mysql/
下复制一个过来# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
查看字符集:
mysql> show variables like ‘%collation%’;
mysql> show variables like ‘%char%’;
mysql> show create database databaseName;
mysql> show create table tableName;
JDK1.8安装
1.查看系统自带java版本,如果已安装就先卸载掉# java -version
2.安装Oracle官网下载jdk的rpm安装包,并使用rpm -ivh packageName安装:
Download jdk1.8
3.修改环境变量# vim /etc/profile
添加如下(使用rpm安装的java在/usr/java/jdk1.8XXXX)
export JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=/usr/java/jdk1.8.0_131/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
4.执行命令使环境变量生效# source /etc/profile
5.测试# java -version
OVER
至此,Hadoop集群搭建的环境准备部分已结束。