hadoop集群搭建全过程笔记

桥接网络配置

输入命令:

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

配置好ip地址网关等

ONBOOT="yes"

IPADDR=10.1.12.197
GATEWAY=10.1.0.1
NETMASK=225.225.192.0
DNS1=114.114.114.114
DNS2=8.8.8.8

重启网络:

service network restart  #重启网卡network服务
systemctl restart network  #重启网卡
systemctl enable network #开机启动网卡

NAT网络配置

设置网络
在这里插入图片描述
点击更改设置
在这里插入图片描述

设置IP地址和子网掩码,一般都有自动生成的ip如果有默认即可,没有ip自行设置不用和我的ip一样,设置好后点击NAT设置
在这里插入图片描述
设置网关,这个一般自动生成的有,有则默认没有自行设置
在这里插入图片描述
勾选如下图选项然后确定
在这里插入图片描述

设置Windows网络,在任务栏中点击搜索“网络连接”点击“查看网络连接”
在这里插入图片描述
在这里插入图片描述

双击打开
在这里插入图片描述

在这里插入图片描述

输入命令配置ifcfg-ens33:

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

在这里插入图片描述

将做如图设置:

MACADDR=preserve
ETHTOOL_OPTS="autoneng on"
IPADDR=ip地址和VMnet8处于同一网段即可
NETMASK=子网掩码
GATEWAY=默认网关
DNS1=DNS服务器ip
DNS2=DNS服务器ip

在这里插入图片描述

使用cmd可查看本机IP及DNS服务:
在这里插入图片描述

配置完后按键盘ESC键然后shift+:输入wq保存退出

service network restart  //输入命令重启网络

在这里插入图片描述

ping一下网络是否连通,如图则表示ping通了
ping百度和宿主机
在这里插入图片描述

设置时间同步

关闭防火墙操作:

firewall-cmd --state   查看防火墙状态“not running”出现表示关闭,“running”表示开启
systemctl stop firewalld.service  关闭防火墙
service firewalld restart  重启防火墙

在这里插入图片描述

输入命令进入:

crontab -e

输入以下内容,并保存退出:

0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

在这里插入图片描述

输入命令:

/usr/sbin/ntpdate cn.pool.ntp.org

出现如图配置成功:
在这里插入图片描述

搭建Hadoop集群

一、配置虚拟机集群环境

1、关闭防火墙

查看防火墙当前状态(默认running)

firewall-cmd --state
或
systemctl status firewalld.service

关闭防火墙(运行状态变为 not running)

systemctl stop firewalld.service

禁止防火墙开机启动

systemctl disable firewalld.service

重新启动防火墙

systemctl start firewalld.service

使防火墙开机启动

systemctl enable firewalld.service

2、新建安装目录(记住不然找不到你就完了)

目录“/opt”常用用于存放第三方软件包和数据文件。创建一个文件夹“packages”,用来存放软件安装包

mkdir /opt/packages

创建jdk安装目录

mkdir /usr/local/java

创建hadoop安装目录

mkdir /usr/local/hadoop
mkdir /usr/local/hadoop/temp
mkdir /usr/local/hadoop/dfs
mkdir /usr/local/hadoop/dfs/name
mkdir /usr/local/hadoop/dfs/data

创建zookeeper安装目录

mkdir /usr/local/zookeeper

3、下载、安装和配置JDK

  1. 下载

    根据自己需要下载安装jdk版本

    在本文中使用的安装包:百度网盘链接:https://pan.baidu.com/s/1GgjsA0SUqtAARerLR9EAWA 提取码:ufsh

    官网下载地址:https://www.oracle.com/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 卸载centOS 7系统预装的jdk

    查看系统已安装的OpenJDk

    rpm -qa|grep openjdk
    

    将查到的OpenJDk全部卸载

    rpm -e --nodeps
    

在这里插入图片描述

  1. 将下载的jdk上传到虚拟机

    将jdk上传到“/opt/packages”
    在这里插入图片描述
    在这里插入图片描述

  2. 安装配置jdk

    将jdk解压到“/usr/local/Java”

    tar -zxvf jdk-19_linux-x64_bin.tar.gz -C /usr/local/java
    

    修改“/etc/profile”,配置jdk系统环境变量

    vim /etc/profile
    

    在“/etc/profile”文件末尾加入以下类容

    export JAVA_HOME=/usr/local/java/jdk1.8.0_351
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
    

    刷新“/etc/profile”

    source /etc/profile
    

    查看jdk信息验证jdk是否安装成功,如图说明成功了

    java -version
    

在这里插入图片描述

4、克隆虚拟机和配置主机IP映射

  1. 克隆虚拟机克隆两台分别命名为“hadoop02”和“hadoop03”
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 修改另外两台hadoop的主机名

    hostnamectl set-hostname [主机名]
    
  3. 修改另外两台hadoop的IP

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

在这里插入图片描述

重启网络

service network restart

在这里插入图片描述

  1. 配置主机映射

    在三个节点上分别操作,修改hosts文件

    vim /etc/hosts
    

在这里插入图片描述

在末尾处添加以下内容

192.168.237.XXX hadoop01
192.168.237.XXX hadoop02
192.168.237.XXX hadoop03

三台主机相互ping一下是否能ping通
在这里插入图片描述

5、配置集群各节点SSH免密码登录

分别在3个节点,生成密钥文件

ssh-keygen -t rsa

在这里插入图片描述

分别在3个节点上执行

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

在这里插入图片描述

在各节点用以下命令测试SSH免密登录

ssh hadoop01
ssh hadoop02
ssh hadoop03

在这里插入图片描述

二、搭建Hadoop高可用集群

1、安装配置与配置ZooKeeper

  1. 下载地址:https://archive.apache.org/dist/zookeeper/
    在这里插入图片描述
    在这里插入图片描述

  2. 将下载的ZooKeeper上传到hadoop01节点的“/opt/packages”

    cd /opt/packages
    
  3. 将ZooKeeper压缩包减压到“/opt/programs”

    tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/zookeeper
    
  4. 切换到ZooKeeper安装目录

    cd /usr/local/zookeeper
    

    在该目录下分别创建文件夹“data”和“logs”

    mkdir data
    mkdir logs
    

    切换到新建data目录下,新建一个名为“myid”的文件,并写入id号“1”

    echo '1'>myid
    
  5. 进入ZooKeeper安装目录下的“conf”文件夹,将“zoo_sample.cfg”文件复制一份并重命名为“zoo.cfg”

    cd /usr/local/zookeeper/apache-zookeeper-3.7.1-bin/conf
    
    cp zoo_sample.cfg zoo.cfg
    

    修改zoo.cfg文件

    vim zoo.cfg
    

    将文件中的“dataDir”

    dataDir=/usr/local/zookeeper/data
    

    再在文件末尾添加以下内容

    dataLogDir=/usr/local/zookeeper/logs
    server.1=hadoop01:2888:3888
    server.2=hadoop02:2888:3888
    server.3=hadoop03:2888:3888
    
  6. 将hadoop01整个节点的ZooKeeper安装目录远程复制到hadoop02和hadoop03节点

    scp -r /usr/local/zookeeper root@hadoop02:/usr/local
    scp -r /usr/local/zookeeper root@hadoop03:/usr/local
    

    此处容易报错的几点:

    • 错误1:“Permission denied, please try again.”,密码错误重新输入正确的密码即可,因为我们在Linux系统中输入密码是无法明码显示,所以在输入密码时要输入正确密码,防止在一些操作中造成不可逆结果。如图
      在这里插入图片描述

    • 错误2:“No such file or directory”,没有这样的文件或目录,请仔细查看直接的文件夹名或者目录是否输入正确

    在这里插入图片描述

    • 错误3:“Permission denied”,没有权限,请将普通用户名改为root用户,比如“liao@hadoop02”中的“liao”改为“root@hadoop02”,像下面
    scp -r /usr/local/zookeeper liao@hadoop02:/usr/local
                                    ↓↓
    scp -r /usr/local/zookeeper liao@hadoop02:/usr/local
    

    在这里插入图片描述

  7. 复制完成后,将hadoop02和hadoop03节点中的myid文件值修改为对应的数字,
    即:将hadoop02节点中的/usr/local/zookeeper/apache-zookeeper-3.7.1/data/myid文件中的值改为2,
    将hadoop03节点中的/usr/local/zookeeper/apache-zookeeper-3.7.1/data/myid文件中的值改为3。如图演示:

    在这里插入图片描述

  8. 在3个节点中分别执行以下命令,修改文件“/etc/profile”,配置ZooKeeper环境变量

    vim /etc/profile
    

    在文件末尾添加以下类容:

    export ZOOKEEPER_HOME=/usr/local/zookeeper/apache-zookeeper-3.7.1-bin
    export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
    

    保存之后刷新“profile”文件,使修改生效

    source /etc/profile
    
  9. 重启Linux系统

  10. 然后执行以下命令,启动ZooKeeper集群。启动成功后如下图所示:

zkServer.sh start    # 启动ZooKeeper服务命令
zkServer.sh stop     # 关闭ZooKeeper服务命令

在这里插入图片描述

  1. 在3个节点上分别执行下面命令来查看ZooKeeper集群状态,分别如图所示:

    zkServer.sh status
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

2、安装与配置Hadoop

  1. 基本信息

    主机名IP用户
    hadoop01192.168.237.135liao
    hadoop02192.168.237.136liao
    hadoop03192.168.237.137liao
  2. 安装包等信息

    安装包名安装包路径
    hadoop-3.3.4.tar.gz/opt/packages
    jdk-8u351-linux-x64.tar.gz/opt/packages
  3. 下载

    • 下载地址:https://archive.apache.org/dist/hadoop/core

      在这里插入图片描述

    • 我这里下载的版本是3.3.4

      在这里插入图片描述

    • 跳转到此页找到后缀为**.tar.gz** 压缩包**(警告:不管你用什么版本,下载时一定要下载后缀带.tar.gz 的压缩包)**

      在这里插入图片描述

  4. 将下载的压缩包上传到hadoop01节点的“/opt/packages”目录下,然后进入该目录

    cd /opt/packages
    
  5. 将“hadoop-3.3.3.tar.gz”解压到“/opt/programs”目录下

    tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/hadoop
    
  6. 配置环境变量

    修改profile

    vi /etc/profile
    

    末尾添加:

    export HADOOP_HOME=/usr/local/hadoop/hadoop-3.3.4
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    重启profile

    source /etc/profile
    
  7. 进入“/usr/local/hadoop/hadoop-3.3.3/etc/hadoop/”目录,依次修改配置文件hadoop-env.shyarn-env.shcore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml

    • 修改配置文件hadoop-env.sh
    vim hadoop-env.sh
    

    找到图中“# The java implementation to use. By default, this environment”位置,修改jdk路径

    vim hadoop-env.sh
    

在这里插入图片描述

  • 修改配置文件yarn-env.sh
    vim yarn-env.sh
    在开头处加入

    export JAVA_HOME=/usr/local/java/jdk1.8.0_351
    

    在这里插入图片描述

  • 修改配置文件core-site.xml

vim core-site.xml

将“<.configuration>”和"<./configuration>"标签的内容修改如下:

注意要修改的地方

 <configuration>
         <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://hadoop01:9000</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <property>
                 <name>io.file.buffer.size</name>
                 <value>131072</value>
         </property>
         <property>
                 <name>hadoop.tmp.dir</name>
                 <value>file:/usr/local/hadoop/temp</value><!--这个是之前创建temp文件夹路径-->
         </property>
         <property>
                 <name>hadoop.proxyuser.root.hosts</name>
                 <value>*</value>
         </property>
         <property>
                 <name>hadoop.proxyuser.root.groups</name>
                 <value>*</value>
         </property>
 </configuration>

在这里插入图片描述
在这里插入图片描述

  • 修改配置文件hdfs-site.xml
vim hdfs-site.xml

将“<.configuration>”和"<./configuration>"标签的内容修改如下:

 <configuration>
             <property>
                 <name>dfs.namenode.secondary.http-address</name>
                 <value>hadoop01:9001</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <!-- 设置namenode.name目录 -->
         <property>
                 <name>dfs.namenode.name.dir</name>
                 <value>file:/usr/local/hadoop/dfs/name</value><!--这个是之前创建name文件夹路径-->
         </property>
         <!-- 设置namenode.data目录 -->
         <property>
                 <name>dfs.datanode.data.dir</name>
                 <value>file:/usr/local/hadoop/dfs/data</value><!--这个是之前创建data文件夹路径-->
         </property>
         <!-- 设置副本个数 -->
         <property>
                 <name>dfs.replication</name>
                 <value>2</value>
         </property>
         <!-- 开启webHDFS -->
         <property>
                 <name>dfs.webhdfs.enabled</name>
                 <value>true</value>
         </property>
         <property>
                 <name>dfs.permissions</name>
                 <value>false</value>
         </property>
         <property>
                 <name>dfs.web.ugi</name>
                 <value>supergroup</value>
         </property>
 </configuration>

在这里插入图片描述
在这里插入图片描述

  • 修改配置文件mapred-site.xml
vim mapred-site.xml

将“”和""标签的内容修改如下:

 <configuration>
         <property>
                 <name>mapreduce.framework.name</name>
                 <value>yarn</value>
         </property>
         <property>
                 <name>mapreduce.jobhistory.address</name>
                 <value>hadoop01:10020</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <property>
                 <name>mapreduce.jobhistory.webapp.address</name>
                 <value>hadoop01:19888</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
 </configuration>

在这里插入图片描述

  • 修改配置文件yarn-site.xml
vim yarn-site.xml

将“<.configuration>”和"<./configuration>"标签的内容修改如下:

 <configuration>
         <property>
                 <name>yarn.nodemanager.aux-services</name>
                 <value>mapreduce_shuffle</value>
         </property>
         <property>
                 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
         </property>
         <property>
                 <name>yarn.resourcemanager.address</name>
                 <value>hadoop01:8032</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <property>
                 <name>yarn.resourcemanager.scheduler.address</name>
                 <value>hadoop01:8030</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <property>
                 <name>yarn.resourcemanager.resource-tracker.address</name>
                 <value>hadoop01:8031</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <property>
                 <name>yarn.resourcemanager.admin.address</name>
                 <value>hadoop01:8033</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
         <property>
                 <name>yarn.resourcemanager.webapp.address</name>
                 <value>hadoop01:8088</value><!--将“hadoop01”修改为自己的主机名-->
         </property>
 </configuration>

在这里插入图片描述

  • 修改配置文件workers

    将内容修改如下:

    hadoop01
    hadoop02
    hadoop03
    
  1. 执行以下命令将hadoop01节点的Hadoop安装目录远程复制到hadoop02和hadoop03节点

    scp -r /usr/local/hadoop/ root@hadoop02:/usr/local/
    scp -r /usr/local/hadoop/ root@hadoop03:/usr/local/
    
  2. 在主节点的hadoop目录
    执行命令

    ./bin/hdfs namenode -format
    
  3. 报错解决
    hadoop-3.1.0启动hadoop集群时会报如下错误:

root@hadoop01:~# start-all.sh
Starting namenodes on [hadoop]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
2018-07-16 05:45:04,628 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
......

解决方案:

source /etc/profile

然后在末尾加入加入如下的内容

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

重启profile

source /etc/profile

3、启动与测试Hadoop

  1. 由于第一次启动Hadoop之前,需要格式化NameNode。格式化NameNode需要先启动JournalNode(以后就不必了)。在3个节点上分别执行以下命令,启动JournalNode:

    hdfs --daemon start journalnode
    
  2. 格式化NameNode

    hdfs namenode -format
    
  3. 格式化ZKFC

    hdfs zkfc -formatZK
    
  4. 主节点上在hadoop目录下执行:

    ./sbin/start-all.sh
    

5.在浏览器中输入“主机名或IP:9870”,注意:3.x 版本50070端口 改为9870端口了检查。 namenode 和 datanode 是否正常。UI 页面如下图所示:
在这里插入图片描述
6.在浏览器中输入“主机名或IP:8088”, 检查 Yarn 是否正常,页面如下图所示:
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盗梦骇客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值