hadoop-HDFS

news/2024/11/28 19:43:13/

1.HDFS简介

2.1  Hadoop分布式文件系统-HDFS架构

2.2  HDFS组成角色及其功能

(1)Client:客户端

(2)NameNode (NN):元数据节点

管理文件系统的Namespace元数据

一个HDFS集群只有一个Active的NN

(3)DataNode (DN):数据节点

数据存储节点,保存和检索Block

一个集群可以有多个数据节点

(4)Secondary NameNode (SNN):从元数据节点

合并NameNode的edit logs到fsimage文件中

辅助NN将内存中元数据信息持久化

2.3  HDFS副本机制

(1)Block:数据块

HDFS最基本的存储单元,默认块大小:128M(2.x)

(2)副本机制

作用:避免数据丢失

副本数默认为3

存放机制:一个在本地机架节点;一个在同一个机架不同节点;一个在不同机架的节点

2.4  HDFS优缺点

(1)HDFS优点:高容错性;适合大数据处理;流式数据访问;可构建在廉价的机器上

(2)HDFS缺点:不适合低延时数据访问场景;不适合小文件存取场景;不适合并发写入,文件随机修改场景

2.HDFS基本文件操作命令

2.1   准备工作

1)启动单机Hadoop

2)-help:输出这个命令参数

hdfs dfs -help rm

3)创建/install文件夹

hdfs dfs -mkdir /sanguo

2.2 上传

1)-moveFromLocal:从本地剪切粘贴到HDFS

2)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去

3)-put:等同于copyFromLocal,生产环境更习惯用put

4)-appendToFile:追加一个文件到已经存在的文件末尾

2.3 HDFS直接操作

1)-ls: 显示目录信息

hadoop fs -ls /sanguo

2)-cat:显示文件内容

hadoop fs -cat /install/shuguo.txt

3)-chgrp、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限

hadoop fs  -chmod 666  /sanguo/shuguo.txt

hadoop fs  -chown  atguigu:atguigu   /sanguo/shuguo.txt

4)-mkdir:创建路径

hadoop fs -mkdir /jinguo

5)-cp:从HDFS的一个路径拷贝到HDFS的另一个路径

hadoop fs -cp /sanguo/shuguo.txt /jinguo

6)-mv:在HDFS目录中移动文件

hadoop fs -mv /sanguo/wuguo.txt /jinguo

hadoop fs -mv /sanguo/weiguo.txt /jinguo

7)-tail:显示一个文件的末尾1kb的数据

hadoop fs -tail /jinguo/shuguo.txt

8)-rm:删除文件或文件夹

hadoop fs -rm /sanguo/shuguo.txt

9)-rm -r:递归删除目录及目录里面内容

hadoop fs -rm -r /sanguo

10)-du统计文件夹的大小信息

hadoop fs -du -s -h /jinguo

27  81  /jinguo

hadoop fs -du  -h /jinguo

14  42  /jinguo/shuguo.txt

7   21   /jinguo/weiguo.txt

6   18   /jinguo/wuguo.tx

       说明:27表示文件大小;81表示27*3个副本;/jinguo表示查看的目录

11)-setrep:设置HDFS中文件的副本数量(集群)

hadoop fs -setrep 10 /jinguo/shuguo.txt

 

这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。

2.4  进入资源管理器web页面:http://kb129:8088

2.5  查看历史服务器

(1)启动历史服务器:mapred --daemon start historyserver

(2)进入历史服务器网页访问:http://kb129:19888

3. windows中hadoop环境搭建

3.1  解压hadoop313至C盘server目录下,配置环境变量HADOOP_HOME    C:\server\hadoop313

将winutils.exe放至C:\server\hadoop-3.1.3\bin目录下

将hadoop.dll放至C:\Windows\System32目录下

4. Java实现HDFS文件读写

4.1  创建maven工程,quickstart工程

(1)配置依赖

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>${hadoop.version}</version></dependency>

4.2  test包中重写AppTest

package org.example;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;/*** Unit test for simple App.*/
public class AppTest {//可操作hdfs文件系统的对象FileSystem hdfs = null;@Beforepublic void init() throws IOException {//构造一个配置参数对象,设置参数 要访问的hdfs的urlConfiguration conf = new Configuration();//指定使用hdfs访问conf.set("fs.defaultFS","hdfs://kb129:9000");System.setProperty("HADOOP_USER_NAME","root");hdfs = FileSystem.get(conf);}//上传本地文件到hdfs@Testpublic void shouldAnswerWithTrue() throws IOException {Path localFilePath = new Path("C:\\Windows\\System32\\drivers\\etc\\services");Path hdfsPath = new Path("/services.txt");//上传hdfs.copyFromLocalFile(localFilePath,hdfsPath);System.out.println("上传成功");}//从hdfs下载文件到本地@Testpublic void downloadFile() throws IOException {Path localFilePath = new Path("D:\\tttttmmmmmppppp");Path hdfsPath = new Path("/services.txt");//下载hdfs.copyToLocalFile(hdfsPath,localFilePath);System.out.println("下载成功");}@Afterpublic void close() throws IOException{hdfs.close();}
}


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

相关文章

jmeter setUp Thread Group

SetUp Thread Group 是一种特殊类型的线程组&#xff0c;它用于在主测试计划执行之前执行一些初始化任务。 SetUp Thread Group 通常用于以下几种情况&#xff1a; 用户登录&#xff1a;在模拟用户执行实际测试之前&#xff0c;模拟用户登录到系统以获取访问权限。 创建会话&a…

2023年7月婴幼儿辅食市场数据分析(京东商品数据)

随着人们对婴幼儿饮食健康的关注不断增加&#xff0c;市场对高品质、安全、营养丰富的辅食需求也日益旺盛。婴幼儿辅食市场增长放缓&#xff0c;但整体仍保持上升态势。鲸参谋数据显示&#xff0c;今年7月份&#xff0c;京东平台婴幼儿辅食市场的销量为1000万&#xff0c;同比增…

LED电子显示屏的异步图文控制技术

LED电子显示屏的异步图文控制技术是一种用于控制LED显示屏的技术&#xff0c;它允许用户在显示屏上显示不同的文本、图像和动画&#xff0c;而无需连续的计算机连接或实时数据传输。这种技术通常用于广告牌、大屏幕显示、体育场馆和其他需要大型图文显示的应用。 以下是LED电子…

问道管理:证券市场也有中介机构吗?他们具体干什么?

证券市场是一个很大的发行流通生意市场&#xff0c;在这个市场上&#xff0c;有许许多多不同的生意主体。而有生意就会有中介&#xff0c;证券市场上也有中介组织吗&#xff1f;如果有&#xff0c;他们具体又是干什么的&#xff1f;关于这些&#xff0c;问道管理为我们预备了以…

SQL注入-盲注 Burp盲注方法

文章目录 判断库名位数Burp 抓取数据包设置payload位置设置payload 1设置payload 2点击开始攻击 判断库名下表名的位数Burp 抓取数据包点击开始攻击 判断库名下第二张表名判断表名下的字段名判断表中具体数据 什么是盲注&#xff1f; 有时目标存在注入&#xff0c;但在页面上没…

F#奇妙游(26):计算表达式浅尝

computation expression之一问三不知 计算表达式是一个有点难理解的东西。我把帮助全部看了一遍&#xff0c;记住了个上下文敏感的计算&#xff08;contex-sensitive computation&#xff09;。但是让我讲计算表达式是什么&#xff1f;为什么&#xff1f;怎么做&#xff1f;我…

Ubuntu入门04——目录与文件

目录 1.显示当前工作目录 2.更改目录 3.创建工作目录 4.删除工作目录 5.移动文件或者文件夹 6.文件夹and文件查看命令 7. 回到根目录&#xff0c;回到上一级 8.删除工作目录 9.查看目录和文件 10.以树状图列出目录内容 11.文件查找 12.在数据库中查找文件或目录 1…

线程、并发相关---第二篇

系列文章目录 文章目录 系列文章目录一、对线程安全的理解二、Thread、Runable的区别一、对线程安全的理解 不是线程安全、应该是内存安全,堆是共享内存,可以被所有线程访问 当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可…