大数据-HDFS(一)

                                        大数据-HDFS(一)

目录


从本章节开始我们将进入对hadoop一个重要组件的学习,hdfs在hadoop集群中主要作用是负责数据的存取。本章节会从hdfs的基本概念、优缺点以及架构方面进行初步了解和学习。

每天进步一小点,加油鸭~

HDFS基本概念

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),其中一个重要的组件就是HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大规模数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop框架最核心的设计就是:HDFS和MapReduce。HDFS为海量数据提供存储,而MapReduce则为海量数据提供计算   。

HDFS的优缺点

优点

高容错性

  • 数据自动保存多个副本,它通过增加副本的形式,提高容错性。
  • 某一个副本丢失以后,可以自动恢复,由HDFS内部机制实现。

适合批处理

  • 把数据位置暴露给计算框架。
  • 通过移动计算而不是移动数据。

适合大数据处理

  • 数据规模:能够处理数据规模达到GB、TB甚至PB级别。
  • 文件规模:能够处理百万规模以上的文件数量。
  • 节点规模:能够处理10K节点的规模。

流式数据访问

  • 一次写入,多次读取,不能修改,只能追加。
  • 它能够保证数据的一致性。

可构建在廉价机器上

  • 它通过多副本机制,提高可靠性。
  • 它提供了容错和恢复机制。比如某一副本丢失,可以通过其他副本来恢复。

缺点

不适合低延时数据访问

  • 比如毫秒级以内的数据存储和读取是不行的。
  • 它适合高吞吐率的场景,就是在某一时间内写入大量的数据。

无法高效的对大量小文件进行存储

  • 存储大量小文件的话,会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存是有限的。
  • 小文件存储的寻址时间会超过读取时间,违反了HDFS的设计原则。

并发写入、文件随机修改

  • 一个文件只能有一个写操作,不允许多个线程同时写入。
  • 仅支持数据append(追加),不支持文件的随机修改。

HDFS架构分析

HDFS由四部分组成,HDFS ClientNameNodeDataNodeSecondary NameNode

HDFS是一个主/从(Mater/Slave)体系结构,HDFS集群拥有一个NameNode和一些DataNode。NameNode管理文件系统的元数据,DataNode存储实际的数据。

HDFS客户端就是客户端。

  • 提供一些命令来管理、访问 HDFS,比如启动或者关闭HDFS。
  • 与 DataNode 交互,读取或者写入数据;读取时,要与 NameNode 交互,获取文件的位置信息;写入 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

NameNode即Master。

  • 管理 HDFS 的名称空间
  • 管理数据块(Block)映射信息
  • 配置副本策略
  • 处理客户端读写请求

DataNode就是Slave。NameNode 下达命令,DataNode 执行实际的操作。

  • 存储实际的数据块
  • 执行数据块的读/写操作

Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。最主要作用是辅助NameNode管理元数据信息。

  • 辅助 NameNode,分担其工作量
  • 定期合并 fsimage和fsedits,并推送给NameNode
  • 在紧急情况下,可辅助恢复 NameNode

HDFS命令操作

HDFS 命令有两种风格:

  • hadoop fs 开头
  • hdfs dfs 开头

两种命令均可使用,效果相同。

命令说明
hdfs dfs -help ls
hadoop fs -help ls
查看 hdfs 或 hadoop 子命令的帮助信息
hdfs dfs -ls /
hadoop fs -ls /
hdfs dfs -ls -R /
查看 hdfs 文件系统中指定目录的文件列表。对比 Linux 命令 ls 
hdfs dfs -touchz /edits.txt在hdfs文件系统中创建文件
hadoop fs -appendToFile edit1.xml /edits.txt向hdfs文件中追加内容
hdfs dfs -cat /edits.txt查看 hdfs 文件内容

hdfs dfs -put /linux本地文件 /hdfs文件
#跟-put命令的作用一样
hdfs dfs -copyFromLocal /linux本地文件 /hdfs文件
#拷贝完成删除源文件,相当于对文件“剪贴”
hdfs dfs -moveFromLocal /linux本地文件 /hdfs文件

从本地路径上传文件至 hdfs
hdfs dfs -get /hdfs路径 /本地路径
#和get命令的效果相同
hdfs dfs -copyToLocal /hdfs路劲 /本地路径
在hdfs文件系统中下载文件
hdfs dfs -mkdir /shell在hdfs文件系统中创建目录
hdfs dfs -rm /edits.txt
hdfs dfs -rm -r /shell
在hdfs文件系统中删除文件
hdfs dfs -mv /xcall.sh /call.sh
hdfs dfs -mv /call.sh /shell
在hdfs文件系统中修改文件名称(也可以用来移动文件到目录) 
hdfs dfs -cp /xrsync.sh /shell在 hdfs中拷贝文件到目录
hdfs dfs -rmr /shell递归删除目录
hdfs dfs -ls file:///home/hadoop/列出本地文件的内容(默认是 hdfs 文件系统)
#Linux find 命令
find . -name 'edit*'
#hdfs find 命令
#在HDFS根目录中,查找part-r-00000文件
hadoop fs -find / -name part-r-00000
查找文件

hdfs 与 getconf 结合使用

命令说明
hdfs getconf -namenodes获取NameNode的节点名称(可能有多个)
#用相同命令可获取其他的属性值
hdfs getconf -confKey dfs.namenode.fs-limits.min-block-size
获取hdfs最小块信息
hdfs getconf -nnRpcAddresses查找 hdfs 的 NameNode 的 RPC 地址

hdfs 与 dfsadmin结合使用

命令说明
hdfs dfsadmin -help safemode助帮助信息
hdfs dfsadmin查看hdfs dfsadmin的子命令
hdfs dfsadmin -safemode get查看当前模式
#进入安全模式
hdfs dfsadmin -safemode enter
#退出安全模式
hdfs dfsadmin -safemode leave
进入/退出安全模式

hdfs 与 fsck 结合使用

命令说明
hadoop checknative检查压缩库本地安装情况
hadoop namenode -format格式化名称节点
hadoop jar /hlbdx/install/hadoop-2.6.0-cdh5.14.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar pi 10 10执行自定义jar包

HDFS安全模式

安全模式是 HDFS 所处的一种特俗状态,在这种状态下,文件系统只接受读数据请求,不接受删除、修改等变更请求。

在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向NameNode汇报可用的block状态,当整个系统达到安全标准时,HDFS 自动离开安全模式。如果HDFS处于安全模式下,则文件block不能进行任何的副本复制操作,因此达到最小的副本数的要求是基于DataNode启动时的状态来判定的,启动时不会再做任何复制(从而达到最小副本数量要求)。

HDFS集群刚启动的时候,默认30s的时间是处于安全期的,只有过了30s后,集群脱离了安全期,才可以对集群进行操作。

 [hadoop@node01 hadoop]$ hdfs dfsadmin -safemode  
 Usage: hdfs dfsadmin [-safemode enter | leave | get | wait]

此博文仅供学习参考,如有错误欢迎指正。

上一篇《大数据-基础环境搭建

下一篇《大数据-HDFS(二)

希望对大数据相关技术感兴趣的友友们关注一下,大家可以一起交流学习哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值