最新版本——Hadoop3.3.6单机版完全部署指南

538067752c84509357716d8eb723e6da.png

大家好,我是独孤风,大数据流动的作者。

本文基于最新的 Hadoop 3.3.6 的版本编写,带大家通过单机版充分了解 Apache Hadoop 的使用。本文更强调实践,实践是大数据学习的重要环节,也能在实践中对该技术有更深的理解,所以一些理论知识建议大家多阅读相关的书籍(都在资料包中)。

本文档版权归大数据流动所有,请勿商用,全套大数据、数据治理、人工智能相关学习资料,请关注大数据流动。

(本文所使用资料包位置: 大数据流动 VIP 知识库 》大数据技术 》Apache Hadoop 3.3.6 单机安装包)

一、Hadoop 概述

Apache Hadoop 是一个开源框架,用于存储和处理大规模数据集。它是用 Java 编写的,并支持分布式处理。Hadoop 的关键特点包括:

  1. 分布式存储:通过 Hadoop 分布式文件系统(HDFS),它可以跨多个节点存储大量数据,提供高可靠性和数据冗余。

  2. 分布式计算:Hadoop 使用 MapReduce 编程模型来并行处理大数据,这样可以有效地处理和分析存储在 HDFS 中的大规模数据集。

  3. 可扩展性:Hadoop 能够通过添加更多节点来轻松扩展,处理更大量的数据。

  4. 容错性:Hadoop 设计中考虑到了故障的可能性,能够在节点故障时继续运行,确保数据不丢失。

5. 生态系统:Hadoop 的生态系统包括各种工具和扩展(如 Hive、HBase、Spark 等),用于数据处理、分析和管理。

Hadoop 广泛应用于大数据分析、数据挖掘、日志处理等领域,特别是在需要处理 PB 级别数据的场景中非常有效。

所以我们可以理解为 Hadoop 是一个生态,有了 Hadoop 为基础,后续的 Spark,Flink 等组件才相继出现,让大数据技术持续的发展。

4de56e62c5e4ef7e25fea171b43d20f5.png

而从软件角度,Hadoop 本身自己是一个 Apache 的开源软件。

db6fb49cb3b71b9ca60a5f47b04fa0d8.png

Apache Hadoop 主要由以下几个核心组件组成,每个组件都有其独特的功能:

1. Hadoop Common:这是 Hadoop 的基础库集合,提供了 Hadoop 模块所需要的通用工具和接口。它包括文件系统、操作系统级别的抽象,以及必要的 Java 库文件。

  1. Hadoop MapReduce (MR):这是一个编程模型,用于处理大规模数据集的分布式计算。MapReduce 将作业分成两个阶段:Map(处理)和 Reduce(汇总)。这种方法使得并行处理大数据变得简单有效。

  2. Hadoop YARN (Yet Another Resource Negotiator):YARN 是 Hadoop 的资源管理和任务调度器。它将计算资源管理和作业调度功能从 MapReduce 中分离出来,提高了 Hadoop 的灵活性和可扩展性。

  3. Hadoop Distributed File System (HDFS):HDFS 是一个高度容错的分布式文件系统,设计用来存储大量数据。它可以在廉价的硬件上运行,提供高吞吐量以访问应用程序数据,并适用于具有大数据集的应用程序。

这些组件协同工作,使 Hadoop 成为一个强大的工具,用于存储、处理和分析大规模的数据集。

cea094a1b6ced98f2b99f00e7e19baf1.png

而 Common 是基础库,MapReduce 由于性能问题,分布式计算已经被更高效的 Spark,Flink 等计算引擎替代。

但是HDFS,YARN依然是最核心的两个组件,一定要认真学习,我也会单独发文章来学习这两个组件。

31650bf03cddeb48344d5ea4e144c95d.png

016fb4d32de6e7ba853a12925cff3ad4.png

d0147438f13591c699240e872a4d7442.png

31ba775920ca3a505a7bcab3e9e80d6b.png

二、Hadoop 历史

当然,以下是用 Markdown 格式概述 Apache Hadoop 的历史:

  • 2005 年 - 起源由 Doug Cutting 和 Mike Cafarella 创立,受 Google 的 MapReduce 和 GFS 论文启发。

    (Google 三篇理论中文版资料位置: 大数据流动 VIP 知识库 》大数据技术 》Google 三家马车)

  • 2006 年 - 加入Apache成为 Apache 软件基金会的一部分,最初是 Lucene 项目的一部分,后来在 2008 年成为顶级项目。

  • 2008 年及以后 - 发展与普及快速获得关注,生态系统不断发展,增加了如 HBase、Hive 等工具。

  • 2011 年 - Hadoop 1.0 发布标志着 Hadoop 的成熟,稳定 API 和核心组件,包括 HDFS 和 MapReduce。

  • 2013 年 - Hadoop 2.0 和YARN的推出引入 YARN,将 Hadoop 从以 MapReduce 为中心的平台转变为更加多功能的数据处理平台。

  • 持续演进 - Hadoop 不断更新,扩展其功能和生态系统,包括 Spark、Kafka、Flink 等工具。

  • 云集成 - 近年来,与云服务集成,提供更灵活、可扩展的数据处理解决方案。

Hadoop 也不光只有 Apache Hadoop,很多公司都有自己的发行版本,不同的发行版针对不同的用途和场景进行了优化,用户可以根据自己的需求选择最适合的版本。随着时间的推移,这些发行版可能会有所变化,包括新的版本推出或旧版本停止维护。

除了 Apache Hadoop,还有 Cloudera 的 CDH(Cloudera Distribution Including Apache Hadoop)、Hortonworks Data Platform (HDP),也就是 CDH 和 Ambari,我也会在其他文章演示,本文我们带来 Apache Hadoop 的单机版本演示,Apache Hadoop 也是被使用最多的版本。

三、Hadoop 3.3.6 单机安装

下面我们进行 Hadoop3.3.6 的单机版安装。

1、版本情况与安装包准备

Apache Hadoop 的官网地址是 https://hadoop.apache.org/

我们在这里可以看到,最新的版本是 3.3.6,这也是 2023 年新发布的版本,各方面都做了很大的优化,本文也基于此版本进行演示。

d587df13ff4f5246cc5b8340450af460.png

我们使用的 Hadoop 版本是 3.3.6,可以在官方网站进行下载:

https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/

696MB 这个。

8fce21427c41b27d681c8259c074bbc7.png

2、服务器环境准备

不管是服务器和虚拟机环境的准备,大家都可以参考我之前的文章,在本地搭一个虚拟机,也可以去买一个现成的,这里不做赘述。

我们使用的 CentOS 版本是 7.8,可以通过下面的命令来查看版本。

cat /etc/redhat-release

6a67753d3607f9d3d1996847e6029d4f.png

CentOS7 的安装步骤基本一致,都可以参考本文档。

服务器需要做一下免密登陆设置,不然后面会有问题

ssh-keygen -t rsa -P ""

回车即可,随后复制密钥

cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

可以验证一下

ssh bigdataflowing

正常会直接登录过去。

3、JDK 安装

先卸载系统自带的 java

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

上传安装包到服务器,安装包可在 Oracle 官网下载:https://www.oracle.com/java/technologies/downloads/

也可以用我的资料包里的。

jdk-8u221-linux-x64.tar.gz

建立文件夹。

mkdir /opt/jdk/

进入该文件夹,上传文件。

cd /opt/jdk/

a3e81d8f05193eec39ced43b03c2d547.png

解压安装包 tar -zxvf jdk-8u221-linux-x64.tar.gz

没有报错证明解压成功。

cf3597c616e98e8e051164301ee10987.png

随后我们把 JDK 配置到环境变量里就可以了。

vi /etc/profile

在最下面加入这两句,其实就是我们刚刚解压 jdk 的位置。

export JAVA_HOME=/opt/jdk/jdk1.8.0_221

export PATH=$PATH:$JAVA_HOME/bin

最后让环境变量生效

source /etc/profile

查看 java 版本验证一下,java -version 成功!

f4e94ff001197709e8707618870d11a5.png

这样我们这台机器就有 java 环境可用了。

4、Hadoop3.3.6 安装

有了 java 环境,hadoop 的依赖问题就解决了,可以直接进行安装。

将之前准备好的 hadoop 安装包,上传到 /opt/hadoop3.3.6 目录下

解压,tar -zxvf hadoop-3.3.6.tar.gz 没报错就是成功。

dec05f8ea4f5838e6b1135165292bf30.png

还是增加环境变量

vi /etc/profile

在最下面加入这三句,hadoop 的位置

export HADOOP_HOME=/opt/hadoop3.3.6/hadoop-3.3. 6

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

最后让环境变量生效

source /etc/profile

查看 java 版本验证一下,hadoop-version 成功!

abb7c185596c6ab649be3dee0260246c.png

使用 hadoop version 命令验证安装成功

926e11733ee6637a85794f5e8711eac8.png

5、配置

虽然安装成功,但是我们要使用的是单机伪集群,还需要进行一些配置。

hadoop 的目录有如下的文件夹

0946e7abb833a34b3380f4e64862b8b6.png

bin 目录:Hadoop 主服务脚本

etc 目录:Hadoop 的配置文件目录

lib 目录:存放 Hadoop 的本地库

sbin 目录:存放启动或停止 Hadoop 相关服务的脚本

首先进入 etc 配置文件夹 cd ``etc/hadoop 有如下配置,我们只修改核心的就可以。

cdc81f8fed357d2e629cf96988f3f472.png

首先修改 hadoop-env.sh 将 java 和 hadoop 的根路径加入

export JAVA_HOME=/opt/jdk/jdk1.8.0_221

export HADOOP_HOME=/opt/hadoop3.3.6/hadoop-3.3.6

同时加入 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

修改 core-site.xml

在 configuration 标签中,添加如下内容:

<property><name>fs.defaultFS</name><value>hdfs://bigdataflowing:9090</value></property><!-- 指定 hadoop 数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/hadoop3.3.6/hdfs/tmp</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

8ef30eb53797e8609bb50aa82f4a0d5f.png

修改 hdfs-site.xml,在 configuration 标签中,添加如下内容:

<property><name>dfs.replication</name>      <value>1</value></property>  <property><name>dfs.namenode.name.dir</name>  <value>/opt/hadoop3.3.6/hdfs/name</value>  <final>true</final></property>  <property><name>dfs.datanode.data.dir</name>  <value>/opt/hadoop3.3.6/hdfs/data</value>  <final>true</final></property>  <property><name>dfs.http.address</name><value>0.0.0.0:50070</value></property><property><name>dfs.permissions</name>  <value>false</value></property>

c89f668d36fefe12c20e9b3d7d416fbc.png

修改 mapre-site.xml,在 configuration 标签中,添加如下内容:

<property><name>mapreduce.framework.name</name><value>yarn</value></property>

0e29b212d30a90bc6179e09014fad4cb.png

修改 yarn-site.xml,在 configuration 标签中,添加如下内容:

<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>

03179acfbcc0c186c79b8dbd0cb5bf18.png

6、启动

首先格式化 HDFS,也就是对 hdfs 做最基本的配置:

hdfs namenode -format

10a3d9766e961460e40b2bc2c7ac64c6.png

格式化完成。

随后我们进入 sbin 目录

cd /opt/hadoop3.3.6/hadoop-3.3.6/sbin/

b4103baf258a696ecd8da9e1cbcc37c7.png

这里脚本较多,我们可以选择启动全部

./start-all.sh

正常不会有报错,同时使用 jps 命令查看,会有 Datanode,ResourceManager,SecondaryNameNode,NameNode,NodeManager 五个进程。

ed57eb7410515effb169f227ae8436d7.png

另一个验证启动成功的方法,是访问 Hadoop 管理页面

http://IP:50070/

f37c85f9fa6b425c9b2297d76bf1545f.png

http://IP:8088/

ed8602726e68d6679d60374b90494573.png

这些页面的使用,我们会在后续 Hdfs,Yarn 等章节再详细讲解。

7、报错汇总

启动报错,未设置 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 [bigdataflowing]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
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。

启动报错,为进行免密登陆设置

localhost: Permission denied (publickey,password

更多【大数据、数据治理、人工智能知识分享】【开源项目推荐】【学习社群加入】,请关注大数据流动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/256805.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用ArcGIS Pro制作类似CAD的尺寸注记

经常使用CAD制图的朋友应该比较熟悉CAD内的尺寸标注&#xff0c;这样的标注看起来直观且简洁&#xff0c;那么在ArcGIS Pro内能不能制作这样尺寸注记呢&#xff0c;答案是肯定的&#xff0c;这里为大家介绍一下制作的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所…

node.js和浏览器之间的区别

node.js是什么 Node.js是一种基于Chrome V8引擎的JavaScript运行环境&#xff0c;可以在服务器端运行JavaScript代码 Node.js 在浏览器之外运行 V8 JavaScript 引擎。 这使得 Node.js 非常高效。 浏览器如何运行js代码 nodejs运行环境 在浏览器中&#xff0c;大部分时间你所…

SLAM算法与工程实践——SLAM基本库的安装与使用(3):Pangolin库

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接&#xff0c;本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址&#xff1a; SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

2021年第十届数学建模国际赛小美赛A题气道阻力的评估解题全过程文档及程序

2021年第十届数学建模国际赛小美赛 A题 气道阻力的评估 原题再现&#xff1a; 气道阻力的定义是通过肺气道产生单位气流所需的经肺压力的变化。更简单地说&#xff0c;它是嘴和肺泡之间的压力差&#xff0c;除以气流。影响气道阻力的因素是多方面的&#xff0c;我们需要探讨这…

Java简易版:UDP协议实现群聊

要先 运行服务端&#xff0c;在运行客户端&#xff0c;否则会报错。 服务端&#xff1a; package 二十一章;import java.io.*; import java.net.*; import java.util.ArrayList; public class T{public static ServerSocket server_socket;public static ArrayList<Socket…

领域驱动架构(DDD)建模

一、背景 常见的软件开发方式是拿到产品需求后&#xff0c;直接考虑数据库中表应该如何设计&#xff0c;这种方式已经将设计与业务需求脱节&#xff0c;而更多的是直接考虑应该如何实现了&#xff0c;这有点本末倒置。而DDD是从领域(问题域)为出发点进行的设计方法。 领域驱动…

记账中心二开

系统预设了 这几种 FSubSystem 为子系统 T_VC_SubSystem 卡片显示的表 字段 FNeedRalteAccount 设置为1的话 &#xff0c;需要与总账连用系统将去查找 系统状态控制表。 如果系统状态 没有配置这个子系统 将无法显示数据 select sysStaCtr.fid from T_BD_SystemStatusCt…

统信UOS_麒麟KYLINOS上跨架构下载离线软件包

原文链接&#xff1a;统信UOS/麒麟KYLINOS上跨架构下载离线软件包 hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇在统信UOS/麒麟KYLINOS上跨架构下载离线软件包的实用教程。在我们的日常工作中&#xff0c;可能会遇到这样的情况&#xff1a;需要为不同架构的设备下…

STM32 cubeMX 呼吸灯实验

文章代码使用 HAL 库。 文章目录 一、1.PWM原理二、LED 原理图三、使用cubemx 配置 led四、PWM 相关函数五、PWM占空比占空比计算六、PWM 呼吸灯重要代码总结 呼吸灯 一、1.PWM原理 PWM全称为脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;&#xff0c;是一种常…

【软考】信息系统项目管理师论文方向猜想

报喜不报忧&#xff0c;每天都在为鸡零狗碎推诿扯皮&#xff0c;属实是有辱师门。 通过软考&#xff0c;目前算是真正有意义的事情。 虽然都说高项的论文是个玄学&#xff0c;但是道听途说了一些通关感想还是蛮有启发的。 文件要求 参考了一份广西省高级工程师评审的文件&am…

Linux 环境变量 与 命令行参数

什么是环境变量 从结构上来看&#xff0c;环境变量就是操作系统维护的一组&#xff1a;key-value 的键值对。 不知道你是否有一个疑问&#xff1a;为什么我们写代码编译链接 形成的可执行程序要运行起来需要带路径呢&#xff1f;Linux 内置的命令也是可执行程序&#xff0c;为…

用keepalived做mysql高可用

两台机器(centos7系统)安装mysql [rootmysql-keep-master ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm [rootmysql-keep-master ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm [rootmysql-keep-master ~]# yum -y install yu…