Hadoop3集群实战:从零开始的搭建之旅

目录=

一、概念

1.1 Hadoop是什么

1.2 历史

1.3 三大发行版本(了解)

1.4 优势

1.5 组成💗

1.6 HDFS架构

1.7 YARN架构

1.8 MapReduce概述

1.9 HDFS\YARN\MapReduce关系

二、环境准备

2.1 准备模版虚拟机

2.2 安装必要软件

2.3 安装xshell

2.4 创建用户并赋予root权限

2.5 克隆虚拟机

2.6 时间同步

2.7 ssh免密登录

2.8 xsync脚本分发

2.9 安装JDK和Mysql

安装jdk(三个节点)

安装mysql(主节点)目前不需要

三、完全分布式集群搭建

3.1 安装hadoop(三台)

3.2 集群部署

3.2.1 部署规划

3.2.2 配置文件(三台)

3.2.3 启动集群

参考:


一、概念

1.1 Hadoop是什么

  • apache的分布式系统基础架构
  • Hadoop实际上是一个生态圈,里面有多个组件,主要解决海量数据存储和分析计算问题

1.2 历史

  • Hadoop是Apache Lucene创始人 Doug Cutting 创建的。最早起源于Nutch,它是Lucene的子项目。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题:如何解决数十亿网页的存储和索引问题。
  • 2003年Google发表了一篇论文为该问题提供了可行的解决方案。论文中描述的是谷歌的产品架构,该架构称为:谷歌分布式文件系统(GFS),可以解决他们在网页爬取和索引过程中产生的超大文件的存储需求。
  • 2004年 Google发表论文向全世界介绍了谷歌版的MapReduce系统。
  • 同时期,以谷歌的论文为基础,Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP
  • 到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。
  • 2006年Google发表了论文是关于BigTable的,这促使了后来的Hbase的发展。

因此,Hadoop及其生态圈的发展离不开Google的贡献。

1.3 三大发行版本(了解)

  • Apache 最基础的版本,完全开源免费
  • CDH,集成了大数据框架 发行版本
  • HDP,Ambari是HDP的安装工具和管理界面

    Cloudera公司已经正式终止了对CDH的支持。分别在2021年12月、2022年3月,Cloudera正式终止了对HDP(Hortonworks Data Platform)及CDH的支持

    后续推出CDP,新一代数据平台产品,它整合了HDP和CDH的功能并进行了优化和扩展。

1.4 优势

  1. 高可靠性:底层维护多个数据副本,避免故障时数据丢失
  2. 高扩展性:集群间分配任务数据,方便扩展节点,动态扩容缩减
  3. 高效性:并行工作
  4. 高容错性:自动将失败的任务重新分配

1.5 组成💗

Hadoop1.x、2.x、3.x的区别

  • Hadoop1.*中MapReduce中计算和资源调度同时处理,耦合性比较大
  • Hadoop2.*新增了YARN进行资源调度,MapReduce只用来计算
  • Hadoop2和3在组成上没有区别

1.6 HDFS架构

分布式文件系统

  • NameNode 数据存储位置(存储文件元数据,如:文件名 目录结构 文件属性 所在位置),相当于目录
  • DataNode 存储数据,相当于内容
  • 2NN 辅助NameNode工作(每隔一段时间对NameNode做数据备份)

1.7 YARN架构

资源管理器

  • Resource Manager 集群资源管理(内存、cup)
  • Node Manager 单节点资源管理
  • Container 容器,相当于一台独立服务器
  • ApplicationMaster,单个任务资源管理

1.8 MapReduce概述

  • map阶段,并行处理输入数据
  • reduce阶段,对map结果汇总

1.9 HDFS\YARN\MapReduce关系

大数据技术生态体系

二、环境准备

目标:需要准备3台虚拟机(本次使用Ubuntu24.04,但是教程大多是Centos,大差不差),机器名为hadoop102、hadoop103、hadoop104,对应ip:192.168.10.102、192.168.10.103、192.168.10.104

2.1 准备模版虚拟机

软件操作系统安装参考:(这部分没有详细记录,一般使参考视频和博客,要细心)

VMware 虚拟机图文安装和配置 Ubuntu Server 22.04 LTS 教程_00-installer-config.yaml-CSDN博客

19_尚硅谷_Hadoop_入门_Centos7.5软硬件安装_哔哩哔哩_bilibili

  • 配置静态ip 192.168.10.100,nat桥接模式
  • 配置文件修改/etc/netplan
  • 配置主机名称和ip映射:修改服务器hosts文件 192.168.10.100 hadoop100
  • 修改一些配置虚拟机和windows上的

2.2 安装必要软件

安装vim、iputils-ping、net-tools、rsync(一般安装最小体积的server版本才需要安装这些)

  • sudo apt install vim
  • sudo apt update
  • sudo apt-get update
  • sudo apt install iputils-ping
  • sudo apt install net-tools
  • sudo apt install rsync

测试网络:ping www.baidu.com

测试:ip ifconfig

2.3 安装xshell

c21_尚硅谷_Hadoop_入门_Xshell远程访问工具_哔哩哔哩_bilibili参考:21_尚硅谷_Hadoop_入门_Xshell远程访问工具_哔哩哔哩_bilibili

主要是做本机和虚拟机的交互和文件上传。因为本地安装了termius就不需要这个了,感觉termius更好用

2.4 创建用户并赋予root权限

给用户mlj root权限:vim /etc/sudoers

mlj ALL=(ALL:ALL) NOPASSWD:ALL

2.5 克隆虚拟机

  • 在vmware上克隆模版虚拟机
  • 修改ip和主机名分别为hadoop102 hadoop103 hadoop104
  • 修改ip和主机名的映射:vim /etc/hosts
192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

报错:使用termius进行root用户登录时报错:SSH配置不允许root登录

  • 修改/etc/ssh/sshd_config PermitRootLogin:yes
  • 重启生效sudo systemctl restart sshd

2.6 时间同步

如果服务器在公网环境(能连接外网),可以不采用集群时间同步

  • 安装ntp时间同步服务器(所有节点):apt install ntp
  • 查看状态、启动、设置开机自启
systemctl status ntpdsec

systemctl start ntpsec

systemctl enable ntpsec
  • 重启服务器:reboot
  • 所有节点设置时区:中国上海 timedatectl set-timezone Asia/Shanghai
  • 修改配置同步时间的机器 vim /etc/ntpsec/ntp.conf
#注释(主节点需要,子节点注释掉)
#集群在局域网中,不使用其他互联网上的时间
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
#pool ntp.ubuntu.com

#(子节点配置,使用102作为时间同步机器)
server hadoop102

#当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步
#(所有节点需要)
server 127.127.1.0fudge 
127.127.1.0 stratum 10

#授权网段(主节点需要)
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
  • ntpq -p 查看同步情况

问题:时间和windows实践不一致

(1)安装ntpdate工具:sudo apt-get install ntpdate

(2)同步系统时间与网络时间:sudo ntpdate cn.pool.ntp.org

(3)其他节点同步hadoop102的时间: sudo ntpdate hadoop102

2.7 ssh免密登录

~/.ssh/

(1)102生成公私钥 三次回车 ssh-keygen -t rsa

(2)copy公钥到102 103 104 (本机也要配置)ssh-copy-id hadoop103

(3)103、104执行相同的步骤

(4)验证:ssh hadoop103

2.8 xsync脚本分发

(1)编写分发脚本xsync

注意:每台机器都要有rsync才能分发成功

/home/mlj/bin目录下,新建xsync

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

(2)修改xsync环境变量,否则找不到该命令

export PATH=$PATH:/home/mlj/bin

注意:rsync基于ssh服务需要配置秘钥,免密登录

2.9 安装JDK和Mysql

安装jdk(三个节点)

(1)下载上传到虚拟机:scp .\jdk-8u202-linux-x64.tar.gz root@192.168.10.104:/opt/soft/

(2)解压缩:sudo tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/module/

(3)环境变量配置

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_202

export PATH=$PATH:$JAVA_HOME/bin

(4)验证:java-version 

安装mysql(主节点)目前不需要

步骤:

  • 安装docker
  • 使用docker安装mysql
  • docker-compose启动mysql

问题:

(1)docker-compose报错,缺少python的一个包setuptools

  • 安装pipx :sudo apt install pipx
  • 安装包setuptools :sudo pipx install setuptools
  • docker-compose -version

(2)拉取镜像报错修复:Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

使用第三方镜像库:

AtomHub 可信镜像仓库平台 · OpenAtom Foundation

三、完全分布式集群搭建

3.1 安装hadoop(三台)

(1)上传hadoop包:tar -zxvf hadoop-3.4.1.tar.gz -C /opt/module

(2)解压缩 tar -zxvf hadoop-3.4.1.tar.gz -C /opt/module

(3)环境变量配置

#hadoop环境变量 
export HADOOP_HOME=/opt/module/hadoop-3.4.1 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

(4)集群配置

3.2 集群部署

3.2.1 部署规划
  • NameNode和SecondaryNameNode不要安装同一台
  • ResourceManager也很消耗内存,不要和NameNode和SecondaryNameNode配置在一台机器

 

3.2.2 配置文件(三台)

自定义配置文件 4个

配置core-site.xml

<!-- 指定 NameNode 的地址 -->
   <property>
       <name>fs.defaultFS</name>
       <value>hdfs://hadoop102:8020</value>
   </property>
   <!-- 指定 hadoop 数据的存储目录 -->
   <property>
       <name>hadoop.tmp.dir</name>
       <value>/opt/module/hadoop-3.4.1/data</value>
   </property>
   <!-- 配置 HDFS 网页登录使用的静态用户为 mlj -->
   <property>
       <name>hadoop.http.staticuser.user</name>
       <value>mlj</value>
   </property>

hdfs-site.xml

<!-- nn web 端访问地址-->
<property>
   <name>dfs.namenode.http-address</name>
   <value>hadoop102:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>hadoop104:9868</value>
</property>
<!--HDFS 中是否启用权限检查-->
<property>
   <name>dfs.permissions</name>
   <value>false</value>
</property>

yarn-site.xml

<!-- Site specific YARN configuration properties -->
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>hadoop10</value>
</property>
<!--是否将对容器实施虚拟内存限制-->
<property>
   <name>yarn.nodemanager.vmem-check-enabled</name>
   <value>false</value>
</property>

mapred-site.xml

<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

配置works(不能有空格换行!)

hadoop102

hadoop103

hadoop104
3.2.3 启动集群
  • 配置目录权限

sudo chmod -R a+w /opt/module/hadoop-3.4.1/

  • 初次启动初始化(初始化失败可能是没有权限,执行上一步)

hdfs namenode -format

  • 修改hadoop的环境变量hadoop-env.sh:vim /opt/module/hadoop-3.4.1/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_202
  • 脚本分发(文件夹需要修改权限),xsync 脚本
  • 启动dfs集群:sbin/start-dfs.sh
  • jps 验证
  • 访问hdfs web页面 http://192.168.10.102:9870/
  • 启动yarn sbin/start-yarn.sh
  • 登录yarn web页面 http://192.168.10.103:8088/

参考:

尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放_哔哩哔哩_bilibili

Hadoop3.1.4完全分布式集群搭建_hadoop 3.1.4-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RK3568笔记0:环境搭建

第1章 安装NFS服务器 NFS可以让不同的机器、不同的操作系统之间彼此共享文件 服务器安装NFS sudo apt-get install nfs-kernel-server服务器创建一个共享目录 sudo mkdir -p /home/lmz/workspaces/shared_directory配置共享目录到服务器中的配置文件中 sudo vim /etc/export…

Linux socket编程

目录 基础概念端口和端口号Socket&#xff08;套接字&#xff09;UDP和TCP的概念 Socket编程实战socket的类型struct sockaddrstruct sockaddr_in网络字节序socket APITCP网络编程流程分析UDP Demo样例 other概念补充setsockopt函数心跳机制面向字节流与面向报文的理解 参考 基…

OBS学习

OBS简介 OBS是Open Broadcaster Software的简称&#xff0c;是一款开源&#xff0c;用于视频录制以及直播串流的软件&#xff0c;它支持Windows、Mac以及Linux操作系统。 OBS使用场景 使用OBS软件&#xff0c;可以借助单反、摄像机、无人机等摄影设备在电脑上直播。OBS可以把…

SQL Server:调用的目标发生了异常。(mscorlib)

我之前安装的SQL Server是2014版本&#xff0c;SSMS运行也很流畅&#xff0c;有一次有个同事让我链接云服务器SQL地址&#xff0c;直接报上图的错误&#xff0c;把我弄的一愣一愣的。 后面才发现&#xff0c;这是版本太低导致的&#xff0c;但是你如果使用Navicat是没有问题的…

dolphinScheduler 任务调度

#Using docker-compose to Start Server #下载&#xff1a;https://dlcdn.apache.org/dolphinscheduler/3.1.9/apache-dolphinscheduler-3.1.9-src.tar.gz $ DOLPHINSCHEDULER_VERSION3.1.9 $ tar -zxf apache-dolphinscheduler-"${DOLPHINSCHEDULER_VERSION}"-src.t…

“为您的家电穿上防震铠甲:优质电器缓冲器

在地震频发地区或日常生活中&#xff0c;确保家电的安全和稳定至关重要。为了防止地震、意外碰撞或其他外力对家电造成损害&#xff0c;采用优质的电器缓冲器就像是为家电穿上了一层坚固的“防震铠甲”。这不仅能够有效减少因震动导致的损坏风险&#xff0c;还能显著延长家电的…

Qlib上手学习记录

Qlib 是一个面向人工智能的量化投资平台&#xff0c;其目标是通过在量化投资中运用AI技术来发掘潜力、赋能研究并创造价值&#xff0c;从探索投资策略到实现产品化部署。该平台支持多种机器学习建模范式&#xff0c;包括有监督学习、市场动态建模以及强化学习等。 真的是走了很…

web前端设计1

熟悉流行框架、熟练掌握CSS的写法&#xff0c;以及JAVASCRIPT库的应用&#xff0c;最主要的是能按要求改出相应的界面&#xff0c;因为我们基本没有自己手写代码的&#xff0c;所以得会拿别的界面改成想要的界面。 前端比较吃能力的就是CSS的写法&#xff0c;如何用已写好的框…

2020年国赛高教杯数学建模E题校园供水系统智能管理解题全过程文档及程序

2020年国赛高教杯数学建模 E题 校园供水系统智能管理 原题再现 校园供水系统是校园公用设施的重要组成部分&#xff0c;学校为了保障校园供水系统的正常运行需要投入大量的人力、物力和财力。随着科学技术的发展&#xff0c;校园内已经普遍使用了智能水表&#xff0c;从而可以…

JAVA |日常开发中连接Sqlite数据库详解

JAVA &#xff5c;日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…

图像超分辨率技术新进展:混合注意力聚合变换器HAAT

目录 1. 引言&#xff1a; 2. 混合注意力聚合变换器&#xff08;HAAT&#xff09;&#xff1a; 2.1 Swin-Dense-Residual-Connected Block&#xff08;SDRCB&#xff09;&#xff1a; 2.2 Hybrid Grid Attention Block&#xff08;HGAB&#xff09;&#xff1a; 3. 实验结…

【Appium】AttributeError: ‘NoneType‘ object has no attribute ‘to_capabilities‘

目录 1、报错内容 2、解决方案 &#xff08;1&#xff09;检查 &#xff08;2&#xff09;报错原因 &#xff08;3&#xff09;解决步骤 3、解决结果 1、报错内容 在PyCharm编写好脚本后&#xff0c;模拟器和appium也是连接成功的&#xff0c;但是运行脚本时报错&…

1.1 Beginner Level学习之“创建 ROS msg 和 srv”(第十节)

学习大纲&#xff1a; 1. msg 和 srv msg 文件是描述 ROS 消息字段的简单文本文件。它们用于为不同语言生成消息的源代码。srv 文件则描述了一个服务&#xff0c;包括两部分&#xff1a;请求和响应。Srv 文件用于生成服务的源代码。msg 文件存储在包的 msg 目录中。srv 文件存…

Android仿美团左右联动购物列表

Android仿美团左右联动购物列表 左右联动购物列表&#xff0c;不难。 一、思路&#xff1a; 两个RecycleView 二、效果图&#xff1a; 三、关键代码&#xff1a; public class MainActivity extends AppCompatActivity {private RecyclerView rl_left;private RecyclerVie…

微信小程序 运行出错 弹出提示框(获取token失败,请重试 或者 请求失败)

原因是&#xff1a;需要登陆微信公众平台在开发管理 中设置 相应的 服务器域名 中的 request合法域名 // index.jsPage({data: {products:[],cardLayout: grid, // 默认卡片布局为网格模式isGrid: true, // 默认为网格布局page: 0, // 当前页码size: 10, // 每页大小hasMore…

室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版)

目录&#xff1a; 0 引言 1 人形机器人对室内家政服务任务的结构化 1.1人形机器人在室内家政服务中的比较优势 1.1.1 人形机器人拟人性的7个维度 1.1.2 拟人性在室内家政服务工作中的比较优势 1.1.3 潜在的重要用户&#xff1a;宠物爱好者 1.2 居所室内环境的特征与结构…

【YOLO部署Android安卓手机APP】YOLOv11部署到安卓实时目标检测识别——以火焰烟雾目标检测识别举例(可自定义更换其他目标)

前言:本项目基于YOLOv11部署到手机APP实现对火焰烟雾的检测识别,当然,以此你可以按照本项目开发步骤扩展更换为其他目标进行检测,例如更换为车牌、手势、人脸面部活动、人脸表情、火焰烟雾、行人、口罩、行为、水果、植物、农作物等等部署手机APP进行检测。本文为详细设计/…

python 执行celery

1、redis安装并启动redis安装与使用-CSDN博客 2、安装 celery 、eventlet 3. Task handler raised error: ValueError(not enough values to unpack (expected 3, got 0)) - Redskaber - 博客园 pip install celery pip install eventlet 3、python 版本3.10 #创建异步任…

未完成_RFdiffusion应用案例_从头设计pMHC的结合剂

目录 1. 论文导读1&#xff09;摘要2&#xff09;设计流程3&#xff09;设计流程的验证 2. 实战 1. 论文导读 Liu, Bingxu, et al. “Design of high specificity binders for peptide-MHC-I complexes.” bioRxiv (2024): 2024-11. 1&#xff09;摘要 MHC-I 将胞内抗原肽递呈…

【css】基础(一)

本专栏内容为&#xff1a;前端专栏 记录学习前端&#xff0c;分为若干个子专栏&#xff0c;html js css vue等 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;css专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &a…