搭建Hadoop集群

Hadoop集群的搭建

1.Hadoop概述

1.1:Hadoop是什么

  1. Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
  2. 由Google三篇论文发家:
    • GFS:Google的分布式文件系统,对应hadoop的Hdfs
    • MapReduce分布式计算模型:Google的分布式计算模型,用于解决PageRank问题。对应hadoop的MapReduce
    • BigTable:劣势存储HBase的理论基础
  3. 主要解决海量数据的存储和海量数据的分析计算问题
  4. 广义上来说,Hadoop通常是指一个更广泛的概念-----Hadoop生态圈
  5. Hadoop三大发行版本:
    • Apache:其版本最原始(最基础),对于入门学习最好
    • Cloudera:在大型互联网企业中用的较多
    • Hortonworks:文档较好

1.2:Hadoop的优势

  1. 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
  2. 高扩展性:在集群间分配任务数据,可方遍地扩展以千计地节点
  3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理的速度
  4. 高容错性:能够自动将失败的任务重新分配。

1.3:Hadoop组成

  1. Hadoop现有版本:Hadoop1.X、Hadoop2.X、Hadoop3.X。
    • Hadoop1.X:包括MapReduce负责计算和资源调度,HDFS负责数据存储,以及其他辅助工具(Common)
    • Hadoop2.X:包括MapReduce负责计算,Yarn负责资源调度、HDFS负责数据存储、以及其他辅助工具 Common
    • Hadoop3.X:该版本只是在2.X的版本上稍加修改,进一步提升了Hadoop的性能。
  2. HDFS:分布式文件存储系统
    • NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限)、以及每个文件的块所在的DataNode等。
    • DataNode:在本地文件系统存储文件块数据,以及块数据校验和。
    • Secondary DataNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
  3. Yarn:负责资源调度
    • ResourceManager:处理客户端请求,监控NodeManager、启动或监控ApplicationMaster、资源的分配与调度
    • NodeManager:管理单个节点上的资源、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令、资源的分配与调度
    • ApplicationMaster:负责数据的切分、为应用程序申请资源并分配给内部的任务、任务的监控与容错
    • Container:Container是Yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等
  4. MapReduce:负责计算
    • Map阶段:并行处理输入的数据
    • Reduce阶段:对Map结果进行汇总。

1.4:大数据生态体系结构:

image-20230724183106739

2.搭建虚拟机,配置环境

2.1:所需环境

VMwareCentOS7操作系统JDK1.8Hadoop3.X
所需安装文件:
链接:https://pan.baidu.com/s/1ELOeWnKHMUIe0bglp46uHA
提取码:insp

快照:
链接:https://pan.baidu.com/s/1_nTGfFTQZ6EtOAnVAZLCZg
提取码:mh2o

2.2:VMware安装过程:

​ 略(傻瓜式安装)

2.3:安装虚拟机

image-20230721212438369

一直点击下一步,直至下图位置,找到对应得CentOS的映像文件(iso文件):
image-202307212126699
image-202307212130201
image-202307212131514
image-202307212132906

接下来一直点击下一步,直至最后,点击完成:
image-202307212134670
image-202307212136386

选择中文,点击继续:
image-202307212138245

选择安装位置,点击完成即可:
image-202307212140862
image-202307212141980

点击开始安装:image-202307212142183

设置虚拟机密码:
image-202307212143139
image-202307212141462

点击重启即可,虚拟机安装完毕,接下来进行环境配置。

2.4:配置网卡

进入ifconfig-ens33所在的目录:

cd /etc/sysconfig/network-scripts/
# 编辑ifconfig-ens33文件
vi ifconfig-ens33

image-202307212245990

其中,配置文件中:

  1. BOOTPROTO=static:表示配置静态ip;修改为静态ip后,需要添加ip地址。

  2. ONBOOT=yes:是否激活网卡,激活后就可以连接到外网。

  3. IPADDR=192.168…:静态IP的查看方式:
    image-202307212319085
    image-202307212321158image-202307212325082image-20230721233111544

    最后,配置好后需要重启网卡:

    service network restart
    # 重启后,查看是否生效
    ping www.baidu.com
    ping 主机ip
    

2.5:克隆虚拟机,搭建集群

image-202307212337681
image-202307212338789image-202307212339124image-202307212339182image-202307212340716

克隆好后,我们需要修改虚拟机的ip:

IPADDR=192.168.xxx.151
# 最后一个字节在原基础上加一即可,自行配置,可以任意
# 配置好后重启网卡
service network restart
# 测试是否生效
ping www.baidu.com
ping ip

再次克隆,步骤同上,此时我们拥有三台虚拟机,但这三台都是独立的个体,并不是集群!接下来进行集群配置。

3.搭建集群

在搭建集群之前,由于我们没有在CentOS上安装可视化桌面,所以我们可以通过其他可视化桌面工具连接到虚拟机,此处我们使用MobaXterm工具。其他工具包括finalshell等都可以。

3.1:通过MobaXterm连接虚拟机

  1. 安装MobaXterm过程:略
  2. 连接虚拟机过程:image-202307221436142image-202307221437034image-202307221438474
  3. 其他两台虚拟机操作过程同上,连接上虚拟机之后,输入用户名登录即可,第一次登录可能需要输入密码
    image-202307221441297

3.2:配置主机名映射以及主机名:

vi /etc/hosts
# 进入目录之后,添加IP地址
192.168.xxx.xxx	node01
192.168.xxx.xxx	node02
192.168.xxx.xxx	node03
# 配置主机名
vi /etc/hostname
# 修改完后,重启虚拟机
reboot

主机名映射(hosts)
image-202307221449654
image-202307221451417

主机名(hostname)image-202307221550668

其他两台虚拟机依次操作。

3.3:创建hadoop用户:

创建hadoop用户

useradd hadoop
passwd hadoop

image-202307221505507

使hadoop用户具有root权限,方便以后执行具有root权限的命令

vi /etc/sudoers
# 在root ALL=(ALL)	ALL下加入一条命令(也可以在%wheel ALL+(ALL)	ALL下添加)
hadoop ALL=(ALL)	NOPASSWD:ALL

image-202307221511504

3.4:创建文件存放目录,并赋予权限

# JDK等编译插件存放位置:/opt/moudle
mkdir /opt/moudle
# hadoop等软件存放位置:/opt/software
mkdir /opt/software
# 修改两个文件加的所有者和所属组均为hadoop用户
chown hadoop:hadoop /opt/moudle
chown hadoop:hodoop /opt/software
# 查看是否具有权限
ll

image-202307221530875

其他两台虚拟机依此操作!

操作完成后,重启三台虚拟机!

配置好后,就可以来回切换用户,接下来如没有特别提示,我们都在hadoop用户下操作image-202307221541528

【注】image-202307221613094

3.5:配置免密登录(配置SSH):

  1. 在第一次使用ssh时,会没有.ssh目录,我们需要在root用户下先执行:

    ssh localhost
    # 按提示输入对应内容即可
    

image-202307221649002

  1. 生成公钥和私钥:

    首先进入hadoop用户下的.ssh文件夹:

    su hadoop
    

    image-20230722165158523

    生成公钥和私钥:

    ssh-keygen -t rsa
    # 之后连续回车三次即可生成两个文件:id_rsa(私钥)、id_rsa.pub(公钥)
    

image-202307221656537

将公钥拷贝到其他机器:

ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03

image-202307221701012
image-202307221702372

【注】其他两台机器的hadoop用户以及node01用户也要上述操作

至此,三台虚拟机可以任意无密匙切换!

4.安装JDK

  1. 下载JDK:略

  2. 安装JDK:将下载的JDK拷贝到/opt/moudle目录下:

    如何将windows中的文件拖入虚拟机:

    1. 直接拖入到对应文件夹下即可;
    2. image-202307221730975
      image-202307221731511
  3. 解压JDK:

    tar -zxvf jdk-8u381-linux-x64.tar.gz
    

    image-20230722173348173

    删除压缩包,节约空间

    rm -rf jdk-8u381-linux-x64.tar.gz
    
  4. 安装Vim(可跳过,但是不安装就只能适用vi操作,不能使用vim):

    为了方便我们使用,下载一个vim编辑器,旨在使得我们编写脚本文件或者其他配置时便于观察。
    image-202307221746288

    # 检查是否安装过vim,只要没有上述三个包中的一个,就需要重新安装vim
    rpm -qa|grep vim
    # 安装vim(切换会root用户下执行)
    yum -y install vim*
    
  5. 配置JDK的环境变量:

    # 进入/etc/profile文件
    sudo vim /etc/profile
    # 在文件最后一行加入JAVA_HOME(使用自己的JDK安装路径)
    
    # JAVA_HOME
    export JAVA_HOME=/opt/moudle/jdk1.8.0_381
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    

image-202307221800382

  1. 查看是否安装成功:image-20230722175721584

  2. 将安装好的JDK在其他两台上也需要进行同样的操作步骤,但是,以后我们使用scp命令进行远程拷贝

    # 将node01中的JDK安装文件发送到其他两台虚拟机
    scp -r /opt/moudle/jdk1.8.0_381/ hadoop@node02:/opt/moudle/
    scp -r /opt/moudle/jdk1.8.0_381/ hadoop@node03:/opt/moudle/
    # 将node01中的JDK配置文件发送到其他两台虚拟机
    scp /etc/profile root@node02:/etc
    scp /etc/profile root@node03:/etc
    # 最后在另外两台虚拟机上执行source,使配置文件生效
    source /etc/profile
    # 使用java -version命令查看配置配置文件是否生效
    java -version
    

    image-20230722193729413image-20230722193758929

5.安装Hadoop(搭建Hadoop集群环境)

5.1:下载Hadoop

官方下载地址Index of /dist/hadoop/common (apache.org)

清华大学镜像下载地址Index of /apache/hadoop/common/hadoop-3.3.1 (tsinghua.edu.cn)

5.2:安装Hadoop

  • 将下载的安装包复制到虚拟机(/etc/moudle):image-202307222007112

  • 解压安装hadoop:

    tar -zxvf hadoop-3.3.1.tar.gz
    # 删除安装包
    rm -rf hadoop-3.3.1.tar.gz
    # 重命名
    mv hadoop-3.3.1/ hadoop
    

    image-202307222054239

5.3:配置环境变量:

# 进入/etc/profile文件
vim /etc/profile
# 添加下述配置文件
# HADOOP_HOME
export HADOOP_HOME=/opt/moudle/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

image-20230722212203000

5.4:配置集群:

【重点】能不手写就不要手写,能复制就复制,手写出错后果自负

  1. 各个节点的分布情况:

    node01node02node03
    HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
    YARNResourceManager、NodeManagerNodeManagerNodeManager
  2. 配置hadoop-env.sh文件:

    # 进入hadoop-env.sh文件
    vim /opt/moudle/hadoop/etc/hadoop/hadoop-env.sh
    # 在文件最后一行添加配置文件
    export JAVA_HOME=/opt/moudle/jdk1.8.0_381
    
    export HDFS_NAMENODE_USER=hadoop
    export HDFS_DATANODE_USER=hadoop
    export HDFS_SECONDARYNAMENODE_USER=hadoop
    export YARN_RESOURCEMANAGER_USER=hadoop
    export YARN_NODEMANAGER_USER=hadoop
    

image-202307242039592

  1. 配置core-site.xml文件:

    # 进入core-site.sh文件
    vim /opt/moudle/hadoop/etc/hadoop/core-site.sh
    # 在configuration标签中添加文件
    
    	<!-- 指定NameNode的地址 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://node01:9000</value>
        </property>
    
        <!-- 指定hadoop数据的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/moudle/hadoop/data</value>
        </property>
    
        <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
        <property>
            <name>hadoop.http.staticuser.user</name>
            <value>hadoop</value>
        </property>
    

image-202307222152809

【注】此处需要在Hadoop目录下创建一个data目录,用于存储hadoop数据

mkdir data
chmod 777 ./data/
  1. 配置hdfs-site.xml配置文件:

    # 进入hdfs-site.sh文件
    vim /opt/moudle/hadoop/etc/hadoop/hdfs-site.sh
    # 在configuration标签中添加文件
    
     	<!-- NameNode web端访问地址-->
        <property>
            <name>dfs.namenode.http-address</name>
            <value>node01:9870</value>
        </property>
            <!-- SecondaryNameNode web端访问地址-->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>node03:9868</value>
        </property>
    
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    

image-202307262259624

  1. 配置yarn-site.xml配置文件:

    # 进入yarn-site.sh文件
    vim /opt/moudle/hadoop/etc/hadoop/yarn-site.sh
    # 在configuration中添加下述文件
    
     	<!-- 指定MR走shuffle -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    
        <!-- 指定ResourceManager的地址-->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>node01</value>
        </property>
    
        <property>
            <name>yarn.nodemanager.pmem-check-enabled</name>
            <value>false</value>
        </property>
        <!-- 是否将对容器实施虚拟内存限制 -->
        <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
        </peoperty>
        <!-- 开启日志聚集 -->
        <property>
            <name>yarn.log-aggregation-enable</name>
            <value>true</value>
        </property>
        <!--设置yarn历史服务器地址 -->
        <property>
            <name>yarn.log.server.url</name>
            <value>http://node01:19888/jobhistiry/logs</value>
        </property>
        <!--历史日志保存时间 7天 -->
        <property>
            <name>yarn.log-aggregation.retain-seconds</name>
            <value>604800</value>
        </property>
    

image-202307222223691

【注】此处需要在hadoop目录下创建logs文件夹,用于存放日志文件:

mkdir logs
chmod 777 ./logs/
  1. 配置mapred-site.xml:

    # 进入mapred-site.sh文件
    vim /opt/moudle/hadoop/etc/hadoop/mapred-site.sh
    # 在configuration中加入下述文件
    
    	<!-- 指定MapReduce程序运行在Yarn上 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <!-- 指定MapReduce程序历史服务地址 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>node01:10020</value>
        </property>
        <!-- 指定MapReduce程序历史服务器web端地址 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>node01:19888</value>
        </property>
    
        <property>
            <name>yarn.app.mapreduce.am.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
    
        <property>
            <name>mapreduce.reduce.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
    
    

image-202307222232373

  1. 修改works(有的是slaves)文件:

    # 进入works文件:
    vim /opt/moudle/hadoop/etc/hadoop/works
    # 在文件中修改成自己的虚拟机名称,配几台虚拟机就写几台虚拟机名
    node01
    node02
    node03
    

    image-20230722223528008

  2. image-20230722223557084

  3. 将hadoop分发到其他两台虚拟机:

    scp -r /opt/moudle/hadoop hadoop@node02:/opt/moudle/
    scp -r /opt/moudle/hadoop hadoop@node03:/opt/moudle/
    
    # !!!注意!!!,之前配置过的profile也需要重新分法
    scp /etc/profile root@node02:/etc/
    scp /etc/profile root@node03:/etc/
    
  4. 首次启动hadoop前,需要格式化namenode节点,只需要启动一次,启动多次自行重新安装!!!建议在格式化之前先将虚拟机快照备份

    hdfs namenode -format
    

    image-20230722230251798

  5. 不小心多次格式化namenode节点

    [答]:删除所有虚拟机下hadoop目录下的data文件夹中内容以及logs文件夹中的内容,然后重新格式化就行。

5.5:启动集群:

# 启动hdfs,先进入hadoop目录下的sbin目录
./sbin/start-dfs.sh
# 启动yarn,先进入hadoop目录下的sbin目录
./sbin/start-yarn.sh
# 还可以选择同时启动hdfs和yarn
./sbin/start-all.sh
# 查看是否启动
jps

image-202307262302780
image-202307262303337image-202307262303546

5.6:停止集群:

# 命令基本同上,只是将上述start换成stop
./sbin/stop-dfs.sh
./sbin/stop-yarn.sh

./sbin/start-all.sh

image-202307262306307

6.遇到的问题

6.1:警告问题

【注】目前尚未解决,请各位集思广益,提供解决方案!!!
image-202307242104963

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值