【FATE - 2】Centos7上Hadoop + Spark集群部署

本文参考至Fate集群部署下的hadoop+spark集群部署指南, 仅记录本人部署过程中的操作历程。

一、系统准备

【1】、集群规划(此后IP配置全部用主机名代替)

节点名称 主机名 IP地址 IP地址简称 虚拟机OS
Master VM-0-1-centos 192.168.26.128 128 CentOS 7.2
Slave1 VM-0-2-centos 192.168.26.129 129 CentOS 7.2
Slave2 VM-0-3-centos 192.168.26.130 130 CentOS 7.2

集群端口号合集

【2】、基础环境配置

1、 hostname配置

1)修改主机名(主机名中不能出现下划线)

在 128 root 用户下执行:

hostnamectl set-hostname VM-0-1-centos

设置192.168.26.128的主机别名

在 129 root 用户下执行:

hostnamectl set-hostname VM-0-2-centos

在 130 root用户下执行:

hostnamectl set-hostname VM-0-3-centos
2)加入主机映射

在目标服务器(128、 129、 130)root 用户下执行:

vim /etc/hosts
192.168.26.128 VM-0-1-centos
192.168.26.129 VM-0-2-centos
192.168.26.130 VM-0-3-centos

加入主机映射

2、 关闭SELinux

安全增强型Linux(SELinux)是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制。

在目标服务器(128、129、 130)root 用户下执行:

sed -i '/^SELINUX/s/=.*/=disabled/' /etc/selinux/config
setenforce 0

关闭SELinux

3、 修改Linux最大打开文件数

在目标服务器(128、129、130)root 用户下执行:

vim /etc/security/limits.conf
# soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错
* soft nofile 65536   # 任何用户可以打开的最大的文件描述符数量
* hard nofile 65536

修改最大打开文件数

4、关闭防火墙

在目标服务器(128、129、130)root 用户下执行

systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service

关闭防火墙

5、初始化服务器

1)初始化服务器

在目标服务器(128、129 、130)root 用户下执行

groupadd -g 6000 apps      # -g:指定新建工作组的 id
# useradd
# -s<shell>   指定用户登入后所使用的shell
# -G<群组>  指定用户所属的附加群组
# -m  自动建立用户的登入目录
useradd -s /bin/bash -G apps -m app  
passwd app     # 更改使用者的密码
mkdir -p /data/projects/common/jdk    # -p 确保目录名称存在,不存在的就建一个
# chown 设置文件所有者和文件关联组的命令
# -R : 处理指定目录以及其子目录下的所有文件
chown –R app:apps /data/projects      

初始化目标服务器

2)配置sudo

在目标服务器(128、129、130)root 用户下执行

vim /etc/sudoers.d/app
# 第一个ALL:表示来源地,即从哪执行这条命令。ALL表示所有计算机
# 第二个ALL:表示app可以切换到什么用户。ALL表示所有用户
# 第三个ALL:表示app可以切换到哪些组下的用户。ALL表示所有组
app ALL=(ALL) ALL
app ALL=(ALL) NOPASSWD: ALL   # NOPASSWD:ALL表示执行任意命令都不需要密码
Defaults !env_reset

配置sudo

3)配置ssh免密登录(三个root 和 三个app账户 )

本人采用的方法是在A虚拟机 root 账户下生成 公私钥对,并将公钥添加到授权文件,然后复制虚拟机A ,生成虚拟机B 和 虚拟机 C ,此时三台虚拟机root账户因为公私钥对和 授权文件相同,可互相免密登录;

各虚拟机的 app 用户也免密登录:需要将root的 公私钥对 和 授权文件 拷贝至app用户下,然后更改.ssh文件的所有者信息,这样 三个 root 账户 和 三个app账户就可互相免密登录

具体执行过程参照文章:设置虚拟机固定IP以及免密登录

【3】、安装包准备

1、上传以下程序包到服务器上
  1. jdk-1.8-linux-x64.tar.gz
  2. hadoop-2.7.7.tar.gz
  3. scala-2.12.8.tar.gz
  4. spark-2.4.2-bin-hadoop2.6.tar.gz
  5. apache-zookeeper-3.5.5-bin.tar.gz
2、解压
tar xvf hadoop-2.7.7.tar.gz -C /data/projects/common
tar xvf scala-2.12.8.tar.gz -C /data/projects/common
tar xvf spark-2.4.2-bin-hadoop2.6.tar.gz -C /data/projects/common
tar xvf apache-zookeeper-3.5.5-bin.tar.gz -C /data/projects/common
tar xvf jdk-1.8-linux-x64.tar.gz -C /data/projects/common/jdk
mv hadoop-2.7.7 hadoop
mv scala-2.11.12 scala
mv spark-2.4.2-bin-hadoop2.6 spark
mv apache-zookeeper-3.5.5-bin zookeeper
3、配置/etc/profile
export JAVA_HOME=/data/projects/common/jdk/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/data/projects/common/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SPARK_HOME=/data/projects/common/spark
export PATH=$SPARK_HOME/bin:$PATH
# 此处最好将zookeeper的环境也配上(可选)
export ZOO_HOME=/data/projects/common/zookeeper
export PATH=$ZOO_HOME/bin:$PATH

二、集群部署

【1】、Zookeeper集群部署

1、写zoo.cfg配置文件

在128、129、130 app 用户下执行(可在128上配置完,发送到129和130上)

cd /data/projects/common/zookeeper/conf
vi zoo.cfg
tickTime=2000   # 心跳间隔(毫秒),间隔两秒心跳一次
initLimit=10    # 集群中的follower与leader之间初始连接时能容忍的最多心跳数
syncLimit=5     # follower与leader之间请求和答应最多能容忍的最多心跳数
dataDir=/data/projects/common/zookeeper/data/zookeeper     # 该目录是用来存放myid信息跟服务器唯一的ID信息等
dataLogDir=/data/projects/common/zookeeper/logs   # 存储日志
clientPort=2181   # 侦听客户端连接的端口  默认2181
admin.serverPort=8887   # 默认为8080 冲突
maxClientCnxns=1000   # 客户端连接最大数量
# ZK集群配置,服务器启动时,在dataDir中查找文件myid来知道它是哪台服务器
server.1= VM-0-1-centos:2888:3888
server.2= VM-0-2-centos:2888:3888
server.3= VM-0-3-centos:2888:3888

zk集群ip配置

报错:Permission denied
原因:app用户无权限修改 /data/projects/common/ 目录文件
解决方案:调整app用户对 /data/projects/common/ 的所有权,再重写 zoo.cfg 文件即可;

# -R 表示修改当前目录及其子目录   app用户  apps组
# 因当前操作目录是/data/projects/common,故 * 代表/data/projects/common

chown -R app:apps *

修改app用户对common文件的权限

2、配置节点id—在dataDir目录下

master节点写1 ,slave节点依次类推 此处写完,可打开myid文件检查是否写成功;

# VM-0-1-centos 
echo 1 >> /data/projects/common/zookeeper/data/zookeeper/myid
# VM-0-2-centos
echo 2 >> /data/projects/common/zookeeper/data/zookeeper/myid
# VM-0-3-centos
echo 3 >> /data/projects/common/zookeeper/data/zookeeper/myid
3、启动zookeeper并查看状态

三个节点,先启动的是leader,后续启动的是follower

# 切换到zookeeper的bin目录下
cd /data/projects/common/zookeeper/bin/   

#  使用zkServer.sh  start 启动zookeeper  ---三个节点,先启动的是leader,后续启动的是follower
./zkServer.sh start   

#  需要三个节点都启动之后,才能正确查看状态
#  使用zkServer.sh  status 查看zookeeper集群状态
./zkServer.sh status 

./zkServer.sh stop  # 停止

zookeeper启动状态查看
zk启动报错:java.net.BindException: Address already in use
ZK启动失败address in use

JPS查看状态 java进程 QuorunPeerMain

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值