02
2024
02
00:35:52

基于VMware虚拟机的Hadoop完全分布式集群搭建

1.Linux安装配置

1.1创建模板虚拟机

网络类型选择【NAT模式】

可选用最小化安装

1.2网络配置

  1. 虚拟机网络配置

vi /etc/sysconfig/network-scripts/ifcfg-ens33

操作如下几行即可:

  1. BOOTPROTO=dhcp改为BOOTPROTO=static

  2. ONBOOT=no改为ONBOOT=yes

  3. 添加4行

  • IPADDR=192.168.150.200与物理机VMnet8虚拟网卡在同一网段

  • NETMASK=255.255.255.0与物理机VMnet8虚拟网卡子网掩码相同

  • GATEWAY=192.168.150.2与物理机VMnet8虚拟网卡网关相同

  • DNS1=114.114.114.114可与物理机相同

配置完则重启网卡:

service network restart
  1. 检查网络配置是否正确

ping baidu.com //ping外网
ping 192.168.1.103 //ping物理机

虚拟机无法ping通物理机,可能是物理机开启了防火墙,在控制面板-Windows Defender中关闭防火墙即可。

1.3安装epel-release

  1. 配置国内yum源

sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo
  1. 更新yum并安装epel-release

yum update && yum -y install epel-release

1.4关闭模板机防火墙

systemctl stop firewalld && systemctl disable firewalld

1.5创建资源目录

建议指定一个目录用于后期软件的安装

mkdir -p /data/{module,software}

1.6安装rsync

其实可以不要,我后面没用上这个

rsync用于后期执行集群分发脚本

yum install -y rsync

启动并设置开机自启

systemctl start rsyncd && systemctl enable rsyncd

修改rsync配置文件

vi /etc/rsyncd.conf

可复制以下内容:

# 运行RSYNC守护进程的用户
uid = root
# 运行RSYNC守护进程的组
gid = root
#不使用chroot
use chroot = no
# 最大连接数为4
max connections = 4
# CentOS7中yum安装不需指定pid file 否则报错
# pid file = /var/run/rsyncd.pid
# 指定锁文件
lock file=/var/run/rsyncd.lock
# 指定日志文件
log file = /var/log/rsyncd.log
exclude = lost+found/
transfer logging = yes
# 超时时间
timeout = 900
# 同步时跳过没有权限的目录
ignore nonreadable = yes
# 传输时不压缩的文件
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

1.7卸载自带JDK

检查是否安装了Java

rpm -qa | grep javarpm -qa | grep jdkrpm -qs | grep gcj

如果自带了openjdk则需要卸载

rpm -e XXX

卸载完再检查一下

1.8重启模板机

reboot

2.创建分布集群

2.1创建虚拟机

利用模板机克隆出三台虚拟机Node1、Node2、Node3

  1. 修改主机名:

echo "Node1" > /etc/hostname
  1. UUID设置E

生成UUID

uuidgen >> /etc/sysconfig/network-scripts/ifcfg-ens33
    删除ifcfg-ens33文件中第一个UUID值,并在生成的uuid前面加上“UUID=”,三个节点的uuid都要配置
  1. 配置静态IP

vi /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.150.201与物理机VMnet8虚拟网卡在同一网段

NETMASK=255.255.255.0与物理机VMnet8虚拟网卡子网掩码相同

GATEWAY=192.168.150.2与物理机VMnet8虚拟网卡网关相同

DNS1=114.114.114.114可与物理机相同

最好给物理机的VMnet8虚拟网卡配置好相应的静态ip、子网掩码、网关和DNS

三个节点的静态IP都要配置且不能相同

  1. 修改映射文件

vi /etc/hosts
echo "192.168.150.201 Node1" >> /etc/hostsecho "192.168.150.202 Node2" >> /etc/hostsecho "192.168.150.203 Node3" >> /etc/hosts
  1. 重启三台虚拟机

reboot

3.安装JDK

  1. 上传jdk压缩包

统一放在/data/software目录下

  1. 解压

解压到/data/module目录下

tar -zxvf /data/software/jdk-8u311-linux-x64.tar.gz -C /data/module
  1. 添加环境变量

echo "export JAVA_HOME=/data/module/jdk1.8.0_311" >> /etc/profile 
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
source /etc/profile

4.安装hadoop

  1. 上传压缩包

统一放在/data/software目录下

  1. 解压
    统一解压到/data/module目录下

tar -xzvf /data/software/hadoop-3.3.2.tar.gz -C /data/module
  1. 配置环境变量

echo "export HADOOP_HOME=/data/module/hadoop-3.3.2" >> /etc/profileecho "export PATH=\$HADOOP_HOME/bin:\$PATH" >> /etc/profileecho "export PATH=\$HADOOP_HOME/sbin:\$PATH" >> /etc/profile

使环境变量生效

source /etc/profile

5.完全分布式集群搭建

5.1设置免密登陆

  1. 三台机器分别创建公钥私钥对

ssh-keygen -t rsa
  1. 将3台虚拟机的公钥拷贝到Node1上

ssh-copy-id Node1
  1. 从Node1复制公钥到Node2和Node3

scp /root/.ssh/authorized_keys Node2:/root/.sshscp /root/.ssh/authorized_keys Node3:/root/.ssh
  1. 设置时间同步
    安装chrony

yum install chrony
systemctl start chronyd
systemctl enable chronyd

修改时间服务器

vi /etc/chrony.conf
server ntp.aliyun.com iburst
server cn.ntp.org.cn iburst

重启chrony

systemctl restart chronyd.service

5.2分发JDK和Hadoop

  1. 将Node1的JDK分发给Node2和Node3

scp -r /data/module/jdk1.8.0_311 Node2:/data/module/scp -r /data/module/jdk1.8.0_311 Node3:/data/module/
  1. 将Node1的Hadoop分发给Node2和Node3

scp -r /data/module/hadoop-3.3.2/ Node2:/data/module/scp -r /data/module/hadoop-3.3.2/ Node3:/data/module/
  1. 将环境变量分发给Node2和Node3

scp /etc/profile Node2:/etc/profilescp /etc/profile Node3:/etc/profile
  1. 使Node2和Node3的环境变量生效

在Node2和Node3机器上运行如下:

source /etc/profile

5.3配置主节点

  1. 修改hadoop-env.sh

echo "export JAVA_HOME=/data/module/jdk1.8.0_311
#HADOOP_SHELL_EXECNAME=root
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" >> /data/module/hadoop-3.3.2/etc/hadoop/hadoop-env.sh
  1. 修改core-site.xml

<configuration><!-- 指定NameNode的地址 --><property>
    <name>fs.defaultFS</name>
    <value>hdfs://Node1:9000</value></property><!-- 指定hadoop数据的存储目录--><property>
    <name>hadoop.tmp.dir</name>
    <value>/data/module/hadoop/data</value></property><!-- 配置HDFS网页登录使用的静态用户为master --><property>
    <name>hadoop.http.staticuser.user</name>
    <value>master</value></property></configuration>
  1. 修改hdfs-site.xml

<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>${hadoop.tmp.dir}/nndata</value></property><property><name>dfs.datanode.data.dir</name><value>${hadoop.tmp.dir}/dndata</value></property><property><name>dfs.namenode.http-address</name><value>Node1:9870</value></property><property><name>dfs.namenode.secondary.http-address</name><value>Node2:9870</value></property></configuration>
  1. 修改yarn-site.xml

<configuration><!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>Node1</value></property><!-- 环境变量的继承--><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HA
DOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,
HADOOP_MAPRED_HOME</value></property><!-- 如果要程序的运行日志信息上传到HDFS系统上,可配置日志聚集(选
择配置) --><!-- 开启日志聚集功能--><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置日志聚集服务器地址--><property><name>yarn.log.server.url</name><value>http://Node2:19888/jobhistory/logs</value></property><!-- 设置日志保留时间为7天--><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property></configuration>
  1. 修改mapred-site.xml

<!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 如果要看程序的历史运行情况,可以配置历史服务器(选择配置)--><!-- 历史服务器端地址--><property><name>mapreduce.jobhistory.address</name><value>Node2:10020</value></property><!-- 历史服务器web端地址--><property><name>mapreduce.jobhistory.webapp.address</name><value>Node2:19888</value></property>
  1. 修改workers文件

echo "Node1
Node2
Node3" > /data/module/hadoop-3.3.2/etc/hadoop//workers
scp /data/module/hadoop-3.3.2/etc/hadoop/workers Node2:/data/module/hadoop-3.3.2/etc/hadoop/workersscp /data/module/hadoop-3.3.2/etc/hadoop/workers Node3:/data/module/hadoop-3.3.2/etc/hadoop/workers
  1. 分发配置文件

scp /data/module/hadoop-3.3.2/etc//hadoop/* Node2:/data/module/hadoop-3.3.2/etc/hadoop/scp /data/module/hadoop-3.3.2/etc//hadoop/* Node3:/data/module/hadoop-3.3.2/etc/hadoop/

5.5启动集群

hdfs namenode -format

start-all.sh

//stop-all.sh

5.6ZooKeeper安装

  1. 下载安装包到/data/software

  2. 解压到/data/module并重命名为zookeeper

  3. 创建数据目录和日志目录

mkdir /data/module/zookeeper/{data,logs}
  1. 创建myid文件

touch /data/module/zookeeper/data/myid
  1. 配置ZooKeeper运行参数

复制一个配置文件

cp /data/module/zookeeper/conf/zoo_sample.cfg /data/module/zookeeper/conf/zoo.cfg

追加配置内容如下:

#dataDir: 数据文件目录
dataDir=/usr/local/servers/zookeeper/data
#dataLogDir: 日志文件目录
dataLoDir=/usr/local/servers/zookeeper/logs
admin.serverPort=9099

server.1=Node1:2888:3888
server.2=Node2:2888:3888
server.3=Node3:2888:3888

  1. 分发zookeeper给Node2和Node3

scp /data/module/zookeeper Node2:/data/modulescp /data/module/zookeeper Node3:/data/module
  1. 写myid文件

echo 1 > /data/module/zookeeper/data/myid
   Node1写入1

   Node2写入2

   Node3写入3
  1. 启动ZooKeeper

/data/module/zookeeper/bin/zkServer.sh start




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/5021.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: