首页 > 其他分享 >(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

时间:2024-07-03 22:00:05浏览次数:3  
标签:node01 必看 modules Hadoop hadoop MapReduce etc 2.8 home

前言

       随着大数据时代的到来,处理和分析海量数据已成为企业和科研机构不可或缺的能力。Hadoop,作为开源的分布式计算平台,因其强大的数据处理能力和良好的可扩展性,成为大数据处理领域的佼佼者。本图文教程旨在帮助读者理解Hadoop集群的安装过程,并通过MapReduce应用实例,深入体验Hadoop在大数据处理中的强大功能。

       在正式进入Hadoop集群安装之前,我们将简要介绍Hadoop的核心组件——HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了分布式存储能力,使得数据可以存储在集群中的多个节点上,从而实现高容错性和高吞吐量。而MapReduce则是一种编程模型,用于处理大规模数据集,其独特的“Map”和“Reduce”两个阶段使得数据处理任务可以并行执行,大大提高了处理效率。

       通过本教程的学习,读者将能够掌握Hadoop集群的搭建方法,理解MapReduce编程模型的基本原理,并通过实际案例体验Hadoop在大数据处理中的强大能力。

安装OpenEuler系统

选择Installer oenEuler  20.03-LTS

选择默认磁盘分区

配置网络

选择ipv4 setting

填写IP地址(手动配置地址必须遵守Vmware WorkStation的基本配置)

查看地址配置信息

开始安装

配置root账户密码

置root账户密码

通过此部署依次部署4台,并通过ssh登录

为每一台配置yum源地址

cd /etc/yum.repos.d/

vi openEulerOS.repo

配置华为Yum源地址。

[openEuler-source]

name=openEuler-source

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/

enabled=1

gpgcheck=1

gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler


[openEuler-os]

name=openEuler-os

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/

enabled=1

gpgcheck=1

gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler


[openEuler-everything]

name=openEuler-everything

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/

enabled=1

gpgcheck=1

gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/RPM-GPG-KEY-openEuler



[openEuler-EPOL]

name=openEuler-epol

baseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/x86_64/

enabled=1

gpgcheck=0

清楚现有并生成新的缓存

安装实验所需工具 vim tar (4台都安装)

yum install -y vim  tar

基础配置

此部分配置Hadoop各节点使其符合软件安装的要求,内容比较多,除了教程中给出的步骤,如果是物理服务器等需要另外设置时间同步,因为华为云已经同步了时间,所以此处不加上相应的配置过程,如感兴趣,请自行查资料完成。下面操作以node01为例,进行相应的配置

1.1.1.1 修改主机名

注意:如果主机名不是对应的node01、node2、node3、node4,则需要分别将四个节点的主机名进行修改,四台均需要修改,此处以node01为例子。如果你在购买的时候已经设置好主机名,则不需要修改,可忽略此步骤。

方式一:使用hostname命令,直接命名主机名(但是此种设置重启后会变回原来的,可不操作):

>  hostname node01

>  bash

方式二:修改/etc/hostname文件(修改好后重启,发生修改已生效):

>  vim /etc/hostname

# 修改完毕后,效果如下:

>  cat /etc/hostname

node01

>  reboot

方式三(统一采用这种):此外,还有一种更加简便的办法,直接执行后就可以了,不需要重启:

>  hostnamectl set-hostname node01

>  bash

以下是修改结果:

步骤 1  修改hosts配置文件

使用命令vim /etc/hosts,为node01-4四个节点增加内网IP与节点主机名的映射,确保各节点之间可以使用主机名作为通信的方式。

>  vim /etc/hosts

# 需删除自己的主机名映射到127.0.0.1的映射,如node01为:

127.0.0.1       node01   node01

此行务必删除!

# 加入以下内容如下:(注意IP地址必须是自己的IP地址)

192.168.28.31   node01

192.168.28.32   node02

192.168.28.33   node03

192.168.28.34   node04

呈现结果如下:

1.1.1.2 关闭防火墙

执行下面命令查看防火墙状态:

>  systemctl status firewalld

如果发现默认是已经禁用的,所以不需要关闭了。如果是开启的,则需要在node01-4四个节点执行如下命令关闭防火墙:

>  systemctl stop firewalld

>  systemctl disable firewalld

4个节点均执行此命令:

1.1.1.3 配置ssh互信

          步骤 1      生成id_rsa.pub 文件

各节点执行 ssh-keygen -t rsa 命令后,连续回车三次后生成/root/.ssh/id_rsa.pub 文件

 步骤 1      汇总id_rsa.pub

各个节点执行cat /root/.ssh/id_rsa.pub命令,我们需要将密钥进行汇总,思路是先将node2、node3、node4的密钥拷贝到node01,在node01进行汇总,然后将汇总好的文件分发到node2、node3、node4,这样的话,每个节点就有了彼此的密钥,达到互相免密码登录的效果。

将node2的密钥拷贝到node01(在node2执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id2

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

将node3的密钥拷贝到node01(在node3执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id3

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

将node4的密钥拷贝到node01(在node4执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id4

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

查看一下是否拷贝完成(在node01执行):

> ll ~/.ssh

发现node2、node3、node4的密钥都拷贝到node01上了:

继续进行汇总:

> cd ~/.ssh

> cat id2 id3 id4 >> authorized_keys

此外,还要将node01的密钥也放进去:

> cat id_rsa.pub >> authorized_keys

查看汇总后的文件authorized_keys,发现已经有四台机器的密钥了:

> cat authorized_keys

最后,需要将此文件分发到node02、node03、node04:

> scp authorized_keys root@node02:~/.ssh/

> scp authorized_keys root@node03:~/.ssh/

> scp authorized_keys root@node04:~/.ssh/

步骤 1      验证测试

每个节点分别 ssh node01~node4,选择 yes 后,确保能够互相免密码登录。

两两相互测试

          步骤 1      安装JDK,在 node01~node04

1. 下载jdk8,或者通过上传本地安装文件

> wget https://mirrors.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz

(此次演示node01,02-04都需要执行)

2. 解压jdk

> mkdir –p /usr/lib/jvm/

> tar -zxvf jdk-8u192-linux-x64.tar.gz -C /usr/lib/jvm/

> mv  /usr/lib/jvm/jdk1.8.0_192   /usr/lib/jvm/java

3. 配置环境变量

执行指令vim /etc/profile,编辑环境变量文件,在文件末尾添加下面内容

>  vim /etc/profile

export JAVA_HOME=/usr/lib/jvm/java

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

示例子如下:

使环境变量生效

> source /etc/profile

 5. 验证java环境

> java –version

出现以下信息表示jdk安装成功

java version "1.8.0_192"

Java(TM) SE Runtime Environment (build 1.8.0_192-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

上面验证通过,下面的步骤可以不用执行

6. 环境变量拷至bashrc文件,使每次打开shell都生效,编辑/etc/bashrc,在文件末尾添加下面内容 (可选)

>vim /etc/bashrc

export JAVA_HOME=/usr/lib/jvm/java

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

1.1.1.4 创建必要的目录

> mkdir -p /home/modules/data/buf/

> mkdir -p /home/test_tools/

> mkdir -p /home/nm/localdir

注意:四台服务器都需要操作。

1.2.1 下载软件包

          步骤 1      获取Hadoop软件包

在node01找到下载好的Hadoop软件包,放到home目录,或者从本地上传安装文件

> wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz

1.2.1 搭建Hadoop集群

1.2.1.1 查看解压目录

在node01上准备hadoop组件

> tar -zxvf hadoop-2.8.3.tar.gz -C /home/modules

> ls /home/modules/  | grep hadoop

hadoop-2.8.3

1.2.1.2 修改配置文件

          步骤 1      配置hadoop-env.sh

在node010上执行命令:

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hadoop-env.sh

修改JAVA_HOME路径为ECS已经默认装好了JDK路径

export

=/usr/lib/jvm/java

步骤 1      预配置core-site.xml

在node01上执行命令+

> vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml

在<configuration>与</configuration>之间填入以下内容,此为预配置,后期还要再修改,注意涉及到的主机名如果不同需要根据具体情况修改:

<property>

    <name>fs.defaultFS</name>

    <value>hdfs://node01:8020</value>

 </property>

 <property>

    <name>hadoop.tmp.dir</name>

    <value>/home/modules/hadoop-2.8.3/tmp</value>

 </property>

<property>

    <name>fs.obs.buffer.dir</name>

    <value>/home/modules/data/buf</value>

 </property>




<property>

    <name>fs.obs.readahead.inputstream.enabled</name>

    <value>true</value>

 </property>

 <property>

    <name>fs.obs.buffer.max.range</name>

    <value>6291456</value>

 </property>

 <property>

    <name>fs.obs.buffer.part.size</name>

    <value>2097152</value>

 </property>

 <property>

    <name>fs.obs.threads.read.core</name>

    <value>500</value>

 </property>

 <property>

    <name>fs.obs.threads.read.max</name>

    <value>1000</value>

 </property>

 <property>

    <name>fs.obs.write.buffer.size</name>

    <value>8192</value>

 </property>

 <property>

    <name>fs.obs.read.buffer.size</name>

    <value>8192</value>

 </property>

 <property>

    <name>fs.obs.connection.maximum</name>

    <value>1000</value>

 </property>



 <property>

    <name>fs.obs.impl</name>

    <value>org.apache.hadoop.fs.obs.OBSFileSystem</value>

 </property>

 <property>

    <name>fs.obs.connection.ssl.enabled</name>

    <value>false</value>

 </property>

 <property>

    <name>fs.obs.fast.upload</name>

    <value>true</value>

 </property>

 <property>

    <name>fs.obs.socket.send.buffer</name>

    <value>65536</value>

 </property>

 <property>

    <name>fs.obs.socket.recv.buffer</name>

    <value>65536</value>

 </property>

 <property>

    <name>fs.obs.max.total.tasks</name>

    <value>20</value>

 </property>

 <property>

    <name>fs.obs.threads.max</name>

    <value>20</value>

 </property>

效果如下:

1.2.1.3 配置hdfs-site.xml

在node01上执行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property>

    <name>dfs.replication</name>

    <value>3</value>

 </property>

 <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>node01:50090</value>

 </property>

 <property>

    <name>dfs.namenode.secondary.https-address</name>

    <value>node01:50091</value>

 </property>

1.2.1.4 配置yarn-site.xml

在node01上执行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property>

    <name>yarn.resourcemanager.hostname</name>

    <value>node01</value>

    <description>表示ResourceManager安装的主机</description>

</property>

<property>

    <name>yarn.resourcemanager.address</name>

    <value>node01:8032</value>

    <description>表示ResourceManager监听的端口</description>

</property>

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    <description>为map reduce应用打开shuffle 服务</description>

</property>

<property>

    <name>yarn.nodemanager.local-dirs</name>

    <value>/home/nm/localdir</value>

    <description>表示nodeManager中间数据存放的地方</description>

</property>

<property>

    <name>yarn.nodemanager.resource.memory-mb</name>

    <value>3072</value>

    <description>表示这个NodeManager管理的内存大小</description>

</property>

<property>

    <name>yarn.nodemanager.resource.cpu-vcores</name>

    <value>2</value>

    <description>表示这个NodeManager管理的cpu个数</description>

</property>

<property>

    <name>yarn.nodemanager.pmem-check-enabled</name>

    <value>false</value>

    <description>不检查每个任务的物理内存量</description>

</property>

<property>

    <name>yarn.nodemanager.vmem-check-enabled</name>

    <value>false</value>

    <description>不检查每个任务的虚拟内存量</description>

</property>

<property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    <description>为map reduce应用打开shuffle 服务</description>

</property>

1.2.1.5 配置mapred-site.xml

在node01上执行命令:

> cp /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml.template /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

然后编辑复制出来的配置文件:

  vim /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>node1:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>node1:19888</value>

</property>

<property>

<name>mapred.task.timeout</name>

<value>1800000</value>

</property>

1.2.1.6 配置slaves

在node01节点配置从节点,删掉里面的localhost,配置上从节点(node02、node03、node04)

> vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves

# 删掉里面的localhost,添加以下内容

node02

node03

node04

1.2.1.7 分发组件

在 node01 执行如下命令,将 hadoop-2.8.3 目录拷贝到其他各个节点的/home/modules/下

> for i in {02..04};do scp -r /home/modules/hadoop-2.8.3 root@node${i}:/home/modules/;done

二选一

scp -r /home/modules/hadoop-2.8.3 root@node02:/home/modules/

scp -r /home/modules/hadoop-2.8.3 root@node03:/home/modules/

scp -r /home/modules/hadoop-2.8.3 root@node04:/home/modules/

等待几分钟拷贝完毕后,在 node02~node04 节点执行如下命令检查是否复制成功

> ls /home/modules/ | grep hadoop

1.2.1.8 添加并校验环境变量

在 node01~node04,执行下面命令添加环境变量:

> vim /etc/profile

# 添加内容为:

export HADOOP_HOME=/home/modules/hadoop-2.8.3

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

export HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH

注意:请在末尾添加!

在 node01~node4,执行如下命令,使环境变量生效:

> source /etc/profile

此处以node01为例子

在 node01~node4,执行如下命令,校验环境变量:

> echo $HADOOP_HOME

显示如下内容则为配置正确:

1.2.1.9 初始化namenode

在 node01上执行如下命令,初始化 Namenode:

> hdfs namenode -format

1.3.1 启动Hadoop集群

步骤 1    在node01节点执行以下命令:
> start-dfs.sh ; start-yarn.sh

返回信息中有以下内容,表示hadoop集群启动成功:

Starting namenodes on [node01]

Starting secondary namenodes [node01]

starting yarn daemonshi

1.3.2 验证Hadoop状态

步骤 1   使用jps命令在node01-4中查看Java进程

在node01中可以查看到 NameNode,SecondaryNameNode,ResourceManager

进程,在node2-4中可以查看到 NodeManager 和 Datanode 进程,表示hadoop集群状态正常。

>  jps

1538 WrapperSimpleApp

5732 SecondaryNameNode

5508 NameNode

6205 Jps

5918 ResourceManager

>  jps

3026 Jps

2740 DataNode

1515 WrapperSimpleApp

2862 NodeManager

步骤 3    访问,可以登录Namenode的Web界面:

http://namenodeip:50070

访问Yran界面:

1.4.1 使用Hadoop统计以下表格人名字的出现次数

首先找到hadoop自带worldcount jar包示例的路径

创建数据文件夹,以及输出文件夹

编辑输入数据:

具体输入的数据听从老师安排

将本地准备的输入文件上传到hdfs中:

查看文件

执行MapReduce

hadoop jar hadoop-mapreduce-examples-2.8.3.jar wordcount /data/wordcount /output/wordcountresult

查看结果:jps

hadoop fs -text /output/wordcountresult/part-r-00000

结尾

        经过前面的学习,相信读者已经对Hadoop集群的安装和MapReduce应用有了深入的了解。Hadoop作为一个开源的分布式计算平台,为大数据处理提供了强大的支持。通过本教程的学习,读者可以搭建起自己的Hadoop集群,并尝试使用MapReduce处理大规模数据集。当然,Hadoop的功能远不止于此,它还有更多的高级特性和应用场景等待我们去探索。希望本教程能够为您在大数据处理领域的学习和实践提供一些帮助。

标签:node01,必看,modules,Hadoop,hadoop,MapReduce,etc,2.8,home
From: https://blog.csdn.net/weixin_42175752/article/details/140110600

相关文章

  • Stable Diffusion做AI儿童绘本副业创收居然超主业?变现方式详细拆解!新手小白必看!
    AI儿童绘本各大平台上故事绘本、幼儿园儿歌、英文绘本、古诗词,从下图里,可以看出需求量很大AI儿童绘本实现方式\1.gpt\2.leonardo.ai\3.Midjourney\4.StableDiffusion变现方式\1.自制绘本售卖\2.卖书卖课针对各位初学者,这里列举了一条完整的学习计划,感兴趣的可......
  • 外网爆火!真正内行人必看的大模型神书!
    ......
  • 01 | 为什么MapReduce会被硅谷一线公司淘汰?
    今天我要与你分享的主题是“为什么MapReduce会被硅谷一线公司淘汰”。我有幸几次与来Google参观的同行进行交流,当谈起数据处理技术时,他们总是试图打探MapReduce方面的经验。这一点让我颇感惊讶,因为在硅谷,早已没有人去谈论MapReduce了。今天这一讲,我们就来聊聊为什么......
  • Hadoop权威指南-读书笔记-01-初识Hadoop
    Hadoop权威指南-读书笔记记录一下读这本书的时候觉得有意思或者重要的点~第一章—初识HadoopTips:这个引例很有哲理嘻嘻......
  • hadoop集群部署【二】YARN & MapReduce 的部署
    提前注意:请注意路径是否和我的相同,放置的位置不同,请修改标红处 HDFS部署HDFS介绍及部署http://t.csdnimg.cn/Q3H3Y部署说明HadoopHDFS分布式文件系统,我们会启动:NameNode进程作为管理节点DataNode进程作为工作节点SecondaryNamenode作为辅助同理,HadoopYARN分布式资源......
  • YARN & MapReduce 介绍
    MapReduce是基于YARN运行的,即没有YARN”无法”运行MapReduce程序(并不是完全但是看作是这样的)导入 分布式计算概述 分布式计算概述http://t.csdnimg.cn/LOW1p MapReduce概述MapReduce概述http://t.csdnimg.cn/WwMB8YARN概述 分布式资源调度-YARN  资源调度 ......
  • Hadoop基础及安装
    Hadoop基础了解hadoop我们生活在一个数据大爆炸的时代,数据飞速的增长,急需解决海量数据的存储和计算问题Hadoop适合海量数据分布式存储和分布式计算Hadoop的作者是DougCutting,Hadoop这个名字是他的孩子给他的毛绒象玩具起的名字Hadoop3.x的细节优化Hadoop三......
  • 什么是未授权访问漏洞?Hadoop & Redis靶场实战——Vulfocus服务攻防
    什么是未授权访问漏洞?Hadoop&Redis靶场实战——Vulfocus服务攻防一、介绍未授权访问,也称为未经授权的访问或非法访问,是指在没有得到适当权限或授权的情况下,个人或系统访问了网络、计算机、数据库、文件、应用程序或其他受保护资源的行为。这种访问可能出于恶意或非恶意的目......
  • Hadoop:全面深入解析
       Hadoop是一个用于大规模数据处理的开源框架,其设计旨在通过集群的方式进行分布式存储和计算。本篇博文将从Hadoop的定义、架构、原理、应用场景以及常见命令等多个方面进行详细探讨,帮助读者全面深入地了解Hadoop。1.Hadoop的定义1.1什么是Hadoop   Hadoop是......
  • Win10用户必看:最好用最稳定的版本在此,值得一试!
    在Win10电脑操作中,用户可以根据的需要,下载安装不同的系统版本。现在,许多用户好奇Win10哪个版本最好用最稳定?接下来小编给大家推荐最好用最稳定的Win10版本,这些系统版本经过优化升级,相信会给大家带来最棒的操作体验感,且下载安装步骤非常简单。推荐一:Windows1022H2X64......