Hadoop分布式部署,部署一个namenode和三个datanode

Hadoop(02) Hadoop-3.3.6 集群的配置教程 为了简化分布式模式的部署难度,我们可以使用两个节点(两台物理机器)来搭建一个简单的集群环境。为了便于区分,我们将其中一台机器将作为Master节点,其主机名命名为hadoop01;另一台机器将作为Slave节点,其主机名命名为hadoop02。如果需要构建由三个以上节点组成的集群,可以采用类似的方法进行安装和部署。 阅读详情

本文以一主三从部署hadoop为介绍
1 首先克隆原有centos系统
在这里插入图片描述

2 nn_y 为主,dn1,dn2,dn3为从,都是通过克隆快速完成的. 右键管理有克隆,选择完全克隆。
3 配置网络集群:
设置静态ip
192.168.64.132
192.168.64.133
192.168.64.134
192.168.64.135
根据自己ip网络设置静态ip地址,最后三位不同。
4 通过x’shell首先完成nn_y静态ip的设置
在这里插入图片描述
1)命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33
在这里插入图片描述
2 命令:vi /etc/hostname
将主机名改为:nn
在这里插入图片描述
3 vi /etc/hosts
在这里插入图片描述
4 将其他三个也分别如此操作
5 新增用户,给四个分别新增用户: adduser hadoop
6 设置 ssh 无密码登陆如 nn无密码登陆dn1
1) 命令 ssh-keygen -t rsa 全部enter
在这里插入图片描述
因为启动Hadoop会让输入密码现在设置免密启动
接着将公用钥匙写入到authorized_keys文件中,并修改这个文件的权限(重要,请不要忽略)

cat id_rsa.pub >> authorized_keys
cat id_rsa.pub >> authorized_keys

2) 具体原理请看下面这篇博客:
https://blog.youkuaiyun.com/wh_19910525/article/details/74331649
生成如下文件
在这里插入图片描述
3) id_rsa (私钥) id_rsa.pub(公钥) known_hosts(记录谁登陆机子)
现在要做的是将 id_rsa.pub(公钥)传递到dn1,dn2,dn3.
10 命令 ssh-copy-id dn1 将id传递到dn1中,结果如下:
在这里插入图片描述
4)同样对dn2,dn3如此操作,如下图般就可以无密码登陆dn1,dn2,dn3.

在这里插入图片描述
7 配置jdk Java home
1 ) 安装jdk 和hadoop
2) 建立软连接 ln -s jdk1.8.0_152 jdk8 和 ln -s hadoop-2.7.5 hadoop2
在这里插入图片描述
3) 环境变量配置
1) echo export JAVA_HOME=/home/hadoop/opt/jdk8
2) echo export JAVA_HOME=/home/hadoop/opt/jdk8 >> ~/.bashrc
3)echo export HADOOP_HOME=/home/hadoop/opt/hadoop2 >> ~/.bashrc
4) echo export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop >> ~/.bashrc
如下图:
在这里插入图片描述
5) vi ~/.bashrc 用这命令,直接填写也一样,最终要有四行
配置完后,输入source .bashrc,使配置生效

在这里插入图片描述
6)测试配置是否成功 echo $JAVA_HOME 和 echo $HADOOP_CONF_DIR

7 hadoop默认不支持分布式系统,需要改成分布式,改它的协议,将file:///协议改成hdfs

  1. 命令 vi $HADOOP_CONF_DIR/core-site.xml
    在这里插入图片描述
  2. vi $HADOOP_CONF_DIR/hdfs-site.xml
    设置datanode个数:hadoop默认为3,而本此hadoop部署是一个namenode和三个datanode,可以不配置,但要知道在哪里配置
    在这里插入图片描述
  3. 配置namenode路径 vi $HADOOP_CONF_DIR/hdfs-site.xml
    在这里插入图片描述

启动hadoop二代引擎yar 将 mapred-site.xml.template复制并重命名mapred-site.xml
cp mapred-site.xml.template mapred-site.xml

在这里插入图片描述
5) vi $HADOOP_CONF_DIR/yarn-site.xml
在这里插入图片描述
6) vi $HADOOP_CONF_DIR/slaves
在这里插入图片描述
8 命令 tar zcf opt.tar.gz opt 将opt文件夹进行压缩传到dn1,dn2,dn3中
9 命令 scp opt.tar.gz dn1:~ 和环境变量 scp .bashrc dn1:~
传递到dn1
在这里插入图片描述
10 进入dn1,dn2,dn3解压并source .bashrc
在这里插入图片描述
11 格式化 hdfs namenode -format
在这里插入图片描述
12 状态为零的时候格式化成功

13 启动 start-dfs.sh
在这里插入图片描述
14 输入上面自己网址和50070端口,如能登陆就表示启动成功,一定要把防火墙关闭

15 hdfs dfs -mkdir -p /user/hadoop 创建文件夹
start-yarn.sh 启动yarn

16 利用java从hadoop集群中读取文件:
使用idea创建的maven项目:
在这里插入图片描述
pom引入文件:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.hadoop</groupId>
  <artifactId>hadoop</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>hadoop Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>2.8.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.8.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>2.8.1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-mapreduce-client-core</artifactId>
      <version>2.8.1</version>
    </dependency>
    
  </dependencies>

  <build>
    <finalName>hadoop</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
//从hadoop集群中读取数据,从namenode
public class ReadHdfs {
    public static void main(String[] args) throws IOException {
        //获取文件系统
        FileSystem fs=FileSystem.get(new Configuration());
        //根据路径,通过open获取文件
      FSDataInputStream  fis=fs.open(new Path("out1/part-r-00000"));
      byte[] buffer=new byte[2048];
      while(true){
          //通过read方法读取文件
         int n= fis.read(buffer);
         //当n==-1表示文件读完
         if(n==-1){
            break;
          }
          System.out.println(new String(buffer,0,n));
      }
          //关闭资源
             fis.close();
    }
}


17 往hadoop中写文件:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.FileInputStream;
import java.io.IOException;

//往hadoop集群写数据
public class WriteHdfs{
    public static void main(String[] args) throws IOException {
        FileSystem fs=FileSystem.get(new Configuration());
        Path path=new Path("data4");
         //创建data4文件夹
        fs.mkdirs(path);
        //根据本地路径读取文件
        FileInputStream fis=
                new FileInputStream("E:\\javaWorkSpace\\hadoop\\src\\main\\java\\ReadHdfs.java");
        //将读取的文件写入data4文件夹下子文件ReadHdfs.java中
        FSDataOutputStream fos = fs.create(new Path(path,"ReadHdfs.java") );
        byte[] buffer=new byte[2048];
        while(true){
           int n=fis.read(buffer);
              if(n==-1){
                  break;
              }
              //写入hadoop集群中,从0开始,一直读到n
              fos.write(buffer,0,n);
              fos.hflush();
        }
        //关闭资源
        fis.close();
        fos.close();
    }
}

18 jps等命令提示未找到命令
1) yum list openjdk-devel
2)yum install java-1.8.0-openjdk-devel.x86_64

现成Hadoop安装和配置,图文手把手交你 现在我们回到windows先去寻找两个空闲网络,win+R 输入smd接着在windows命令行窗口输入。我们随便找两个靠后的,一个分配给namenode一个给datanode。添加第二台,步骤参考上面(账号root和密码123456)很明显,没有配置好之前是无法访问,配置好之后就可以回复了。里面有东西的哈,如果没有请检查是不是打错了。输入用户名和密码后,我们已经成功进入。1.两台已经配置好的hadoop。网关:两台机器的网关都是一样的。网关:两台机器的网关都是一样的。打开我们下载好的两台虚拟机。 阅读详情

相关推荐

Hadoop之NameNode、DataNode

Namenode名字节点 对于Namenode的分析,分以下几个部分: 文件系统目录树管理 数据块和数据节点管理 租约管理 租约是Namenode给与租约持有者(客户端)在规定时间内拥有文件权限(写文件)的合同,Namenode会执行租约的发放、回收、检查以及恢复等操作。 缓存管理 2.3新增了集中式缓存管理功能,允许用户将文件和目录保存到HDFS缓存中。...

菜如张学清的博客 5646

Hadoop的NameNode和DataNode

NameNode的作用: NameNode在内存中保存着整个文件系统的名称空间和文件数据块的地址映射 整个HDFS可存储的文件数受限于NameNode的内存大小。 NameNode元数据信息: 文件名,文件目录结构,文件属性(生成时间,副本数,权限)每个文件的快列表。 以及列表中的块与块所在的DataNode之间的地址映射关系,在内存中加载文件系...

散步的博客 1453

Hadoop DataNode启动和初始化过程

目录 简介 源码解析 总结 简介 我们先看DataNode的doc文档的介绍,DataNode是一个类,用于存储一组块,用于DFS部署。 单个部署可以有一个或多个DataNode。 每个DataNode通信定期与单个NameNode进行通信。 它还可以与客户端和其他的DataNodes通信。 DataNode存储一系列命名的块。 DataNode允许客户端代码读取这些块,或者写新的块数据。 DataNode也可以响应于以下指令从其NameNode中删除区块或将区块复制到/从其他的Da..

shalistone的博客 1372

DataNode(面试开发重点)

1 DataNode工作机制 DataNode工作机制,如图所示。   1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。   2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。   3)心跳是每3秒一次,心跳...

weixin_30914981的博客 309

Hadoop 基础之HDFS 架构(NameNode/DataNode)、YARN 资源管理,以及单机模式部署,运行WordCount示例

这完美地模拟了计算逻辑,但屏蔽了分布式环境的复杂性,非常适合初学者验证环境和代码。它将 MapReduce 的作业调度和资源管理功能分离出来,成为一个通用平台,可以运行多种计算框架(如 Spark、Flink)。HDFS 是 Hadoop 的存储核心,设计用于在廉价硬件上存储超大规模数据集,并提供高吞吐量的数据访问。:将计算任务(MapReduce/Spark)分发到数据所在的节点执行,减少网络传输。这表示 "Hello" 出现了 3 次,"Hadoop" 出现了 2 次,等等。

u012024132的专栏 1364

hadoop中NameNode、DataNode、Secondary、NameNode、ResourceManager、NodeManager 介绍

1:NameNode 2:SecondNameNode 3:DataNode 4:ResourceManager 5:NodeManager ----------------------------------------------------------------------------------------------------------------------------...

FREEDOM 1938

Hadoop HA部署过程中出现主备namenode或datanode挂掉的问题

在部署Hadoop HA的过程时,当进行到hdfs namenode -format格式化这一步骤时显示查阅多篇文章分析可知其原因是节点之间无法通信,所以无法建立连接。

Ryan_202297的博客 2321

[医学图像分割综述] Medical Image Segmentation Using Deep Learning: A Survey

本综述有两个独创之处,首先,与传统的调查方法直接将医学图像分割的文献划分为多个组,并对每个组详细介绍文献的方法相比,我们将目前流行的文献按照从粗到细的多层次结构进行分类。其次,本文重点研究了监督学习和弱监督学习方法,但未包括无监督方法,这种方法目前在医学图像领域并不流行。对于监督学习方法,我们从骨干网络的选择、网络块的设计和损失函数的改进三个方面对文献进行了分析。对于弱监督学习方法,我们分别根据数据增强,迁移学习和交互式分割研究文献。与已有的调查相比,本次调查的文献分类与以往有很大的不同,更便于读者了解相关

qq_38932073的博客 4万+

hadoop中NameNode、DataNode、Secondary、NameNode、JobTracker TaskTracker介绍_namenode和datenode和2nn的作用分别是什么

JobClient在获取了JobTracker为Job分配的id之后,会在JobTracker的系统目录(HDFS)下为该Job创建一个单独的目录,目录的名字即是Job的id,该目录下会包含文件job.xml、job.jar、job.split等,其中,job.xml文件记录了Job的详细配置信息,job.jar保存了用户定义的关于job的map、reduce操纵,job.split保存了job任务的切分信息。比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统。

2401_83621918的博客 1485

神经元细胞结构刨析(持续更新)

神经细胞的学习笔记

weixin_46596227的博客 2220

Ansys口腔正畸有限元分析:从几何处理到接触设定的全流程解析

本文详细解析了Ansys在口腔正畸有限元分析中的全流程应用,从几何处理到接触设定,帮助医生精准预测牙齿移动趋势。通过有限元建模技术,可同时观察牙齿-牙周膜-牙槽骨的力学响应,显著提升矫治效果预测准确率。文章还分享了实用技巧和参数设置建议,适用于正畸医生和工程师。

weixin_30897233的博客 348

Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦

这里说一下配置Hadoop HA集群可能出现的两种情况,第一种就是两个NameNode都是standby,第二种就是主Master是standby,从Master是active。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 5万+

SiamFC++笔记

SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 文章根据这些思路:引入分类和目标状态估计分支(G1),无歧义的分类得分(G2),无先验知识的跟踪(G3)和评估质量得分(G4)来设计SiamFC ++。 SiamRPN ++和SiamFC ++的比较(红色部分代表得分高的区域): guide: G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态

木木JL的博客 9432

关于HDFS中namenode和datanode细节问题

一、概述 1. 在存储数据的数据会将数据进行切分,切出来的每一个块称之为是一个Block 2. 包含2类主要的节点:NameNode和DataNode 3. DataNode负责存储具体的数据,NameNode负责记录元数据以及管理DataNode 4. NameNode和DataNode是Hadoop中的进程,只是实际使用过程中,会将NameNode以及DataNode部署在不同的节点(服务...

大头鱼 3800

Unidbg补环境实战:复现Shopee风控Native层运行环境

Android App风控已从HTTP层签名校验,演进为深度依赖Native层系统调用与硬件特征的多维验证。其核心原理在于通过JNI桥接Java与Native代码,调用openat、sysconf、getrandom等系统接口读取/proc、/sys、/dev等路径的真实状态,并结合SELinux策略、CPU拓扑、分区哈希等硬性指标构建设备可信画像。这种技术架构显著提升了对抗黑灰产的能力,但也对逆向分析与自动化调用提出更高要求——必须精准模拟底层环境而非仅Hook逻辑。Unidbg补环境正是为此而生:它支持

weixin_30533109的博客 636

部署与可视化系统:零基础到精通:LabVIEW 调用 YOLO 动态链接库(DLL)的保姆级视觉检测系统融合实战

LabVIEW与YOLO26深度集成:工业视觉检测新范式 本文揭示了LabVIEW与最新YOLO26模型深度集成的创新方案,通过C++封装ONNX Runtime为DLL,在LabVIEW中实现端到端视觉检测。核心突破点包括: 技术选型:对比YOLOv5/YOLOv8/YOLO26性能,YOLO26在CPU推理速度提升43%,支持NMS-Free端到端推理 部署架构:提供ONNX Runtime C++ API和TensorRT两种DLL封装路径,适配不同硬件环境 工程实现:详细展示从PyTorch模型导出

ZXSXJ的博客 282

namenode和datanode工作机制_HDFS的namenode和datanode详解

一、概述HDFS集群以Master-Slave模式运行,主要有两类节点:一个Namenode(即Master)和多个Datanode(即Slave)。HDFS Architecture: 二、NamenodeNamenode 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,...

weixin_39942572的博客 1586

23、电器元件符号及封装大全(2025版本)

总计28类电器元件符号和封装。

XU157303764的博客 2652

NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker五个进程分别有什么作用及区别

在分布式存储和分布式计算方面,Hadoop都是用从/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大 象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不用的角色,这些角色由NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker组成。

ljx892645700的博客 1424

⑩电子产品拆解分析-家用无线遥控开关433Mhz

①免布线随意贴,装上就能使用解决单线开关烦恼;②遥控配对简单,无线通讯距离长,信号可穿墙;

a6662580的博客 4691

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

hadoop中NameNode、DataNode、SecondaryNameNode、JobTracker 、TaskTracker介绍

问题导读:1.job的本质是什么? 2.任务的本质是什么? 3.文件系统的Namespace由谁来管理,Namespace的作用是什么? 4.Namespace 镜像文件(Namespace image)和操作日志文件(edit log)文件的作用是什么? 5.Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,为什么? 6.客户端读写某个数据时,

keeplearning 1354

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

hadoop启动后,jps查不到NameNode 或DataNode 解决方法

由于最近安装hadoop,出现了启动hdfs后 jps查不到NameNode 和 DataNode 的情况,经过一番查找。终于找到了问题所在:下面是我的 hdfs-site.xml中的/usr/local/data/namenode 是存放namenode的日志和启动文件如果DataNode没有:        进入/usr/local/data/namenode中  current 编辑vers...

qq_42026980的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: ES的安装和启动,很多坑
下一篇: linux安装 mysql-5.6.43遇到的坑
javaChengXuY
博客等级 码龄8年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值