搭建Hadoop集群

文章基于CentOS7搭建Hadoop集群,给出搭建Hadoop集群的前置操作,Ubuntu系统搭建过程类似,在资源下载命令有细微不同,具体情况可根据不同系统做对应操作。

云平台搭建

云上虚拟局域网VPC

基本介绍

私人专有网络,主要为为云上集群配置好网络。VPC相当于一个入户带宽,可以装很多路由器,划分很多子网,集群中的服务器连接到该VPC下,处于同一网段,还可再细分不同子网。

操作步骤
  1. 选择专有网络VPC,创建VPC
  2. 选择专有网络所在区域(需要与买的服务器区域相同)
  3. 选择IPv4网段,推荐选择B类网络(192.168.0.0/16,网络号16位,可分配216 -2)
  4. 配置交换机(子网),推荐选择24位子网掩码(192.168.88.xxx /24),即88子网下属于同一台交换机,可指派的服务器数为28 -2个

安全组SG

基本介绍

安全组相当于云上服务器的流量防火墙,可以控制服务器与外界的流量进出,可以通过指定规则控制流量的出入,一般入方向只对自己的ip开放,即自己的网络才能登陆上云服务器操作,保护服务器安全,出方向不做限制,允许服务器去各个网站请求资源。

操作步骤
  1. 选择安全组,创建安全组
  2. 选择安全组网络(VPC),即给这个VPC入户宽带装防火墙
  3. 默认资源组
  4. 配置资源规则(入方向:限制自己所在IP才可以访问,出方向:一般不限制)
  5. 查询自己所在ip,配置到入方向,删除所有出方向的规则
  6. 公网IP太稀有了,一般的运营商网络IP是变化的,如果连不上服务器要重新修改入规则IP

购买服务器

关于服务器的配置,这里不做过多讲述,价格一般由选的内存、硬盘类型、核心数、公网IP流量费用等有关,配置越豪华越贵。

操作步骤
  1. 选择内存、硬盘类型、核心数、网络等基本情况
  2. 选择服务器专有网络VPC以及VPC下的交换机(子网)
  3. 配置公网IP分配,设置子网IP地址
  4. 选择安全组,相同集群选同一个安全组
  5. 最后进到系统设置,可密码,也可密钥对,推荐使用密钥对登录
  6. 密钥,即SSH,给定密钥对名称,可自动创建密钥对文件
  7. 一定要妥善保管好密钥对文件,用来登录服务器,丢了只能重置服务器登录方式
  8. 远程登录时,ip为公网ip,登录方法选择公钥,密码无需输入,选择私钥文件即可

配置主机名映射:/etc/hosts文件

主机名映射

操作步骤
  1. vim /etc/hosts :进入到主机名映射配置文件
  2. 192.168.88.111 node1 node1:配置简主机名与全主机名(域名)s
  3. 集群中的主机名映射配置都一样,CP配置信息到hots文件即可
  4. 配置ssh免密登录 : 将密钥文件复制到/root/.ssh目录下
  5. 可对密钥文件改名id_rsa,chmod 400 ,给权限(仅属主可读)
  6. 不同服务器之间可实现登录:ssh node1,默认会去找id_rsa为密钥对登录
创建服务器用户
  • useradd hadoop :创建用户hadoop
  • passwd hadoop :给用户hadoop设置密码,可123456
  • su hadoop :切换到用户hadoop
  • ssh -keygen -t rsa -b 4096 :为hadoop用户创建密钥
配置hadoop用户之间的免密登录
  1. 先在一台服务器上使用ssh-keygen -t rsa -b 4096
  2. 在一台服务器上执行ssh-copy-id node1、ssh-copy-id node2、ssh-copy-id node3
  3. 注意默认找id_rsa 登录,所以密钥文件需要改名
  4. 上述命令选择yes,并对应填入node1、node2、node3的hadoop用户密码
  5. 所有的服务器都需要执行上述操作,即完成了hadoop用户之间的免密登录
配置JDK
  1. 单台机上的配置:
  • 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=hadoop要几个虚拟机_hadoopJAVA_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 : 查看
  1. 同样的操作在其他机器上
  • 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