Hadoop部署完全分布式

news2024/12/26 11:37:47

​ 在真实的企业环境中,服务器集群会使用到多台机器,共同配合,来构建一个完整的分布式文件系统。而在这样的分布式文件系统中,HDFS相关的守护进程也会分布在不同的机器上,例如:

  • NameNode守护进程,尽可能的单独部署在一台硬件性能较好的机器中。
  • 其他的每台机器上都会部署一个DataNode守护进程,一般的硬件环境即可。
  • SecondaryNameNode守护进程最好不要和NameNode在同一台机器上。

平台软件说明

平台&软件说明
宿主机操作系统Windows / MacOS
虚拟机操作系统CentOS 7
虚拟机软件Windows: VMWare
MacOS: Parallels Desktop
虚拟机主机名: qianfeng01, IP地址: 192.168.10.101
主机名: qianfeng02, IP地址: 192.168.10.102
主机名: qianfeng03, IP地址: 192.168.10.103
SSH工具Windows: MobaXterm / FinalShell
MacOS: FinalShell / iTerm2
软件包上传路径/root/softwares
软件安装路径/usr/local
JDKX64: jdk-8u321-linux-x64.tar.gz
ARM: jdk-8u321-linux-aarch64.tar.gz
HadoopX64: hadoop-3.3.1.tar.gz
ARM: hadoop-3.3.1-aarch64.tar.gz
用户root

守护进程布局

NameNodeDataNodeSecondaryNameNode
qianfeng01
qianfeng02
qianfeng03

集群搭建准备

  1. 总纲

    1. 三台机器的防火墙必须是关闭的.
    2. 确保三台机器的网络配置畅通(NAT模式,静态IP,主机名的配置)
    3. 确保/etc/hosts文件配置了ip和hostname的映射关系
    4. 确保配置了三台机器的免密登陆认证(克隆会更加方便)
    5. 确保所有机器时间同步
    6. jdk和hadoop的环境变量配置
    复制代码
  2. 防火墙关闭

    [root@qianfeng01 ~]# systemctl stop firewalld
    [root@qianfeng01 ~]# systemctl disable firewalld
    [root@qianfeng01 ~]# systemctl stop NetworkManager
    [root@qianfeng01 ~]# systemctl disable NetworkManager
    
    #最好也把selinux关闭掉,这是linux系统的一个安全机制,进入文件中将SELINUX设置为disabled
    [root@qianfeng01 ~]# vi /etc/selinux/config
    .........
    SELINUX=disabled			
    .........
    复制代码
  3. 主机映射

    [root@qianfeng01 ~]#  vi /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.10.101 qianfeng01  #添加本机的静态IP和本机的主机名之间的映射关系 
    192.168.10.102 qianfeng02
    192.168.10.103 qianfeng03
    复制代码
  4. 免密登录

    # 1. 使用rsa加密技术,生成公钥和私钥。一路回车即可
    [root@qianfeng01 ~]# ssh-keygen -t rsa	
    
    # 2. 使用ssh-copy-id命令
    [root@qianfeng01 .ssh]# ssh-copy-id  root@qianfeng01
    [root@qianfeng01 .ssh]# ssh-copy-id  root@qianfeng02
    [root@qianfeng01 .ssh]# ssh-copy-id  root@qianfeng03
    
    # 3. 进行验证	
    [hadoop@qianfeng01 .ssh]# ssh qianfeng01
    [hadoop@qianfeng01 .ssh]# ssh qianfeng02
    [hadoop@qianfeng01 .ssh]# ssh qianfeng03
    
    # 4. 继续在qianfeng02和qianfeng03生成公钥和私钥,给三台节点拷贝。
    复制代码
  5. 时间同步

    # 三台节点都要执行的命令
    ntpdate ntp.aliyun.com
    复制代码
  6. 安装JDK和配置环境变量

    图文管理系统

配置文件

  1. core-site.xml

    <configuration>
        <!-- 设置namenode节点 -->
        <!-- 注意: hadoop1.x时代默认端口9000 hadoop2.x时代默认端口8020 hadoop3.x时代默认端口 9820 -->
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://qianfeng01:9820</value>
        </property>
        
        <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/usr/local/hadoop-3.3.1/tmp</value>
        </property>
    </configuration>
    复制代码
  2. hdfs-site.xml

    <configuration>
        <!-- 块的副本数量 -->
        <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
        <!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>qianfeng02:9868</value>
        </property>
        <!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局 -->
        <property>
            <name>dfs.namenode.http-address</name>
            <value>qianfeng01:9870</value>
        </property>
    </configuration>
    复制代码
  3. hadoop-env.sh

    export JAVA_HOME=/usr/local/jdk1.8.0_321
    
    # Hadoop3中,需要添加如下配置,设置启动集群角色的用户是谁
    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
    复制代码
  4. works

    qianfeng01
    qianfeng02
    qianfeng03
    复制代码
  5. 分发

    # 我们已经完成了一个节点的环境配置,其他的节点也需要保持完全相同的配置。我们只需要将qianfeng01节点的配置拷贝到其他的节点即可。
    # 分发之前,先检查自己的节点数据文件是否存在
    # 如果之间格式化过集群,那么会在core-site.xml中配置的hadoop.tmp.dir路径下生成文件,先将其删除
    [root@qianfeng01 ~]# stop-dfs.sh
    [root@qianfeng01 ~]# rm -rf $HADOOP_HOME/tmp
    复制代码
    [root@qianfeng01 ~]# cd /usr/local
    [root@qianfeng01 local]# scp -r jdk1.8.0_321/ qianfeng02:$PWD
    [root@qianfeng01 local]# scp -r jdk1.8.0_321/ qianfeng03:$PWD
    
    [root@qianfeng01 local]# scp -r hadoop-3.3.1/ qianfeng02:$PWD
    [root@qianfeng01 local]# scp -r hadoop-3.3.1/ qianfeng03:$PWD
    
    [root@qianfeng01 local]# scp file/profile qianfeng02:/etc/
    [root@qianfeng01 local]# scp file/profile qianfeng02:/etc/
    复制代码

文章底部扫码,免费领取大数据资料大礼包!  

格式化集群

hdfs namenode -format
复制代码

启动集群

start-dfs.sh			# 启动HDFS所有进程(NameNode、SecondaryNameNode、DataNode)
stop-dfs.sh				# 停止HDFS所有进程(NameNode、SecondaryNameNode、DataNode)

hadoop-daemon.sh start namenode				# 只开启NameNode
hadoop-daemon.sh start secondarynamenode	# 只开启SecondaryNameNode
hadoop-daemon.sh start datanode				# 只开启DataNode

hadoop-daemon.sh stop namenode				# 只关闭NameNode
hadoop-daemon.sh stop secondarynamenode		# 只关闭SecondaryNameNode
hadoop-daemon.sh stop datanode				# 只关闭DataNode
复制代码

进程查看

# qianfeng01节点
[root@qianfeng01 hadoop]# jps
13442 NameNode
13618 DataNode
13868 Jps

# qianfeng02节点
[root@qianfeng02 ~]# jps
10514 SecondaryNameNode
10548 Jps
10405 DataNode

# qianfeng03节点
[root@qianfeng03 ~]# jps
10931 DataNode
11001 Jps
复制代码

文章底部扫码,免费领取大数据资料大礼包! 

启动日志查看

​ HDFS的角色有三个: NameNode、SecondaryNameNode、DataNode,启动的时候也会有对应的日志文件生成。如果在启动脚本执行之后,发现对应的角色没有启动起来,那就可以去查看日志文件,检查错误的详情,解决问题。

  • 日志的位置: $HADOOP_HOME/logs

  • 日志的命名: hadoop-username-daemon-host.log

    例如:

    • hadoop-root-namenode-qianfeng01.log => qianfeng01节点上的namenode的日志
    • hadoop-root-datanode-qianfeng02.log => qianfeng02节点上的datanode的日志

集群常见问题

  • 格式化集群时,报错原因

    • 当前用户使用不当
    • /etc/hosts里的映射关系填写错误
    • 免密登录认证异常
    • jdk环境变量配置错误
    • 防火墙没有关闭
  • namenode进程没有启动的原因:

    • 当前用户使用不当
    • 重新格式化时,忘记删除${hadoop.tmp.dir}目录下的内容
    • 网络震荡,造成edit日志文件的事务ID序号不连续
  • datanode出现问题的原因

    • /etc/hosts里的映射关系填写错误
    • 免密登录异常
    • 重新格式化时,忘记删除${hadoop.tmp.dir}目录下的内容,造成datanode的唯一标识符不在新集群中。
  • 上述问题暴力解决: 重新格式化

    如果想重新格式化,那么需要先删除每台机器上的${hadoop.tmp.dir}指定路径下的所有内容,然后再格式化:最好也把logs目录下的内容也清空,因为日志内容已经是前一个废弃集群的日志信息了,留着也无用。

案例演示

  1. 数据准备

    [root@qianfeng01 ~]# mkdir input && cd input
    [root@qianfeng01 input]# echo "hello world hadoop linux hadoop" >> file1
    [root@qianfeng01 input]# echo "hadoop linux hadoop linux hello" >> file1
    [root@qianfeng01 input]# echo "hadoop linux mysql linux hadop" >> file1
    [root@qianfeng01 input]# echo "hadoop linux hadoop linux hello" >> file1
    [root@qianfeng01 input]# echo "linux hadoop good programmer" >> file2
    [root@qianfeng01 input]# echo "good programmer qianfeng good" >> file2
    复制代码
  2. 上传到集群

    # 将数据上传到HDFS
    [root@qianfeng01 input]# hdfs dfs -put ~/input/ /
    # 检查是否已经上传成功
    [root@qianfeng01 input]# hdfs dfs -ls -R /
    drwxr-xr-x   - root supergroup          0 2022-01-28 13:11 /input
    -rw-r--r--   1 root supergroup         31 2022-01-28 13:11 /input/file
    -rw-r--r--   1 root supergroup        127 2022-01-28 13:11 /input/file1
    -rw-r--r--   1 root supergroup         59 2022-01-28 13:11 /input/file2
    复制代码
  3. 执行任务

    [root@qianfeng01 input]# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
    复制代码
  4. 查看结果

    [root@qianfeng01 input]# hdfs dfs -cat /output/*
    good	3
    hadoop	9
    hadop	2
    hello	3
    linux	10
    mysql	2
    programmer	2
    qianfeng	1
    world	1
    

 也可以看视频:

千锋教育大数据全套视频教程800集完整版(学完可就业/入门到精通)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【OpenCv • c++】几何检测 —— 霍夫变换 | 霍夫直线检测 | 霍夫线变化

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

浅谈YUV444、YUV422、YUV420

本期将会给大家介绍YUV相关基础知识&#xff0c;同时也介绍威创网络分布式系统的卓越色彩处理技术。 1.什么是YUV色彩空间 2.YUV采样格式 3.YUV不同采样格式对图像画质的影响分析 一、什么是YUV色彩空间? YUV是视频、图片、相机等应用中常常使用的一类图像格式&#xff0c;是…

【python案例】获取IP代理数据,筛选出符合需求的IP

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 我们为什么要IP代理呢&#xff1f; 当采集数据, 批量采集数据, 请求速度过快, 网站可能会把你IP封掉 <你的网络进不去这个网站> IP代理换一个IP, 再去采集请求数据 开发环境: 解释器版本: python 3.8 代码编辑…

Vicuna:斯坦福开源一个性能相当于90%ChatGPT的聊天机器人

自从Meta公司发布LLaMA以来&#xff0c;围绕它微调和开发的模型越来越多&#xff0c;这得益于它的性能和效果&#xff0c;2023年3月份发布的草泥马&#xff08;Alpaca&#xff09;是由Meta的LLaMA 7B微调而来的全新模型&#xff0c;仅用了52k数据&#xff0c;性能约等于GPT-3.5…

欧奈尔杯柄形态选股公式,突破杯柄高点发出信号

杯柄形态是由美国著名的成长股投资大师威廉欧奈尔提出的&#xff0c;在其经典著作《笑傲股市》中有详细介绍。 根据欧奈尔在书中的描述&#xff1a; 从侧面观察其轮廓时&#xff0c;最重要的价格形态之一看起来就像是一个带柄的茶杯。杯状形态可以持续7~56周不等&#xff0c;但…

数据结构选择题(难题题解) 第五章 树

5.2 14. 法1&#xff1a;少一个叶子再多一个叶子&#xff0c;欠考虑了 选B 法2&#xff1a; 法三&#xff1a; 5.3 23.选D A. 如果是根 直接找孩子就能找到后继&#xff1b;如果是左孩子&#xff0c;有孩子就找孩子&#xff0c;无孩子&#xff0c;指针是空&#xff0c…

ROS2 msg和srv CMake编写注意事项

ROS2使用msg和srv可以参考官网&#xff1a; 工程文件cpp所包含的头文件&#xff0c;其中 cpp_pubsub_self/msg/test.hpp 为msg消息消息生成的头文件&#xff0c;具体的可以参考官网 注意事项&#xff1a; 在 ROS2 当中&#xff0c;使用 msg 和 srv 消息文件格式的时候&#…

单点登录三:添加RBAC权限校验模型功能理解及实现demo

1、RBAC权限模型 RBAC&#xff08;Role-Based Access Control&#xff09;是一种基于角色的访问控制模型&#xff0c;用于管理系统中用户的权限和访问控制。它将用户、角色和权限之间的关系进行了明确的定义&#xff0c;以实现灵活的权限管理和控制。 1.1、RBAC模型主要包括以…

这才是CSDN最系统的网络安全学习路线(建议收藏)

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

异步复位同步释放

(1条消息) 芯片设计全流程知识点总结_GGbao_的博客-CSDN博客 异步复位同步释放在always语句块里为&#xff1a; 当异步复位信号到来时&#xff0c;寄存器 reg_1 会被直接拉低&#xff0c;这是不会产生问题的&#xff0c;当rstn下降沿和clk上升沿同时到来时&#xff0c;如果rstn…

EduSoho 网校系统部署

目录 一、初始化环境二、安装 Nginx三、安装 MySQL四、安装 PHP五、上线 EduSoho六、验证FAQ 一、初始化环境 1、安装wget 如果系统已安装wget,请跳过此步骤 yum install wget2、关闭防火墙/Selinux systemctl stop firewalld.service systemctl disable firewalld.service…

Win32通用控件,加载进程(PE查看器)项目初步

在本专栏上一篇文章中带领大家学习了对话框的创建&#xff0c;并且在项目中创建出了对话框。在这一篇文章中&#xff0c;我将带领大家学习Win32通用控件&#xff0c;了解_WM_NOTIFY消息&#xff0c;并且带领大家初步写出课程中加载Windows所有进程的应用程序的雏形&#xff0c;…

因为懒,我用了“低代码”打下手

目录 一、前言 二、工具介绍 三、平台特点 四、如何使用JNPF&#xff1f; 五、低代码平台的选择参考 六、总结 一、前言 「一个优秀的开发者&#xff0c;一定是会利用各种工具来提升自己的开发效率。」 前段时间&#xff0c;体验了很多国内前沿的低代码平台&#xff0c;在…

Fiddler抓包工具之Fiddler界面主菜单功能介绍

Fiddler界面主菜单功能介绍 File菜单 File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获&#xff08;capture&#xff09;,也可以加载或存储捕获的流量 &#xff08;1&#xff09;Capture Traffic&#xff1a;默认勾选&#xff0c;勾选此项才可抓包&#xff…

Linux ALSA音频工具

参考&#xff1a; ALSA 音频工具 amixer、aplay、arecord Linux Alsa ALSA的配置文件 音频录制——arecord 音频播放——aplay 音频配置——amixer alsamixer与amixer的区别 alsamixer是Linux音频框架ALSA工具之一&#xff0c;用于配置音频各个参数; alsamixer是基于文本图形…

APP中有html5页面的时候,怎么进行元素定位

测试app的时候&#xff0c;我们知道可以通过UI Automator Viewer进行元素定位 但是很多app中都会内嵌h5页面&#xff0c;这个时候定位就会变成下图这样&#xff1a; 第一步&#xff1a; 在手机中打开当前app的h5界面&#xff0c;使用usb连接电脑后&#xff0c; 第二步&#x…

聚焦金融行业网络安全|安全狗亮相知虎科技生态大会

5月18日&#xff0c;知虎科技生态大会在上海顺利举办。作为国内云原生安全领导厂商&#xff0c;安全狗也受邀出席此次活动。 据悉&#xff0c;此次大会邀请了来自国内顶级安全厂商的安全专家介绍从网络安全、应用安全、业务安全、数据安全、资金安全、通信安全等六个方面全方位…

抖音账号矩阵系统源码/技术开发搭建私有化部署开源

抖音SEO矩阵系统是基于抖音平台的搜索引擎优化技术的一种系统&#xff0c;其主要作用是通过一系列的技术手段&#xff0c;提高抖音视频的曝光和排名&#xff0c;使其获得更多的流量和粉丝。在本文中&#xff0c;我们将介绍抖音SEO矩阵系统的开发技术&#xff0c;包括系统设计、…

ElasticSearch集成SpringBoot实践及数据同步

一 前言 ES 全称 Elasticsearch 是一款分布式的全文搜索引擎&#xff0c;在互联网公司中&#xff0c;这款搜索引擎一直被程序员们所推崇。常见的使用场景如ELK日志分析&#xff0c;电商APP的商品推荐&#xff0c;社交APP的同城用户推荐等等。今天结合自己平时的一些学习对它与…

分布式事务解决方案Seata-1.6.0版本Docker安装

1. 简介 为什么要安装1.6.0 版本&#xff1f; 因为低版本Seata只支持单表的DDL语句&#xff0c;只有在在1.6.0版本及以上才支持 UPDATE JOIN。 注&#xff1a;1.6.0版本与 低版本的主要区别在于配置文件格式的修改&#xff0c;一站式解决方案&#xff1a;分布式事务解决方案Sea…