0


【Hadoop】集群搭建实战:超详细保姆级教程

🐇明明跟你说过:个人主页

🏅个人专栏:《大数据前沿:技术与应用并进》🏅

🔖行路有良友,便是天堂🔖

一、引言

1、Hadoop简介

Hadoop 是一个由 Apache 软件基金会开发的开源框架,专门用于处理和存储海量数据。它以分布式计算为核心,可以在一个计算机集群上高效地处理和分析大规模数据集。Hadoop 的设计目标是提供可靠性、扩展性和分布式存储与计算的能力。以下是 Hadoop 的几个主要组件:

  1. Hadoop 分布式文件系统 (HDFS):
  • HDFS 是 Hadoop 的存储系统,专为处理大数据量设计。它将数据分割成块,并将这些块分布在集群中的多个节点上。HDFS 提供高吞吐量的数据访问,并通过数据的多副本来确保容错性和高可用性。
  1. MapReduce:
  • MapReduce 是 Hadoop 的计算模型,用于处理和生成大规模数据集。它将任务分为两个阶段:Map 阶段和 Reduce 阶段。Map 阶段将输入数据分割成键值对进行处理,而 Reduce 阶段则汇总这些结果。这个模型非常适合处理大规模的分布式数据。
  1. YARN (Yet Another Resource Negotiator):
  • YARN 是 Hadoop 的资源管理器,它负责管理集群资源的调度和分配。YARN 允许多个数据处理引擎(如 MapReduce、Spark)在同一个集群上运行,并优化资源使用。
  1. Hadoop Common:
  • Hadoop Common 包含了 Hadoop 框架中使用的通用工具和库。这些工具提供了文件系统和操作系统级别的抽象,以及各种实用程序库来支持 Hadoop 的其他模块。

Hadoop 的主要优势在于它的扩展性和成本效益。通过将数据和计算分布在大量廉价的计算机节点上,Hadoop 能够处理几乎无限量的数据,适合用于大数据分析、日志处理、数据仓库等场景。

2、Hadoop集群概念

1. 节点类型:

NameNode:

  • 是 HDFS 的主节点,负责管理文件系统的命名空间(元数据),包括文件和目录的结构以及文件块的位置信息。

DataNode:

  • 是 HDFS 的工作节点,负责存储实际的数据块,并根据 NameNode 的指令执行读写操作。

Secondary NameNode:

  • 并不是集群中的必要组件,但它的作用是对 NameNode 进行备份,并合并 fsimage 和 edit logs 文件来减小 NameNode 的内存压力。它并不提供集群的高可用性支持。

JobTracker (MapReduce 1.x):

  • 负责接收客户端提交的作业请求,并分配作业给 TaskTracker。

TaskTracker (MapReduce 1.x):

  • 执行由 JobTracker 分配的任务(map 或 reduce)。

ResourceManager (YARN, MapReduce 2.x):

  • 替代了 JobTracker 的角色,负责集群资源的管理和调度。

NodeManager (YARN, MapReduce 2.x):

  • 替代了 TaskTracker 的角色,负责监控容器(Container)的生命周期。

2. HDFS 架构:

  • HDFS 采用主从架构,其中 NameNode 是主节点,DataNode 是从节点。
  • 文件被分割成块(默认大小为 128MB 或 64MB),每个块可以被复制到集群的不同节点上以提高容错性。
  • NameNode 保存文件系统元数据,而 DataNode 存储实际的数据块。

3. MapReduce 框架:

  • MapReduce 是一种编程模型,用于大规模数据集的并行处理。
  • 数据处理分为两个阶段:Map 阶段和 Reduce 阶段。
  • Map 函数对输入数据进行处理,生成中间键值对。
  • Reduce 函数对相同键的值进行汇总或聚合,产生最终输出。

4. YARN (Yet Another Resource Negotiator):

  • YARN 是 Hadoop 2.x 引入的一个资源管理系统,它使得 Hadoop 集群可以支持多种计算框架,而不仅仅是 MapReduce。
  • ResourceManager 负责整个集群的资源管理和调度,NodeManager 负责单个节点上的资源管理。
  • ApplicationMaster 负责与 ResourceManager 协商资源,并与 NodeManager 交互来执行和监控任务。

3、 Hadoop 集群的工作流程

1. 文件存储:

  • 用户通过客户端将文件写入 HDFS,NameNode 根据文件大小和配置决定如何分割文件,并将块分布到不同的 DataNode 上。
  • DataNode 接收块并存储在本地文件系统中,并向 NameNode 报告状态。

2. 数据处理:

  • 用户提交 MapReduce 作业到 JobTracker 或 ResourceManager。
  • 作业被分解成多个任务(map 或 reduce),这些任务被分配给集群中的各个节点执行。
  • 数据在本地处理,减少网络传输开销(数据本地性原则)。

3. 容错机制:

  • Hadoop 设计时就考虑到了节点故障的可能性。例如,文件块会被复制到多个节点上,以保证即使某些节点失效,数据仍然是可访问的。
  • 当某个节点失败时,NameNode 或 ResourceManager 会重新调度任务到其他可用节点上。

二、安装环境准备

1、服务器

准备3台服务器,1个作为nameNode,2个作为dataNode,这里我们用的系统版本是 Centos 7.9,大家也可以使用其他系统,方法基本一致

2、准备环境

分别在3台机器上执行

关闭Selinux

vi /etc/selinux/config

将 SELINUX=enforcing 修改为 SELINUX=disabled

之后重启服务器

禁用防火墙

systemctl stop firewalld && systemctl disable firewalld

添加阿里镜像源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all
sudo yum makecache fast

安装JAVA

sudo yum install -y java-1.8.0-openjdk-devel

验证结果

java -version

添加环境变量

vim /etc/profile

在文件最后添加如下内容

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH

使环境变量生效

source /etc/profile

配置hosts,三台机器都要添加

vim /etc/hosts

添加如下内容

192.168.40.140 namenode
192.168.40.141 datanode1
192.168.40.142 datanode2

下载安装包,只在nameNode执行即可

[root@namenode ~]# wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz

解压安装包

[root@namenode local]# tar zxvf hadoop-3.4.0.tar.gz
[root@namenode ~]# mv hadoop-3.4.0 /usr/local/hadoop

配置nameNode到各节点免密连接

[root@namenode ~]# ssh-keygen

一路回车即可

接下来将密钥拷贝到各节点

[root@namenode ~]# ssh-copy-id root@namenode
[root@namenode ~]# ssh-copy-id root@datanode1
[root@namenode ~]# ssh-copy-id root@datanode2

三、集群部署

1、nameNode安装

修改配置文件

[root@nameNode hadoop]# vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh

在文件末尾添加

export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64"

编辑配置文件

[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml

# 修改如下
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://nameNode:9000</value>
    </property>
</configuration>
[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

# 修改如下内容
<configuration>
    <property>
        <name>dfs.http.address</name>
        <value>0.0.0.0:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>namenode:50070</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/local/hadoop/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode1.data.dir</name>
        <value>file:///usr/local/hadoop/data/datanode</value>
    </property>
</configuration>
[root@namenode ~]# vim /usr/local/hadoop/etc/hadoop/yarn-site.xml

# 添加如下内容
<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>namenode</value>
  </property>
</configuration>

修改环境变量,三台都要改

[root@namenode bin]# vim /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

使环境变量生效

source /etc/profile

在namenode执行初始化

[root@namenode bin]# cd /usr/local/hadoop/bin
[root@namenode bin]# ./hdfs namenode -format

启动

[root@namenode bin]# cd /usr/local/hadoop/sbin/
[root@namenode sbin]# ./start-all.sh 

访问测试

浏览器地址栏输入 http://192.168.40.140:50070/

2、dataNode安装

拷贝安装包到两台dataNode节点

[root@namenode ~]# scp -r /usr/local/hadoop/ root@datanode1:/usr/local/hadoop/
[root@namenode ~]# scp -r /usr/local/hadoop/ root@datanode2:/usr/local/hadoop/

修改配置文件

[root@datanode1 ~]# vim /usr/local/hadoop/etc/hadoop/workers 

# 添加如下内容
namenode
datanode1
datanode2

创建目录

mkdir /usr/local/hadoop/data/namenode -p

启动

[root@datanode1 sbin]# cd /usr/local/hadoop/sbin
[root@datanode1 sbin]# ./hadoop-daemon.sh start datanode
[root@datanode2 ~]# cd /usr/local/hadoop/sbin/
[root@datanode2 sbin]# ./hadoop-daemon.sh start datanode

3、访问测试

在浏览器输入 namenode 的IP加 50070 端口

显示如下则证明成功

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于大数据的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!


本文转载自: https://blog.csdn.net/weixin_53269650/article/details/141848588
版权归原作者 明明跟你说过 所有, 如有侵权,请联系我们删除。

“【Hadoop】集群搭建实战:超详细保姆级教程”的评论:

还没有评论