IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> hadoop学习(1) -> 正文阅读

[大数据]hadoop学习(1)

hdfs

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目 录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务 器有各自的角色。 HDFS 的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭 之后就不需要改变。

优缺点

在这里插入图片描述
在这里插入图片描述

组成架构

在这里插入图片描述

hadoop_hdfs_shell

查看全部命令

hadoop fs

查看命令帮助

hadoop fs -help rm

创建文件

hadoop fs -mkdir sanguo

从本地上传文件(从本地剪切)

hadoop fs -moveFromLocal ./suguo.txt /sanguo

从本地上传文件(从本地复制)

hadoop fs -copyFromLocal weiguo.txt /sanguo

也可以使用put

hadoop fs -put weiguo.txt

追加到文件末尾

hadoop fs -appendToFile liubei.txt /sanguo/suguo.txt

从 HDFS 拷贝到本地

hadoop fs -copyToLocal /sanguo/shuguo.txt ./

hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt

常用命令

1)-ls: 显示目录信息

hadoop fs -ls /sanguo

2)-cat:显示文件内容

hadoop fs -cat /sanguo/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

hadoop fs -du -h /jinguo(会显示目录下的文件)

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

hadoop fs -setrep 10 /jinguo/shuguo.txt

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

hadoop_hdfs_api

在windows上安装好hadoop

创建meaven工程

<dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.30</version>
        </dependency>
    </dependencies>

log4j.properties

log4j.rootLogger=INFO, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 
log4j.appender.logfile=org.apache.log4j.FileAppender 
log4j.appender.logfile.File=target/spring.log 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

创建文件

package com.atguigu.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * 客户端代码常用套路
 * 1、获取客户端
 * 2、执行相关的操作命令
 * 3、关闭资源
 */
public class HDFSClient {
    @Test
    public void testMkdir() throws URISyntaxException, IOException, InterruptedException {
        //连接地址
        URI uri = new URI("hdfs://hadoop102:9000");
        String user="root";
        //配置文件
        Configuration configuration = new Configuration();
        //获取到客户端连接对象
        FileSystem fs = FileSystem.get(uri, configuration,user);
        //创建目录
        fs.mkdirs(new Path("/xiyou"));
        //关闭资源
        fs.close();

    }
}

文件上传

package com.atguigu.hdfs;

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;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * 客户端代码常用套路
 * 1、获取客户端
 * 2、执行相关的操作命令
 * 3、关闭资源
 */
public class HDFSClient {

    private FileSystem fs;
    //先执行
    @Before
    public void init() throws IOException, InterruptedException, URISyntaxException {
        //连接地址
        URI uri = new URI("hdfs://hadoop102:9000");
        String user="root";
        //配置文件
        Configuration configuration = new Configuration();
        //获取到客户端连接对象
        fs = FileSystem.get(uri, configuration,user);
    }



    @Test
    public void testMkdir() throws IOException {

        fs.mkdirs(new Path("/xiyou"));

    }

    //上传
    @Test
    public void testPut() throws IOException, URISyntaxException, InterruptedException {
        //参数解读:参数一:表示删除原数据 参数二:是否允许覆盖 参数三:原数据路径 参数四:目的路径
        fs.copyFromLocalFile(false,false,new Path("src\\sunwukong"),new Path("/xiyou"));
    }

    //后执行

    @After
    public void close() throws IOException {
        fs.close();
    }
}

hdfs配置优先级

hdfs-default.xml => hdfs-site.xml => 在项目资源目录下配置的文件 => 代码里面的配置

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:08:56  更:2022-06-29 19:10:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 1:40:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码