0201hdfs集群部署-hadoop-大数据学习

文章目录

    • 1 前言
    • 2 集群规划
    • 3 hadoop安装包上传与安装
      • 3.1 上传解压
    • 4 hadoop配置
    • 5 从节点同步和环境变量配置
    • 6 创建用户
    • 7 集群启动
    • 8 问题集
      • 8.1 Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.
    • 结语

1 前言

下面我们配置下单namenode节点hadoop集群,使用vmware虚拟机环境搭建。vmware虚拟机的配置,在下面链接2有,或者自行查阅文档。hadoop安装包可到官网下载,当前相关软件环境如下:

软件版本说明
hadoop3.3.4jar包
vmware15.5虚拟机
centos7.6服务器操作系统
xshell6远程连接
jdk1.8java运行环境

2 集群规划

在前面的准备章节,我们准备了基于vmware的三台虚拟机,现服务规划如下:

节点服务
node1NameNode、DataNode、SecondaryNameNode
node2DataNode
node3DataNode

Hadoop HDFS的角色包含:

  • NameNode:主节点管理者
  • DataNode:从节点工作者
  • SecondaryNameNode:主节点辅助

3 hadoop安装包上传与安装

3.1 上传解压

  1. 上传hadoop安装包到node节点中,如下图3.1-1所示

在这里插入图片描述

  1. 解压缩安装包到/export/server

    tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
  2. 构建软连接

    cd /export/server
    ln -s /export/server/hadoop-3.3.4 hadoop
    

4 hadoop配置

配置HDFS集群,主要涉及以下文件的修改:

  • workers:配置从节点(DataNode)有哪些
  • hadoop-env.sh:配置hadoop的相关变量
  • core-site.xml:hadoop的核心配置文件
  • hadfs-site.xml:HDFS核心配置文件

这些文件在$HADOOP_HOME/etc/hadoop文件夹中

ps:$HADOOP_HOME是后续我们要设置的环境变量,其指代Hadoop安装文件夹即/export/server/hadoop

  • 配置workers

    # 进入配置文件目录
    cd etc/hadoop
    # 编辑workers文件
    vim workers
    # 填入如下内容
    node1
    node2
    node3
    
    • 记录node1,node2,node3三个从节点
  • 配置hadoop-en.sh

    # 填入如下内容
    export JAVA_HOME=/export/server/jdk
    export HADOOP_HOME=/export/server/hadoop
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export HADOOP_LOG_DIR=$HADOOP_HOME/logs
    
    • JAVA_HOME:jdk安装目录
    • HADOOP_HOME:hadoop安装目录
    • HADOOP_CONF_DIR:hadoop配置文件目录
    • HADOOP_LOG_DIR:hadoop日志存放目录
  • 配置core-site.xml,此处配置NameNode会报错,后面问题集我们在分析

    在文件内部填入如下内容
    <configuration><property><name>fs.defaultFS</name><value>hdfs://node1:8020</value></property><property><name>io.file.buffer.size</name><value>131072</value></property>
    </configuration>
    
    • key:fs.defaultFS;含义:HDFS文件系统的网络通讯路径;值:hdfs://node1:8020
      • 协议为hdfs://
      • namenode为node1
      • namenode通讯端口为8020
    • key:io.file.buffer.size含义:io操作文件缓冲区大小值:131072 bit
    • hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议)表明DataNode将和node1的8020端口通讯,node1是NameNode所在机器此配置固定了node1必须启动NameNode进程
  • 配置hdfs-site.xml

    # 在文件内部填入如下内容
    <configuration><property><name>dfs.datanode.data.dir.perm</name><value>700</value></property><property><name>dfs.namenode.name.dir</name><value>/data/nn</value></property><property><name>dfs.namenode.hosts</name><value>node1,node2,node3</value></property><property><name>dfs.blocksize</name><value>268435456</value></property><property><name>dfs.namenode.handler.count</name><value>100</value></property><property><name>dfs.datanode.data.dir</name><value>/data/dn</value></property>
    </configuration>
    • key:dfs.datanode.data.dir.perm;含义:hdfs文件系统,默认创建的文件权限设置值:700,即:rwx------
    • key:dfs.namenode.name.dir;含义:NameNode元数据的存储位置值:/data/nn,在node1节点的/data/nn目录下
    • key:dfs.namenode.hosts含义:NameNode允许哪几个节点的DataNode连接(即允许加入集群)值:node1、node2、node3,这三台服务器被授权
    • key:dfs.blocksize含义:hdfs默认块大小值:268435456(256MB)
    • key:dfs.namenode.handler.count;含义:namenode处理的并发线程数;值:100,以100个并行度处理文件系统的管理任务
    • key:dfs.datanode.data.dir;含义:从节点DataNode的数据存储目录;值:/data/dn,即数据存放在node1、node2、node3,三台机器的/data/dn内

根据上面配置的NameNode和DataNode数据存放位置

  • namenode数据存放node1的/data/nn

  • datanode数据存放node1、node2、node3的/data/dn

  • 在node1节点:

    mkdir -p /data/nn
    mkdir /data/dn
    
  • 在node2和node3节点:

    mkdir -p /data/dn
    

5 从节点同步和环境变量配置

目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2、node3

  • 分发

    # 在node1执行如下命令
    cd /export/server
    scp -r hadoop-3.3.4 node2:`pwd`/
    scp -r hadoop-3.3.4 node3:`pwd`/
  • 在node2执行,为hadoop配置软链接

    # 在node2执行如下命令
    ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
    
  • 在node3执行,为hadoop配置软链接

    # 在node3执行如下命令
    ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
    

一步一步配置相对清晰,但是也繁琐,xshell有如下功能,可以在所有会话窗口执行相同的操作

在这里插入图片描述

在这里插入图片描述

配置环境变量:

在Hadoop文件夹中的bin、sbin两个文件夹内有许多的脚本和程序,现在来配置一下环境变量

  1. vim /etc/profile,node1,node2,node3执行相同操作

    # 在/etc/profile文件底部追加如下内容
    export HADOOP_HOME=/export/server/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

6 创建用户

hadoop部署的准备工作基本完成为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务所以,现在需要对文件权限进行授权。

ps:请确保已经提前创建好了hadoop用户(前置准备章节中有讲述),并配置好了hadoop用户之间的免密登录以root身份,在node1、node2、node3三台服务器上均执行如下命令

# 以root身份,在三台服务器上均执行
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export

7 集群启动

前期准备全部完成,现在对整个文件系统执行初始化,在node1节点上操作

# 确保以hadoop用户执行
su - hadoop
# 格式化namenode
hadoop namenode -format
# 一键启动hdfs集群
start-dfs.sh
# 一键关闭hdfs集群
stop-dfs.sh# 如果遇到命令未找到的错误,表明环境变量未配置好,可以以绝对路径执行
/export/server/hadoop/sbin/start-dfs.sh
/export/server/hadoop/sbin/stop-dfs.sh

启动完成后,可以在浏览器打开:http://node1:9870,即可查看到hdfs文件系统的管理网页,如下图6-1所示

在这里插入图片描述

8 问题集

出了问题首先,查看日志,在配置文件$HADOOP_home/logs下面记录日志。

一些常见的报错,比如命令不存在,或者因为粗心单词写错,这里不再分析,可以去链接1视频P23-24查看原因或者自行查阅相关文档。下面主要分析一些本人遇到的非常见错误

8.1 Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.

  • 日志报错内容

    2023-08-27 11:40:09,808 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Failed to start secondary namenode
    java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority.at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddress(DFSUtilClient.java:781)at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddressCheckLogical(DFSUtilClient.java:810)at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddress(DFSUtilClient.java:772)at org.apache.hadoop.hdfs.server.namenode.NameNode.getServiceAddress(NameNode.java:534)at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:231)at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:194)at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:690)
    
    • 报错NameNode URI配置有问题,这个配置我们是按照视频做了,配置如下

      <configuration><property><name>fs.defaultFS</name><value>hdfs://node1:8020</value></property>
      
  • 解决方案:修改配置如下

      <property><name>fs.default.name</name><value>hdfs://node1:8020</value></property>
    
  • 具体原理可以查看官方文档解释或者下面链接3

结语

如果小伙伴什么问题或者指教,欢迎交流。

❓QQ:806797785

参考链接:

[1]大数据视频[CP/OL].2020-04-16.p14-p24.

[2]0101前期准备-大数据学习[CP/OL].

[3]Hadoop的core-site.xml配置文件里的fs.default.name和fs.defaultFS[CP/OL].

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

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

相关文章

C# 实现 国密SM4/ECB/PKCS7Padding对称加密解密

C# 实现 国密SM4/ECB/PKCS7Padding对称加密解密&#xff0c;为了演示方便本问使用的是Visual Studio 2022 来构建代码的 1、新建项目&#xff0c;之后选择 项目 鼠标右键选择 管理NuGet程序包管理&#xff0c;输入 BouncyCastle 回车 添加BouncyCastle程序包 2、代码如下&am…

4.19 20

服务端没有 listen&#xff0c;客户端发起连接建立&#xff0c;会发生什么&#xff1f; 服务端如果只 bind 了 IP 地址和端口&#xff0c;而没有调用 listen 的话&#xff0c;然后客户端对服务端发起了连接建立&#xff0c;服务端会回 RST 报文。 没有 listen&#x…

如何开发一款唯一艺术平台 区块链 /数字藏品

艺术作品是人类文化的瑰宝&#xff0c;而艺术平台则是连接艺术家与观众的桥梁。如何开发一款独一无二的艺术平台&#xff0c;既要满足专业艺术作品展示的要求&#xff0c;又要提供深度思考的空间&#xff0c;这是我们所面临的挑战。本文将从专业性、思考深度和逻辑性等多个方面…

AI 绘画Stable Diffusion 研究(十六)SD Hypernetwork详解

大家好&#xff0c;我是风雨无阻。 本期内容&#xff1a; 什么是 Hypernetwork&#xff1f;Hypernetwork 与其他模型的区别&#xff1f;Hypernetwork 原理Hypernetwork 如何下载安装&#xff1f;Hypernetwork 如何使用&#xff1f; 在上一篇文章中&#xff0c;我们详细介绍了 …

开发者插件推荐FeHelper

开发者巨好用的插件、有很多功能比如json美化、对比&#xff0c;二维码/解码&#xff0c;图片转Base64&#xff0c;时间戳转换等 一、下载插件 1、打开网址&#xff1a;FeHelper - Awesome&#xff08;建议用谷歌打开&#xff09;&#xff1b; 2、选择要下载的版本&#xff0c…

大语言模型初学者指南 (2023)

大语言模型 (LLM) 是深度学习的一个子集&#xff0c;它正在彻底改变自然语言处理领域。它们是功能强大的通用语言模型&#xff0c;可以针对大量数据进行预训练&#xff0c;然后针对特定任务进行微调。这使得LLM能够拥有大量的一般数据。如果一个人想将LLM用于特定目的&#xff…

分布式事务-seata框架

文章目录 分布式事务0.学习目标1.分布式事务问题1.1.本地事务1.2.分布式事务1.3.演示分布式事务问题 2.理论基础2.1.CAP定理2.1.1.一致性2.1.2.可用性2.1.3.分区容错2.1.4.矛盾 2.2.BASE理论2.3.解决分布式事务的思路 3.初识Seata3.1.Seata的架构3.2.部署TC服务3.3.微服务集成S…

自制编程语言基于c语言实验记录之二:总结三四五六七章之编译类定义

博客前言 由于本书第六七章是编译脚本语言sparrow生成指令、虚拟机运行指令的核心章节&#xff0c;需要连在一起理解&#xff0c;同时三四五章都是六七章的铺垫&#xff0c;所以专门写多篇博客来记录六七章。 同时本书相比《操作系统真相还原》缺少具体例子很难梳理项目整体代…

在Jupyter Notebook中添加Anaconda环境(内核)

在使用前我们先要搞清楚一些事&#xff1a; 我们在安装anaconda的时候它就内置了Jupyter Notebook&#xff0c;这个jupyter初始只有base一个内核&#xff08;显示为Python3&#xff09; 此后其实我们就不需要重复安装完整的jupyter notebook了&#xff0c;只要按需为其添加新的…

手写Spring源码——实现一个简单的spring framework

这篇文章主要带大家实现一个简单的Spring框架&#xff0c;包含单例、多例bean的获取&#xff0c;依赖注入、懒加载等功能。为了能让大家更好的理解Spring各个功能的实现&#xff0c;将版本由易到难贴出代码&#xff0c;文章内容会持续更新&#xff0c;感兴趣的小伙伴可以持续关…

学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示

文章目录 1.认识数码管2.控制原理十进制转换为任意进制其它进制转十进制 3.数码管实现0-9的显示1.用数组定义0-9的内码段码跟位码的区别2.尝试用延时实现0-9的循环显示3.用按键控制数字的加或者减。 总结课后练习&#xff1a; 1.认识数码管 数码管按段数可分为七段数码管和八段…

树莓派4B上安装Gitlab

参考连接&#xff1a; 树莓派上使用 GitLab 搭建专业 Git 服务 | 树莓派实验室 gitlab reconfigure 卡住 ruby_block[wait for redis service socket] action run_芹菜学长的博客-CSDN博客 以及用到了讯飞星火 系统版本信息 1.进入 giblab安装页面gitlab/gitlab-ce - Instal…

BATPowerShell实现本地文件自动上传FTP服务器

运维工作中&#xff0c;经常需要一些脚本来实现自动化&#xff0c;今天分享本地文件自动上传FTP的两种解决办法&#xff1a; 一、使用BAT自动上传FTP 使用批处理&#xff08;BAT&#xff09;命令文件将本地文件夹内容上传到FTP服务器需要使用Windows自带的命令行工具&#xf…

QT基础使用:组件和代码关联(信号和槽)

自动关联 ui文件在设计环境下&#xff0c;能看到的组件可以使用鼠标右键选择“转到槽”就是开始组件和动作关联。 在自动关联这个过程中软件自动动作的部分 需要对前面头文件进行保存&#xff0c;才能使得声明的函数能够使用。为了方便&#xff0c;自动关联时先对所有文件…

javaee idea创建maven项目,然后创建servlet

idea创建maven项目 参考我的上一篇博客点击查看 创建servlet 步骤一 引入依赖 步骤二 新建directory并设置mark directory as 步骤三 新建package和servlet

达梦数据库分区表介绍

概述 本文将对达梦数据库分区表概念、创建、维护进行介绍。 1.分区表概念 1.1 分区表使用场景 近几年&#xff0c;随着移动支付快速发展&#xff0c;银行交易系统中【移动小微支付场景】使用越来越多&#xff0c;系统中流水账单表数据量巨大&#xff0c;往往上TB。 为了提高…

Redis使用

环境配置 代码实现 Java public CoursePublish getCoursePublishCache(Long courseId){//查询缓存Object jsonObj redisTemplate.opsForValue().get("course:" courseId);if(jsonObj!null){String jsonString jsonObj.toString();System.out.println("从缓…

构建与应用大数据环境:从搭建到开发与组件使用的全面指南

文章目录 环境搭建开发与组件使用性能优化与监控安全与隐私总结 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;大数据系列 ✨文章内容&#xff1a; &#x1f91d;希望作者…

物种气候生态位动态量化与分布特征模拟

在全球气候快速变化的背景下&#xff0c;理解并预测生物种群如何应对气候变化&#xff0c;特别是它们的地理分布如何变化&#xff0c;已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟&#xff0c;不仅可以量化描述物种对环境的需求和适应性&#xff0c;预…

使用 wxPython 和 pymupdf进行 PDF 加密

PDF 文件是一种常见的文档格式&#xff0c;但有时候我们希望对敏感信息进行保护&#xff0c;以防止未经授权的访问。在本文中&#xff0c;我们将使用 Python 和 wxPython 库创建一个简单的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;用于对 PDF 文件进行加密…