(大数据开发随笔9)Hadoop 3.3.x分布式环境部署——全分布式模式

索引

    • 完全分布式模式
      • 守护进程布局
      • 集群搭建准备
        • 总纲
        • 配置文件
        • 格式化集群
        • 启动集群
      • 集群控制命令
        • 集群启停
        • 进程查看
        • 启动日志查看
        • 集群常见问题
      • 案例演示:WordCount

完全分布式模式

  • 分布式文件系统中,HDFS相关的守护进程也分布在不同的机器上,如:
    • NameNode守护进程,尽可能单独部署在一台硬件性能较好的机器中
    • 其他的每台机器上都会部署一个DataNode进程,一般的硬件环境即可
    • SecondaryNameNode守护进程最好不要和NameNode在同一台机器上

守护进程布局

NameNodeDataNodeSecondaryNameNode
主机名1
主机名2
主机名3

集群搭建准备

总纲

  • 三台机器的防火墙关闭
    • 最好把selinux也关掉,vi /etc/selinux/config——SELINUX=disabled
  • 三台机器网络配置通畅(NAT模式,静态IP,主机名的配置)
  • /etc/host文件配置了ip和hostname的映射关系
  • 配置了三台机器的免密登录认证
  • 时间同步
  • jdk和hadoop环境变量配置

配置文件

  • `cd $HADOOP_HOME/etc/hadoop``

    • ``vi core-site.xml`

      <configuration>
          <!-- 设置namenode节点 -->
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://lanr:9820</value>
          </property>
          <!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/usr/local/hadoop-3.3.1/tmp</value>
          </property>
      </configuration>
      
      
    • vi hdfs-site.xml

      <configuration>
          <!-- 块的副本数量 -->
          <property>
              <name>dfs.replication</name>
              <value>3</value>
          </property>
          <!-- secondarynamenode守护进程的http地址;主机名:端口号 -->
          <property>
              <name>dfs.namenode.secondary.http-address</name>
              <value>lanr2:9868</value>
          </property>
          <!-- namenode守护进程的http地址;主机名:端口号 -->
          <property>
              <name>dfs.namenode.http-address</name>
              <value>lanr:9870</value>
          </property>
      </configuration>
      
      
    • vi hadoop-env.sh

      export JAVA_HOME=/usr/local/jdk1.8.0_321
      
      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
      
    • vi workers(删除已有的localhost)

      主机名1
      主机名2
      主机名3
      
    • 分发:其他节点也需要保持相同的配置

      rm -rf $HADOOP_HOME/tmp
      
      cd /usr/local/
      scp -r jdk1.8.0_321/ hadoop-3.3.1/ lanr2:$PWD
      scp -r jdk1.8.0_321/ hadoop-3.3.1/ lanr3:$PWD
      
      scp /etc/profile lanr2:/etc/
      scp /etc/profile lanr3:/etc/
      

格式化集群

  • hdfs namenode -format(仅在主机名1上运行)

启动集群

  • start-dfs.sh(仅在主机名1上运行)

  • jps分别查看三个机器的节点:

    image-20230315113746763

    image-20230315113756979

    image-20230315113804920

  • 访问:192.168.{你的网段}.101 查看节点运行状态

    image-20230315114117539

集群控制命令

集群启停

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

# hdfs --daemon start 单独启动一个进程
# 补充:daemon译为,守护进程
# 该命令只会启动当前机器上的进程,若当前机器上没有部署特定节点,则无法启动
hdfs --daemon start namenode
hdfs --daemon start secondarynamenode
hdfs --daemon start datanode

# hdfs --daemon stop 单独停止一个进程
hdfs --daemon stop namenode
hdfs --daemon stop secondarynamenode
hdfs --daemon stop datanode


hdfs --workers --daemon start datanode # 启动所有机器上的datanode
hdfs --workers --daemon stop datanode # 停止所有机器上的datanode
# 在哪台机器上运行都可以

进程查看

jps # 查看当前机器上的进程

# 查看所有机器上的进程情况
cd /opt/
mkdir bin
cd bin
vi jps-cluster.sh # 创建脚本

# 添加如下程序:
# -----------------复制以下内容----------------------
#!/bin/bash

HOSTS=( lanr lanr2 lanr3 )

for HOST in ${HOSTS[*]}
do
    echo "---------- $HOST ----------"
    ssh -T $HOST << DELIMITER
    jps | grep -iv jps
    exit
DELIMITER

done
# -----------------复制以上内容----------------------

sudo chmod a+x jps-cluster.sh # 赋予执行权限
ln -s /opt/bin/jps-cluster.sh /usr/bin/ # 软链接
  • 启动集群:start-dfs.sh;查看进程:jps-cluster.sh

    image-20230315121018354

启动日志查看

  • 启动节点进程时若出现问题,可以查看日志文件
  • 日志的位置:$HADOOP_HOME/logs/
  • 日志的命名:hadoop-username-daemon-hostname.log
  • 补充:shift g跳转到文件最后;gg跳转到文件开头
  • 查找error、warn日志:esc——/error——enter——n查找下一个,shift n查找上一个

集群常见问题

  • 格式化集群时报错:
    • 当前用户使用不当
      • 普通用户可能没有在hadoop安装路径下的权限
    • /etc/hosts 里映射关系错误
    • 免密登录认证异常
    • jdk环境变量配置错误
    • 防火墙没有关闭
  • namenode进程没有启动:
    • 当前用户使用不当
    • 重新格式化时,忘记删除${hadoop.tmp.dir}目录下的内容
    • 网络震荡,造成edit日志文件的事务ID序号不连续
  • datanode出现问题:
    • /etc/host 里映射关系错误
    • 免密登录异常
    • 重新格式化时,忘记删除${hadoop.tmp.dir}目录下的内容,造成datanode的唯一标识符不在集群中
  • 上述问题的暴力解决方法:重新格式化
    • 若想重新格式化,先需要删除每台机器上的${hadoop.tmp.dir}指定路径下的所有内容,然后再进行格式化;最好把logs目录下的内容也清空
      • cd $HADOOP_HOME/——rm -rf logs/ tmp/ (三个节点都要进行删除)
      • rm -rf dfs/data/* dfs/name/* (三个节点都要进行删除)
      • 格式化集群:hdfs namenode -format (仅在主机名1上运行)

案例演示:WordCount

  • 数据准备

    cd ~
    mkdir input && cd input
    echo "hello world hadoop linux hadoop" >> file1
    echo "hadoop linux world hadoop linux hadoop" >> file1
    echo "hello world hadoop linux hadoop" >> file1
    echo "hello world hadoop linux hadoop" >> file1
    echo "hello good programmer hadoop linux hadoop" >> file2
    echo "hello world hadoop linux hadoop ok nice" >> file2
    
  • 上传到集群

    cd ~
    hdfs dfs -put input/ /
    hdfs dfs -ls -R /  # 递归查看hdfs上的文件夹与文件
    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output  # 该input、output文件夹是在hdfs上的,不是linux本地的 且输出路径不能已存在
    hdfs dfs -cat /output/*  # 查看结果
    

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

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

相关文章

tp5实现导入excel表到数据库

hello&#xff0c;大家好&#xff0c;好长时间没有更新文章了。最近一直在忙着做项目。所以断更了。 那么好&#xff0c;各位老铁是否想要实现导入导出的功能 请关注我&#xff0c;解密如何实现导入导出&#xff0c; 那么今天先来讲一下用thinkphp5.0 如何实现Excel表格导入数据…

js 事件流程

描述 JavaScript 的执行是单线程的&#xff0c;后面的任务需要等待前面的任务完全完成后&#xff0c;再去执行。DOM 事件&#xff08;文件的加载等&#xff09;、定时器、网络请求等事件&#xff0c;并不会消耗 CPU&#xff0c;这些事件无需等候&#xff0c;所以出现了异步。主…

【Unity VR开发】结合VRTK4.0:创建一个按钮(Option Button)

语录&#xff1a; 如同天上降魔主&#xff0c;真是人间太岁神。 前言&#xff1a; 选项按钮是一种提供多项选择选项的方法&#xff0c;其中只有一个按钮可以处于激活状态&#xff0c;激活另一个按钮时将确保组中的所有其他按钮都已停用。我们可以使用嵌套在预制件中的预制件来实…

C++命名空间域namespace与域作用限制符: :,cin,cout输入输出简单介绍

TIPS C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等C总计63个关键字&#xff0c;C语言32个关键字&#xff0c;具体没有必要先不去管它 域&#xff0c;命名空间域与namespace关键字 cpp需要解决的第一…

数据库中的视图及三级模式结构

文章目录 一、视图二、数据库三级模式结构 一、视图 简单地说&#xff0c;视图可以看成是一个窗口&#xff0c;它所反映的是一个表或若干表的局部数据&#xff0c;可以简化查询语句。视图一经定义&#xff0c;用户就可以把它当作表一样来查询数据。 但视图和基本表不同&#…

400以内的蓝牙耳机哪款好?400以内蓝牙耳机排行榜

谈起TWS&#xff0c;无论是传统的音频厂商还是手机厂商&#xff0c;都是其不可或缺的重要产品线&#xff0c;现在很多许多蓝牙耳机都不是千篇一律得形状&#xff0c;市场也鲜有商家在外观上下功夫&#xff0c;下面分享几款400元以内&#xff0c;内外兼具的耳机品牌。 一、南卡…

Pytorch实现图像风格迁移(一)

图像风格迁移是图像纹理迁移研究的进一步拓展&#xff0c;可以理解为针对一张风格图像和一张内容图像&#xff0c;通过将风格图像的风格添加到内容图像上&#xff0c;从而对内容图像进行进一步创作&#xff0c;获得具有不同风格的目标图像。基于深度学习网络的图像风格迁移主要…

LeetCode热题HOT100:76. 最小覆盖子串,84.柱状图中最大的矩形、96. 不同的二叉搜索树

LeetCode 热题 HOT 100 76. 最小覆盖子串 题目&#xff1a;给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字…

ADManager Plus:简化 Active Directory 管理的完美工具

在企业中&#xff0c;Active Directory&#xff08;AD&#xff09;是一个非常重要的组件&#xff0c;用于管理和控制所有计算机和用户的访问权限。然而&#xff0c;AD的管理和维护需要一定的技术能力和时间成本。为了简化这个过程&#xff0c;ManageEngine 推出了 ADManager Pl…

Leetcode-二叉树

1.中序-后序构建二叉树 106. 从中序与后序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09; 1. 首先根据后序&#xff08;左右中&#xff09;确定顶点元素&#xff1b; 2. 根据顶点元素划分中序序列&#xff1b; 3. 根据划分中序序列中-左子树的长度&#xff0c;进…

数据类型及变量的定义、使用和注意事项

数据类型 计算机存储单元 变量的定义格式&#xff1a; 数据类型 变量名数据值; 我们知道计算机是可以用来存储数据的&#xff0c;但是无论是内存还是硬盘&#xff0c;计算机存储设备的最小信息单元叫“位( bit ) "&#xff0c;我们又称之为“比特位”&#xff0c;通常用…

除了Java,还可以培训学习哪些IT技术?

除了Java&#xff0c;还可以培训学习哪些IT技术&#xff1f; 转行IT学Java似乎已经成为很多人的首选&#xff0c;原因无非是开发技术含量高、开发有前景、开发是一个互联网企业的核心岗位&#xff0c;最重要的是开发薪资待遇高。但其实只单纯因为薪资选择Java的话&#xff0c;小…

百万赞同:网络安全为什么缺人? 缺什么样的人?

1.网络安全为什么缺人? 缺人的原因是有了新的需求 以前的时候&#xff0c;所有企业是以产品为核心的&#xff0c;管你有啥漏洞&#xff0c;管你用户信息泄露不泄露&#xff0c;我只要做出来的产品火爆就行。 这一切随着《网络安全法》、《数据安全法》、《网络安全审查办法》…

什么是机器学习?

目录 简介 机器学习可以做什么 机器学习未来的趋势 总结 简介 机器学习是一种人工智能领域中的技术&#xff0c;其主要目的是让计算机能够自动进行模式识别、数据分析和预测。 机器学习的起源可以追溯到20世纪50年代&#xff0c;当时美国的Arthur Samuel在一篇论文中提出了相关…

静态时序分析Static Timing Analysis4——多时钟域和多时钟时序检查

文章目录 前言一、多时钟域时序分析1、慢时钟域到快时钟域1.1 建立时间检查1.2 保持时间检查1.3 多周期检查 2、快时钟域到慢时钟域2.1 建立时间检查2.2 保持时间检查2.3 合理的约束 3、总结 二、多时钟1、整数倍关系2、非整数倍关系 三、相位移动 前言 2023.4.12 这里讲的多时…

助力研发效能变革,第七届Techo TVP 开发者峰会圆满落下帷幕

引言 在互联网数字企业结束“野蛮扩张”、追求高质量增长的今天&#xff0c;研发效能已然成为企业关注的核心命题。伴随着云原生概念在软件领域的落地生根&#xff0c;云原生正驱动软件应用设计、实现、部署及运维方式的巨变&#xff0c;为研发效能治理带来了新的挑战与机遇&am…

vue-router3.0处理页面滚动部分源码分析

在使用vue-router3.0时候&#xff0c;会发现不同的路由之间来回切换&#xff0c;会滚动到上次浏览的位置&#xff0c;今天就来看看这部分的vue-router中的源码实现。 无论是基于hash还是history的路由切换&#xff0c;都对滚动进行了处理&#xff0c;这里分析其中一种即可。 无…

SpringBoot

文章目录 创建SpringBoot项目快速入门创建Controller启动项目 打包项目创建工件 SpringBoot概述SpringBoot优点起步依赖切换Web服务器 配置文件配置文件application.propertiesapplication.ymlapplication.yaml 三种配置文件优先级yaml格式读取配置数据&#xff08;yml为例&…

windows系统管理_Windows server 2016 组管理与授权

组账户的概述 在 windows 服务器中&#xff0c;当我们需要为多个用户设置相同的权限时&#xff0c;一个一个的逐一设置会比较 麻烦&#xff0c;这个时候我们就需要用到另一种模式&#xff0c;组账户&#xff0c;使用此账户来进行简化操作。 在以后的职场中&#xff0c;每家公司…

Windows环境下调试DAB-DETR与Deformable-DETR

先前都是在服务器上运行DETR的相关程序&#xff0c;服务器使用的是Linux&#xff0c;所以运行较为简单&#xff0c;但如果想要简单的debug的话就没必要使用服务器了&#xff0c;今天便来在Winodws环境下调试DETR类项目&#xff0c;这里以Deformable-DETR与DAB-DETR为例。 首先是…