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

news/2024/12/6 18:44:52/

索引

    • 完全分布式模式
      • 守护进程布局
      • 集群搭建准备
        • 总纲
        • 配置文件
        • 格式化集群
        • 启动集群
      • 集群控制命令
        • 集群启停
        • 进程查看
        • 启动日志查看
        • 集群常见问题
      • 案例演示: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_321export 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/tmpcd /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:$PWDscp /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 datanodehdfs --workers --daemon start datanode # 启动所有机器上的datanode
hdfs --workers --daemon stop datanode # 停止所有机器上的datanode
# 在哪台机器上运行都可以

进程查看

jps # 查看当前机器上的进程# 查看所有机器上的进程情况
cd /opt/
mkdir bin
cd bin
vi jps-cluster.sh # 创建脚本# 添加如下程序:
# -----------------复制以下内容----------------------
#!/bin/bashHOSTS=( lanr lanr2 lanr3 )for HOST in ${HOSTS[*]}
doecho "---------- $HOST ----------"ssh -T $HOST << DELIMITERjps | grep -iv jpsexit
DELIMITERdone
# -----------------复制以上内容----------------------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/*  # 查看结果
    

http://www.ppmy.cn/news/42690.html

相关文章

什么是数组?数组常用API方法

什么是数组&#xff1f; 索引从0开始,并且存放相同结构元素的集合叫数组&#xff0c;数组&#xff08;Array&#xff09;是有序的元素序列&#xff0c;数据的组合&#xff0c;也是一种最简单的复合数据类型&#xff0c;它是有序数据的集合&#xff0c;数组中的每个元素具有相同…

C++内存管理详解

大家好&#xff0c;这里是bang_bang&#xff0c;今天来分享下内存管理的知识。 目录 1.C/C内存分布 2.C内存管理方式 2.1new/delete操作内置类型 2.2new/delete操作自定义类型 3.operator new与operator delete函数 3.1operator new 3.2operator delete 4.new和delete的实现…

Spring之寻找注入点详解

Spring在属性填充过程中&#xff0c;需要判断属性和方法是否为一个注入点&#xff0c;然后根据注入点找到对象赋值或者创建Bean进行赋值。 1、最外层属性赋值 public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) {// 寻找注入点…

【ROS2指南-2】入门 turtlesim 和 rqt

目标&#xff1a;安装并使用 turtlesim 包和 rqt 工具为即将到来的教程做准备。 教程级别&#xff1a;初学者 时间&#xff1a; 15分钟 内容 背景 先决条件 任务 1 安装turtlesim 2 启动turtlesim 3 使用turtlesim 4 安装rqt 5 使用 rqt 6 重新映射 7 关闭turtlesim …

第一次习题总结

目录 求第K个数 求逆序对的数量 数的三次方根 一维前缀和 二维前缀和&#xff08;子矩阵的和&#xff09; 求第K个数 思路&#xff1a;用快速选择&#xff0c;时间复杂度为O(N) sl和sr是左边和右边数的个数&#xff0c;当k<sl&#xff0c;即倒数第K个数在左边范围内&#x…

96年阿里P7晒出工资单:狠补了这个,真香...

最近一哥们跟我聊天装逼&#xff0c;说他最近从阿里跳槽了&#xff0c;我问他跳出来拿了多少&#xff1f;哥们表示很得意&#xff0c;说跳槽到新公司一个月后发了工资&#xff0c;月入5万多&#xff0c;表示很满足&#xff01;这样的高薪资着实让人羡慕&#xff0c;我猜这是税后…

Debian 10配置apt源常见问题

目录 一&#xff1a;配置本地apt源没有发现文件 解决方案 二&#xff1a;apt下载bind9报错E: Package bind9 has no installation candidate 方法一&#xff1a; 方法二&#xff1a;更新不报错但是安装依旧报错E: Package bind9 has no installation candidate 一&#xff…

( “树” 之 DFS) 101. 对称二叉树 ——【Leetcode每日一题】

101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 提示&#xff1a…