HDFS原理和准备工作

HDFS:
hadoop Distributed File System(分布式的文件系统)
在硬件设备的基础上,添加一些软件,可以对数据进行存储和管理的叫做文件系统,HDFS的硬件设备是分布在各个节点之上。
怎么区别hdfs与linux/window系统上的文件系统?
在linux/window中的最原始的目录前面会有
file://的形式,如:
file:///c://
file:///etc
第三个斜杠 / 是指根目录
hdfs的文件系统前面则是:(当我们将一些文件放在hdfs中时,会直接找到HDFS的访问地址(如:node101:9000))
hdfs://node101:9000/(hdfs的路径表达形式)
hdfs的优点:
1.存储量大
2.可以容错,有默认3个的副本
3.适合一次写入,多次读出的情景(不适合实时运算。)
hdfs的缺点
1.不适合实时运算
2.速度慢
3.适合添加,不适合修改。
两个脚本
hdfs /hadoop
1.当没有参数,或者写 help/-help/-h 跳出提示的代码信息
2.每一个命令都对应一个java类,本质命令是java
3.hdfs dfs==hadoop fs
命令:
如:1.创建一个文件夹到hadoop集群:
hdfs dfs -mkdir hdfs://node101:9000:/home
当只有一个集群时,可以省略HDFS的访问地址:
hdfs dfs -mkdir home
2.创建多级的文件夹:
hadoop fs -mkdir -p /animal/tiger
3.向集群中传入文件apple:
hadoop fs -put apple /animal/tiger
4.查看文件:
hadoop fs -cat /animal/tiger/apple
hdfs的操作:
1.shell操作(和linux本地操作差不多)
2.API操作
a.引包
1.传统引包
hadoop.tar.gz解压—》share–》搜索.jar,—>搜索source–》剪切到新建文件夹source—》收缩test—》剪切到新建文件夹test—》lib中还剩下144个jar包
打开idea–》file–》projectStructure—》libraries–》引包

                       **2.maven**
                       在pom文件中修改依赖。
                       <dependencies>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>${hadoop.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>${hadoop.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>${hadoop.version}</version>
</dependency>
</dependencies>
  **hdfs的存储方式:**
    按照128M的大小为block块的大小进行文件的划分,每128M划分一个block块,不足128M的,按一块算,每一块以一个独立个体的形式进行存储,但是整体会通过块池id统一
    **为什么block块的大小是128M呢?**
        最优化寻址时间(1.寻址2.读写)
    应用题:
     已知条件:
     1.硬盘的读写时间为100M/s
     2.寻址时间是读写时间的1%
     3.性价比最高的寻址时间为10ms
     问题:
     10ms的时间能读写多少数据
     10ms/0.01*100=100M
     100M在计算机中不是整数,与100最接近的数是128,所以块的大小为128M。

查看Datanode存储的数据:
(/home/user/modules/hadoop/dfs/data/current/BP-810167982-192.168.44.9-1584649073241/current/finalized/subdir0/subdir0

很多个层次,依次进入,其中两个subdir和hdfs中文件的位置没有关系,datanode中存储的数据是真实的数据
怎么查看块信息,只有一块的小文件,可以直接用cat 命令:
cat blk_1073741825
如果文件超过128M,被分为一个或者多个块,可以采用将文件追加到一个文件的方式,再进行查看。
如:cat blk_1073741825 >> test
cat blk_1073741826 >> test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值