搭建Hadoop集群
文章基于CentOS7搭建Hadoop集群,给出搭建Hadoop集群的前置操作,Ubuntu系统搭建过程类似,在资源下载命令有细微不同,具体情况可根据不同系统做对应操作。
云平台搭建
云上虚拟局域网VPC
基本介绍
私人专有网络,主要为为云上集群配置好网络。VPC相当于一个入户带宽,可以装很多路由器,划分很多子网,集群中的服务器连接到该VPC下,处于同一网段,还可再细分不同子网。
操作步骤
- 选择专有网络VPC,创建VPC
- 选择专有网络所在区域(需要与买的服务器区域相同)
- 选择IPv4网段,推荐选择B类网络(192.168.0.0/16,网络号16位,可分配216 -2)
- 配置交换机(子网),推荐选择24位子网掩码(192.168.88.xxx /24),即88子网下属于同一台交换机,可指派的服务器数为28 -2个
安全组SG
基本介绍
安全组相当于云上服务器的流量防火墙,可以控制服务器与外界的流量进出,可以通过指定规则控制流量的出入,一般入方向只对自己的ip开放,即自己的网络才能登陆上云服务器操作,保护服务器安全,出方向不做限制,允许服务器去各个网站请求资源。
操作步骤
- 选择安全组,创建安全组
- 选择安全组网络(VPC),即给这个VPC入户宽带装防火墙
- 默认资源组
- 配置资源规则(入方向:限制自己所在IP才可以访问,出方向:一般不限制)
- 查询自己所在ip,配置到入方向,删除所有出方向的规则
- 公网IP太稀有了,一般的运营商网络IP是变化的,如果连不上服务器要重新修改入规则IP
购买服务器
关于服务器的配置,这里不做过多讲述,价格一般由选的内存、硬盘类型、核心数、公网IP流量费用等有关,配置越豪华越贵。
操作步骤
- 选择内存、硬盘类型、核心数、网络等基本情况
- 选择服务器专有网络VPC以及VPC下的交换机(子网)
- 配置公网IP分配,设置子网IP地址
- 选择安全组,相同集群选同一个安全组
- 最后进到系统设置,可密码,也可密钥对,推荐使用密钥对登录
- 密钥,即SSH,给定密钥对名称,可自动创建密钥对文件
- 一定要妥善保管好密钥对文件,用来登录服务器,丢了只能重置服务器登录方式
- 远程登录时,ip为公网ip,登录方法选择公钥,密码无需输入,选择私钥文件即可
配置主机名映射:/etc/hosts文件
主机名映射
操作步骤
- vim /etc/hosts :进入到主机名映射配置文件
- 192.168.88.111 node1 node1:配置简主机名与全主机名(域名)s
- 集群中的主机名映射配置都一样,CP配置信息到hots文件即可
- 配置ssh免密登录 : 将密钥文件复制到/root/.ssh目录下
- 可对密钥文件改名id_rsa,chmod 400 ,给权限(仅属主可读)
- 不同服务器之间可实现登录:ssh node1,默认会去找id_rsa为密钥对登录
创建服务器用户
- useradd hadoop :创建用户hadoop
- passwd hadoop :给用户hadoop设置密码,可123456
- su hadoop :切换到用户hadoop
- ssh -keygen -t rsa -b 4096 :为hadoop用户创建密钥
配置hadoop用户之间的免密登录
- 先在一台服务器上使用ssh-keygen -t rsa -b 4096
- 在一台服务器上执行ssh-copy-id node1、ssh-copy-id node2、ssh-copy-id node3
- 注意默认找id_rsa 登录,所以密钥文件需要改名
- 上述命令选择yes,并对应填入node1、node2、node3的hadoop用户密码
- 所有的服务器都需要执行上述操作,即完成了hadoop用户之间的免密登录
配置JDK
- 单台机上的配置:
- CentOS 7.64推荐选择jdk-8u361-linux-x64.tar.gz
- 创建/export/server:软件与环境都丢进去
- tar -zxvf jdk-8u361-linux-x64.tar.gz -C /export/server/ :解压到 /export/server/
- cd /export/server/ :到解压目录下
- ln -s /export/server/jdk1.8.0_361 jdk : 配置一个名为jdk的软连接指向这个文件夹
- vim /etc/profile : 进入profile配置环境变量
- export JAVA_HOME=/export/server/jdk1.8.0_361
- export PATH=JAVA_HOME/bin
- source /etc/profile : 要source一下使刚添加的环境变量生效
- rm -rf /usr/bin/java : 将自带的java删掉
- ln -s /export/server/jdk1.8.0_361/bin/java /usr/bin/java:自己安装的java链接到usr/bin/java
- java -version 与javac -version : 查看
- 同样的操作在其他机器上
- scp -r jdk1.8.0_361/ node2:/export/server/ : node1解压好的jdk远程复制到node2,注意先创建好/export/server/
- 配置软连接jdk
- 配置环境变量
- source 生效
- 删除系统tjava
- 下载的java路径链接到usr/bin/java
- java -version 和javac -version验证
关闭防火墙
- systemctl stop firewalld:关闭防火墙
- systemctl disable firewalld:开机不启动
- vim /etc/sysconfig/selinux :SELINUX=disabled
- init 6 :重启后生效
配置时区与网络同步
- 时区同步软件ntp
yum install -y ntp - 更行时区
- 先删除本地时间配置文件
rm -f /etc/localtime
- 再将自己设置的时区链接到系统时区文件中
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 同步时间
ntpdate -u ntp.aliyun.com - 开启ntp
systemctl start ntpd - 设置开机自启
systemctl enable ntpd
虚拟机搭建
主机、IP、SSH等网络设置
- 首先修改主机名
hostnamectl set-hostname node1 - 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#设置静态ip
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="30abe4e3-8cdb-4103-9b37-d1cabab97f10"
DEVICE="ens33"
ONBOOT="yes"
#设置ip静态后要给定ip、子网掩码、网关、dns
IPADDR="192.168.155.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.155.2"
DNS1="192.168.155.2"
- 重启网卡
systemctl stop network
systemctl start network
ifconfig :查看是否更改 - 配置主机名映射(先修改windows的再修改Linux的)
- windows -> C:\Windows\System32\drivers\etc\hosts
- linux -> vim /etc/hosts
192.168.155.101 node1
192.168.155.102 node2
192.168.155.103 node3
- 配置root的ssh免密登录
ssh-keygen -t rsa -b 4096 : 生成rsa方式的4096b的密钥(公钥+私钥)
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
- 创建hadoop用户并配置免密登录
#创建hadoop与设置hadoop密码,root下密码设置可不管提醒
useradd hadoop
passwd hadoop
#生成密钥对
ssh-keygen -t rsa -b 4096
#配置免密登录,输入yes,然后输入对应登录节点的密码
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
JDK部署
- 创建/export/server目录
mkdir -p /export/server - 上传jdk(jdk1.8.0_361)
- 解压jdk
tar -zxvf jdk-8u361-linux-x64.tar.gz -C /export/server/ - 创建名为jdk的软连接(快捷方式),注意jdk1.8.0_361后面没有/
ln -s /export/server/jdk1.8.0_361 jdk
若创错了软链接 可:rm -f jdk 或者unlink jdk - 配置JAVA_HOME
vim /etc/profile
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
- 继续软连接到/usr/bin(如果环境变量不生效就可利用usr/bin的java)
- 删除自带的java
rm -f /usr/bin/java - 安装的java软连接到usr/bin
- ln -s /export/server/jdk /bin/java /usr/bin/java
- 验证
java -version
javac -version
- javac若不行的话可能是没有source /etc/profile
关闭防火墙
- 关闭防火墙
systemctl stop firewalld - 设置防火墙开机不自启
systemctl disable firewalld - 除此,linux还有安全模块SELinux,当前可关闭,避免后续问题
vim /etc/sysconfig/selinux
SELINUX=disabled
- 修改之后需要重启生效、
init 6
配置时区与网络同步
- 下载时同步软件ntp
yum install -y ntp - 删除当前的默认时区
rm -f /etc/localtime - 重新写入目标时区
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - 同步时间
ntpdate -u ntp.aliyun.com - 开启ntp
systemctl start ntpd - 设置ntp开机自启
systemctl enable ntpd