spark 基于物理机centos7环境搭建分布式集群

集群环境配置:

主机名称/IP spark hadoop mysql hbase hive zookeeper flume kafka redis
linux01.pub/192.168.10.10 1 1 1 1 1        
linux02.pub/192.168.10.11 1 1   1          
linux03.pub/192.168.10.12 1 1   1          
linux04.pub/192.168.10.13 1 1   1   1 1 1 1
linux05.pub/192.168.10.14 1 1   1   1 1 1 1
linux06.pub/192.168.10.15 1 1   1   1 1 1 1

一、基础环境配置

1、先在linux01上安装mysql
千万记住,安装前一定要删除本机所有的Mysql或Mariadb

#!/bin/bash
service mysql stop 2>/dev/null
service mysqld stop 2>/dev/null
rpm -qa | grep -i mysql | xargs -n1 rpm -e --nodeps 2>/dev/null
rpm -qa | grep -i mariadb | xargs -n1 rpm -e --nodeps 2>/dev/null
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql
rm -rf /etc/my.cnf
rm -rf /usr/my.cnf
直接参照此前写过的这篇,不再重复

https://blog.csdn.net/qq_36269641/article/details/109641947

检查,mysql是否安装成功,可以用netstat, 如果没有可以用以下命令安装

# 安装网络工具

yum install -y net-tools

# 查看端口或程序

netstat -nltp |grep mysqld  #或 3306
 2、网络改成静态地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
注:网卡名称可能不一致,ifcfg-ens**(*为数字)即是配置文件。可以使用在进入该文件夹后查看所有文件,符合名称的即为网卡配置文件或使用 ip addr查看。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static          //将原文件里的改为此处,使用静态ip
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
DEVICE=ens33
ONBOOT=yes               //将原文件里的改为此处,默认打开网卡
NETMASK=255.255.255.0    //新增:此处为子网掩码
GATEWAY=192.168.**.*     //新增:此处为网关
IPADDR=192.168.**.*    //新增:此处为ip地址,需与子网保持在一个网段内,最后一位随意(1~254)
DNS1=114.114.114.114     //新增:域名解析服务器
DNS2=119.29.29.29        //新增:域名解析服务器
保存后,重启网卡服务即可(systemctl  restart network)。测试主机与虚拟机互 ping 以及虚拟机 ping 百度。
3、安装必要插件

sudo yum install -y epel-release
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git

4.修改主机名
主机名分别为:

hostnamectl  set-hostname  hadoop-master(主机名)
 vim /etc/hosts #加上以下内容
192.168.29.151 cluster01    #第一台机器的ip和主机名
192.168.29.152 cluster02    #第二台机器的ip和主机名
192.168.29.153 cluster03    #第三台机器的ip和主机名
192.168.29.154 cluster04    #第四台机器的ip和主机名
192.168.29.155 cluster05    #第五台机器的ip和主机名
 
5.关闭防火墙

# 禁止开机启动
systemctl disable firewalld
# 关闭防火墙
systemctl stop firewalld
 

6、创建atguigu用户,并修改atguigu用户的密码

 useradd atguigu

 passwd atguigu
 
1)配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令

 vim /etc/sudoers
修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:

\## Allow root to run any commands anywhere

root   ALL=(ALL)   ALL

\## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)    ALL

atguigu  ALL=(ALL)   NOPASSWD:ALL
 
注意:atguigu这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了atguigu具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以atguigu要放到%wheel这行下面。

2)在/opt目录下创建文件夹,并修改所属主和所属组

(1)在/opt目录下创建module、software文件夹

 mkdir /opt/module

 mkdir /opt/software
 
​ (2)修改module、software文件夹的所有者和所属组均为atguigu用户

  chown atguigu:atguigu /opt/module 

  chown atguigu:atguigu /opt/software

(3)查看module、software文件夹的所有者和所属组

 cd /opt/

 ll

6)卸载自带的jdk

​ 注意:如果你的虚拟机是最小化安装不需要执行这一步。

 rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 


Ø rpm -qa:查询所安装的所有rpm软件包

Ø grep -i:忽略大小写

Ø xargs -n1:表示每次只传递一个参数

Ø rpm -e –nodeps:强制卸载软件

1)卸载现有的JDK
注意:安装JDK前,一定确保提前删除了虚拟机自带的JDK。

2)用XShell传输工具将JDK导入到opt目录下面的software文件夹下面

3)在Linux系统下的opt目录中查看软件包是否导入成功

 ls /opt/software/
看到如下结果:

jdk-8u212-linux-x64.tar.gz
4)解压JDK到/opt/module目录下

 tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

5)配置JDK环境变量

​ (1)新建/etc/profile.d/my_env.sh文件

 sudo vim /etc/profile.d/my_env.sh
添加如下内容

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_212

export PATH=$PATH:$JAVA_HOME/bin

​ (3)source一下/etc/profile文件,让新的环境变量PATH生效 source /etc/profile

6)测试JDK是否安装成功

[atguigu@hadoop102 ~]$ java -version

如果能看到以下结果,则代表Java安装成功。


注意:重启(如果java -version可以用就不用重启)

  reboot
 

7.配置ssh无密登录配置

① 生成公匙和私匙

ssh-keygen -t rsa

然后敲(三个回车),查看/root/.ssh/目录,可以看到会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

cd /root/.ssh/

② 将公钥拷贝到要免密登录的目标机器上

将所有主机的公钥分别追加到主机的~/.ssh/authorized_keys,在登录三台主机后都执行以下三条命令
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson01
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson02
ssh-copy-id -i ~/.ssh/id_rsa.pub ceson@ceson03

# 时间同步 
yum install ntpdate -y 
ntpdate time.windows.com
或者

下载时间同步模块
yum -y install ntpdate

连接远程服务器
ntpdate -u time1.aliyun.com

修改文件
ntpdate -u ntp.api.bz

date 查看系统时间

hwclock --show 查看硬件时间

hwclock -w 永久保存

date 查看 成功

二、hadoop的集群配置
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/software
#修改解压文件默认名字(名字过于长,所以建议修改一下)
mv  hadoop-3.1.3/ hadoop313        #将hadoop改为hadoop313
#配置环境变量
vim /etc/profile.d/myenv.sh
# jdk
export JAVA_HOME=/opt/software/java/jdk180    #自己的jdk路径
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# hadoop
export HADOOP_HOME=/opt/software/hadoop313    #自己的hadoop路径
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
保存退出,通过命令 source /etc/profile 激活
输入 java -version 如果实现jdk的版本信息就是激活成功了

3、文件复制
将jdk、hadoop、环境配置文件复制到其他机器上 ,其他机器上必须创建所需的文件夹

scp   -r    $pdir/$fname            $user@$host:$pdir/$fname
命令 递归    要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称
#下面是我将jdk、环境变量配置文件、hadoop 拷贝到cluster02上,同样的方式复制到其他机器上 
#注:拷贝到其他机器的环境变量配置文件需要激活一下 source /etc/profile 再通过 java -version 来验证是否激活
scp -r /opt/software/java/ root@cluster02:/opt/software/
scp -r /etc/profile.d/myenv.sh root@cluster02:/etc/profile.d/
scp -r /opt/software/hadoop313/ root@cluster02:/opt/software/

三、hadoop的集群配置
以上步骤配置完成,就需要进行集群配置了

1、集群的配置介绍
NameNode 和 SecondaryNameNode 不要安装在同一台服务器
ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上

  cluster01 cluster02 cluster03 cluster04 cluster05 cluster06
HDFS NameNode   SecondaryNameNode      
DataNode DataNode DataNode DataNode DataNode DataNode DataNode
YARN   ResourceManager        
NodeManager NodeManager NodeManager NodeManager NodeManager NodeManager NodeManager

2、4个xml文件的配置
1、core-site.xml

<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.29.151:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop313/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 root -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>



2、hdfs-site.xml

<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>cluster01:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>cluster03:9868</value>
</property>

3、yarn-site.xml

<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>cluster02</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>

4、mapred-site.xml

<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

5、配置workers
配置workers,增加五个主机名
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行

vim /opt/software/hadoop313/etc/hadoop/workers
cluster01
cluster02
cluster03
cluster04
cluster05

将配置好的4个xml文件和workers文件覆盖到其他4个机器上去(同文件替换)

四、启动集群
1、NameNode初始化
#如果集群是第一次启动,需要在cluster01节点格式化 NameNode
[root@cluster01 hadoop313]# hdfs namenode -format
2、启动 HDFS、YARN
#启动 HDFS
[root@cluster01 hadoop313]# sbin/start-dfs.sh
#在配置了 ResourceManager 的节点(cluster02)启动 YARN
[root@cluster02 hadoop313]# sbin/start-yarn.sh

3、验证是否成功启动
Web 端查看 HDFS 的 NameNode
浏览器中输入:http://192.168.29.151:9870
查看 HDFS 上存储的数据信息

Web 端查看 YARN 的 ResourceManager
浏览器中输入:http://192.168.29.152:8088
查看 YARN 上运行的 Job 信息

以上界面如果能正常打开,恭喜你!集群搭建成功了!

猜你喜欢

转载自blog.csdn.net/eagle89/article/details/130468354