云服务器搭建Hadoop分布式

文章目录

    • 1.服务器配置
    • 2.Java环境
    • 3. 安装Hadoop
    • 4. 集群配置
    • 5. 编写集群的启动脚本

1.服务器配置

服务器主机名配置
115.157.197.82s110核
115.157.197.84s210核
115.157.197.109s310核
115.157.197.31s410核
115.157.197.60gracal10核

所有的软件安装在/opt/module下,软件安装包在/opt/softs下

2.Java环境

  • 所有的服务器的java统一1.8版本,查看java版本

    java --version
    
    • ​ 若存在java环境不统一,或者没有1.8版本的jdk

      • 无1.8版本的java

         yum install -y java-1.8.0-openjdk*
        
      • 环境不统一

        #查看java版本
        alternates --config java
        #选择1.8版本的数字
        

相关的JAVA_HOME、Hadoop_HOME环境变量都保存在/etc/profile.d/my_env.sh

image-20231020175203487

3. 安装Hadoop

  • 确保Hadoop统一版本:hadoop3.1.3
  • 编写文件分发脚本,可以在一台服务器分发到其他服务器:xsync脚本,在/home/gaochuchu/bin目录下

4. 集群配置

  • 各个组件的分布情况

    s1s2s3s4gracal
    HDFSNameNode DataNameNodeDataNameNodeSecondaryNameNode DataNameNodeDataNameNodeDataNameNode
    YARNNodeManagerResourceManager NodeManagerNodeManagerNodeManagerNodeManager
  • 常用端口配置 (分Hadoop2.x和Hadoop3.x的区别)

    端口名称Hadoop2.xHadoop3.x
    NameNode内部通信端口8020/90008020/
    NameNode HTTP UI500709870
    MapReduce查看执行任务端口80888088(容易和框架端口冲突,本文配置的7666)
    历史服务器通信端口1988819888
  • 在客户端机器(笔记本)配置ip和服务器主机名的映射,希望能通过主机名+端口号在浏览器访问各个Web页面

    • 问题:通过s2:7666无法访问ResourceManger的web UI,而通过直接的ip:7666又可以访问其webUI

      • 遇到这个问题我无法理解为什么会出问题
      • 漫长的排错过程:
        • 1.检查了服务器之间的ip和主机名的映射,各个服务器主机之间通过主机名可以ping通,说明映射没有问题

        • 2.检查客户端mac本机的hosts文件映射未发现问题,并且在客户端的终端也能ping通各个主机名,说明映射没有问题

        • 3.且查看各个服务器的防火墙也处于关闭状态

        • 4.通过netstat -nltp|grep 7666查看端口的监听情况,也是正常监听状态

        • 5.在网上搜索很多相关解决方案:关闭防火墙,设置etc/sysconfig/selinux的级别为disable,都没有结果

        • 因此,我认为应该在客户端本机出现问题,验证问题过程

          6.1 发现在本地主机telnet s2 7666可以成功访问,但是curl s2:7666没有输出页面的任何信息

          6.2 使用cur -v s2:7666查看相关信息

          image-20231022220729482
          • 发生地址的重定位,然后使用命令curl -v http://s2:7666/cluser

            成功返回了相关的html信息,说明页面其实是可以访问的

          6.3 但是浏览器端还是无法访问:后查询到浏览器可能配置了代理服务器,而’curl’命令未配置代理。代理服务器会烦扰浏览器的访问。

          因此我关闭了VPN代理,成功访问到s2:7666页面!!

          以后VPN代理一定要慎用!!!排查了这么久发现最后居然是代理问题

  • 启动集群测试

    • 启动HDFS

      [gaochuchu@s1 hadoop-3.1.3]$ sbin/start-dfs.sh
      
    • 启动YARN

      [gaochuchu@s1 hadoop-3.1.3]$ sbin/start-yarn.sh
      
      • 问题:

        image-20231020173832878

      • 解决:

        • 这里的hadoop配置的是root用户创建的hadoop环境,本地用户无权限
        • 修改环境变量/etc/profile,注释配置的HADOOP_HOME,重新source
  • 运行hadoop自带的wordcount示例程序报错,并且一直卡在Running Job位置,报错信息如下:

    java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as [某ip]:9866at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:134)at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:110)at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1778)at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1679)at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:716)......Caused by: java.net.NoRouteToHostException: No route to hostat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:700)at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:804)at org.apache.hadoop.ipc.Client$Connection.access$3800(Client.java:421)at org.apache.hadoop.ipc.Client.getConnection(Client.java:1606)at org.apache.hadoop.ipc.Client.call(Client.java:1435)... 19 more
    
    • 如何解决这种问题?
      • 注意报错信息:No route to host ,说明没有到host的路由,排查思路,确定与对应服务器端口是否联通

      • 首先测试某ip自身9866端口是否联通,说明联通 image-20231020235145661
        说明s1服务器和…31:9866可能是不连通的

      • 经查找相关资料说明是…31服务器的icmp(Internet Control Message Protocol)被禁用导致。
        命令查看iptable是否有防火墙设置:

        iptables -L INPUT --line-numbers
        

        发现:

        image-20231020233954593

        命令删除这条记录:

        iptables -D INPUT 28
        

5. 编写集群的启动脚本

  • 因为每次集群启动需要在NameNode节点的HADOOPHOME目录下使用命令启动HDFS

    sbin/start-dfs.sh
    
  • 在Yarn节点上通过命令启动Yarn(ResourceManager)

     sbin/start-yarn.sh
    
  • 配置了历史服务器,还需要在历史服务器的节点上使用命令启动历史服务器

    mapred --daemon start historyserver
    
  • 相应的停止集群也需要通过以下三个命令来停止集群

    sbin/stop-dfs.sh
    sbin/stop-yarn.sh
    mapred --daemon stop historyserver
    
  • 因此,可以编写相关的脚本启停(HDFS Yarn Historyserver)

    • /home/gaochuchu/bin 目录下编写myhadoop.sh脚本启停Hadoop集群

      #启动Hadoop集群
      myhadoop.sh start
      #停止Hadoop集群
      myhadoop.sh stop
      
  • 服务器各节点的状态都需要通过在笔不同服务器上通过jps命令查看,比较麻烦

    • /home/gaochuchu/bin 目录下编写jpsall脚本,可以查看所有服务器上的节点状态

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

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

相关文章

3BHE003855R0001 UNS2882A 用于嵌入式/工业用途的人工智能盒

3BHE003855R0001 UNS2882A 用于嵌入式/工业用途的人工智能盒. 无风扇iBOX 1200系列包括型号iBOX-1265 UE/iBOX-1245 UE/iBOX-1215 UE,由第12代英特尔酷睿i7/i5/i3处理器(Alder Lake-P)提供动力,通过英特尔Iris Xe显卡和两个DDR4 3200MHz SO-DIMM提供高达…

ubuntu安装pgsql

ubuntu安装postgresSQL 官网地址: https://www.postgresql.org/download/ 1.安装 # 添加源 sudo sh -c echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list # 安装数字签名 w…

麒麟信安受邀协办2023广电五舟行业交流大会,共建信创产业新生态

10月20日,广州广电五舟科技股份有限公司(简称“广电五舟”)主办的行业交流大会召开,大会围绕智能算力新趋势、共建新生态价值体系、算力发展与生态建设的关系、元宇宙应用展望与生态融合等话题展开深入探讨。麒麟信安作为沈阳站和…

Golang Testify介绍

简介 Golang是一种编译型语言,由Google开发,已经成为了Web开发领域中非常受欢迎的语言之一。在Golang生态系统中,有许多用于编写测试的框架和库,其中Testify是其中一个非常流行的测试框架。 Testify是一个用于编写测试的扩展包&…

【广州华锐互动】三维全景3D消防科普展馆

在我们的日常生活中,火灾安全是一个不容忽视的重要问题。然而,由于缺乏对火灾的了解和应对技巧,许多人在面对火灾时往往感到无助和恐慌。为了解决这个问题,广州华锐互动开发了三维全景3D消防科普展馆,它是一个以虚拟现…

CorelDRAW和InDesign软件的功能区别

Corel和Ilustrator都是基于矢量的排版软件。另一方面,InDesign的主要目的是基于包含不同基本网格设计,以及标题和段落样式信息的母版页来制作多页面布局,例如杂志或书籍,这为了使出版物保持一致。 CorelDRAW图形套件是加拿大Core…

hello react

react中文官网 一、什么是react React是一个由Facebook开源的JavaScript库,用于构建用户界面。它基于组件化的思想,将界面拆分成多个独立的、可复用的组件,并通过组件之间的交互构建整个用户界面。React使用虚拟DOM(Virtual DOM…

不拼花哨,只拼实用:unittest指南,干货为王!

Python为开发者提供了内置的单元测试框架 unittest,它是一种强大的工具,能够有效地编写和执行单元测试。unittest 提供了完整的测试结构,支持自动化测试的执行,能够对测试用例进行组织,并且提供了丰富的断言方法。最终…

接口自动化测试工具大全

在互联网时代,服务端测试已经成为一个重要的产品保障手段,各对此公司实施的方法和技术也不同,本文我们就来讨论一下。 互联网服务端接口自动化是各个公司都需要一部分业务,如何快速高效地完成接口测试呢? 以帮助大家实…

Android 13.0 系统设置 app详情页默认关闭流量数据的开关

1.概述 在13.0的系统产品开发中,移动流量消耗也是关于产品优化的一个方面,由于产品需求需要对app详情页的流量进行管控默认关闭流量开关,不让流量无故流失,所以需要从流量开关分析问题流量打开流程,然后关闭 2.系统设置 app详情页默认关闭流量数据的开关的核心类 package…

redhat配置本地yum源(超详细,超简单)

目录 ​编辑 1、硬件配置 2、配置本地yum源 1、硬件配置 注意这里要使用iso文件,并且要选择启动时连接 2、配置本地yum源 创建本地源文件夹 mkdir -p /mnt/cdrom 挂载镜像文件至指定的目录 mount /dev/cdrom /mnt/cdrom 备份本地源 cp -rf /etc/yum.repos.d…

星途星纪元 ES,用艺术思维表达工程技术

10月8日,星途星纪元ES携手世界级成都爱乐首席乐团、旅德青年钢琴家王超,在成都打造了一场“万物星声”超舒适音乐会视听盛宴。这是星途星纪元首次跨界音乐圈、牵手音乐挚友,共同演绎音乐和汽车的美学协奏曲,开启高端超舒适美学新纪…

如何解决git 发生冲突的场景?

一、是什么 一般情况下,出现分支的场景有如下: 多个分支代码合并到一个分支时多个分支向同一个远端分支推送 具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称 如果两个分支中…

vue项目关闭eslint

vue.config.js 中 设置lintOnSave: false;如果有.eslintrc.js 还需将extends清空 // vue.config.jsmodule.exports {lintOnSave: false } // .eslintrc.js module.exports {extends: [] }

Python树莓派开发

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

道可云元宇宙每日资讯|元宇宙行业产教融合共同体成立仪式举行

道可云元宇宙每日简报(2023年10月23日)讯,今日元宇宙新鲜事有: “数字世界‘元’启未来”元宇宙产业发展圆桌会议在南通举行 10月21日下午,以“数字世界‘元’启未来”为主题的元宇宙产业发展圆桌会议在南通市国际会议…

卷积神经网络CNN学习笔记-卷积计算Conv2D函数的理解

目录 1.全连接层存在的问题2.卷积运算3.填充(padding)3.1填充(padding)的意义 4.步幅(stride)5.三维数据的卷积运算6.结合方块思考7.批处理8.Conv2D函数解析9.conv2d代码9.1 stride19.2 stride2 参考文章 1.全连接层存在的问题 在全连接层中,相邻层的神经元全部连接…

微信小程序阻止返回事件

需求场景 当在一个表单页面 填写了很多数据,或者编辑页面数据发生变动之后,这时候返回上一个页面需要提醒用户是否返回的弹框 实现方法一(ios会存在一定的问题) 在onLoad生命周期里 注册 wx.enableAlertBeforeUnload({message: "您内容已更新,还没保存,确定要退出吗?&…

Socks5代理:数字化时代的技术支柱

随着数字化时代的到来,技术不仅改变了我们的日常生活,还重新定义了商业、通信、娱乐和全球互联。在这一浪潮中,Socks5代理技术崭露头角,成为跨界电商、爬虫数据分析、企业出海和游戏体验的关键推动力。这项技术不仅在实现数字化愿…

vue3+ts父子组件以及单页面刷新的方法

父子组件刷新页面: 父组件定义函数reset,子组件props接收 示例一: 父组件 //ts删减部分: import { deleteCompanyById, findAllCompanys } from /api/company import { usePureFetch } from /nexus/useFetch import type Compa…