响应式的学校网站,eclipes 网站开发,珠海电视台app下载,企业网站会涉及到的版权问题一、HDFS简介
HDFS#xff08; Hadoop Distributed File System #xff09;#xff0c;意为#xff1a;Hadoop分布式文件系统。是Apache Hadoop核心组件之一#xff0c;作为大数据生态圈最底层的分布式存储服务而存在。分布式文件系统解决大数据如何存储问题。分布式意味…一、HDFS简介
HDFS Hadoop Distributed File System 意为Hadoop分布式文件系统。是Apache Hadoop核心组件之一作为大数据生态圈最底层的分布式存储服务而存在。分布式文件系统解决大数据如何存储问题。分布式意味着是横跨在多台计算机上的存储系统。HDFS是一种能够在普通硬件上运行的分布式文件系统它是高度容错的适应于具有大数据集的应用程序它非常适于存储大型数据 (比如 TB 和 PB)。HDFS使用多台计算机存储文件, 并且提供统一的访问接口, 像是访问一个普通文件系统一样使用分布式文件系统。
二、HDFS设计目标
硬件故障Hardware Failure是常态 HDFS可能有成百上千的服务器组成每一个组件都有可能出现故障。因此故障检测和自动快速恢复是HDFS的核心架构目标。HDFS上的应用主要是以流式读取数据Streaming Data Access。HDFS被设计成用于批处理而不是用户交互式的。相较于数据访问的反应时间更注重数据访问的高吞吐量。典型的HDFS文件大小是GB到TB的级别。所以HDFS被调整成支持大文件Large Data Sets。它应该提供很高的聚合数据带宽一个集群中支持数百个节点一个集群中还应该支持千万级别的文件。大部分HDFS应用对文件要求的是write-one-read-many访问模型。一个文件一旦创建、写入、关闭之后就不需要修改了。这一假设简化了数据一致性问题使高吞吐量的数据访问成为可能。移动计算的代价比之移动数据的代价低。一个应用请求的计算离它操作的数据越近就越高效。将计算移动到数据附近比之将数据移动到应用所在显然更好。HDFS被设计为可从一个平台轻松移植到另一个平台。这有助于将HDFS广泛用作大量应用程序的首选平台。
三、HDFS应用场景 四、HDFS重要特性
1. 主从架构 HDFS采用master/slave架构。一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是HDFS主节点Datanode是HDFS从节点两种角色各司其职共同协调完成分布式的文件存储服务。 2. 分块存储机制 HDFS中的文件在物理上是分块存储block的块的大小可以通过配置参数来规定参数位于hdfs-default.xml中dfs.blocksize。默认大小是128M134217728。 3. 副本机制
文件的所有block都会有副本。每个文件的block大小dfs.blocksize和副本系数dfs.replication都是可配置的。副本系数可以在文件创建的时候指定也可以在之后通过命令改变。默认dfs.replication的值是3也就是会额外再复制2份连同本身总共3份副本。
4. namespace
HDFS支持传统的层次型文件组织结构。用户可以创建目录然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似用户可以创建、删除、移动或重命名文件。Namenode负责维护文件系统的namespace名称空间任何对文件系统名称空间或属性的修改都将被Namenode记录下来。HDFS会给客户端提供一个统一的抽象目录树客户端通过路径来访问文件形如hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。
5. 元数据管理
在HDFS中Namenode管理的元数据具有两种类型
文件自身属性信息文件名称、权限修改时间文件大小复制因子数据块大小。文件块位置映射信息记录文件块和DataNode之间的映射信息即哪个块位于哪个节点上。
6. 数据块存储
文件的各个block的具体存储管理由DataNode节点承担。每一个block都可以在多个DataNode上存储。 五、微博HDFS案例
1. HDFS Shell CLI客户端
命令行界面英语command-line interface缩写CLI是指用户通过键盘输入指令计算机接收到指令后予以执行一种人际交互方式。Hadoop提供了文件系统的shell命令行客户端使用方法如下 hdfs [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] SUBCOMMANDAdmin Commands、Client Commands、Daemon Commands。 跟文件系统读写使用相关的命令是 hdfs dfs [generic options]
说明
HDFS Shell CLI支持操作多种文件系统包括本地文件系统file:///、分布式文件系统hdfs://nn:8020等操作的是什么文件系统取决于URL中的前缀协议。如果没有指定前缀则将会读取环境变量中的fs.defaultFS属性以该属性值作为默认文件系统 hdfs dfs -ls file:/// #操作本地文件系统 hdfs dfs -ls hdfs://node1:8020/ #操作HDFS分布式文件系统 hdfs dfs -ls / #直接根目录没有指定协议 将加载读取fs.defaultFS值 hadoop dfs、hdfs dfs、 hadoop fs 三者区别 hadoop dfs 只能操作HDFS文件系统包括与Local FS间的操作不过已经Deprecated hdfs dfs 只能操作HDFS文件系统相关包括与Local FS间的操作,常用 hadoop fs 可操作任意文件系统不仅仅是hdfs文件系统使用范围更广
目前版本来看官方最终推荐使用的是hadoop fs。当然hdfs dfs在市面上的使用也比较多。 HDFS文件系统的操作命令很多和Linux类似因此学习成本相对较低。可以通过hadoop fs -help命令来查看每个命令的详细用法。
2. 微博案例--HDFS Shell实操
微博用户数据HDFS操作 需求微博作为社交平台拥有大量的用户评论数据。为了更好的分析微博用户的行为和习惯进行精准的营销和推荐。可以将微博的用户评论数据上传到HDFS供后续其他大规模文本、情感分析程序来处理。因为HDFS作为分布式文件存储系统是整个大数据平台的最底层的核心。 1目录规划 2创建规划目录
命令hadoop fs -mkdir [-p] path ... path 为待创建的目录 -p选项的行为与Unix mkdir -p非常相似它会沿着路径创建父目录。 hadoop fs -mkdir /common hadoop fs -mkdir /workspace hadoop fs -mkdir /tmp/ hadoop fs -mkdir /warehouse hadoop fs -mkdir /source 3查看指定目录下内容
命令hadoop fs -ls [-h] [-R] [path ...] path 指定目录路径 -h 人性化显示文件size -R 递归查看指定目录及其子目录
4上传文件到指定目录下1
hadoop fs -put [-f] [-p] localsrc ... dst -f 覆盖目标文件已存在下 -p 保留访问和修改时间所有权和权限。 localsrc 本地文件系统客户端所在机器 dst 目标文件系统HDFS hadoop fs -mkdir -p /source/weibo/star/comment_log/20190810_node1.itcast.cn/ hadoop fs -put caixukun.csv /source/weibo/star/comment_log/20190810_node1.itcast.cn 5上传文件到指定目录下2
命令hadoop fs -moveFromLocal localsrc ... dst 和-put功能意义只不过上传结束源数据会被删除 hadoop fs -moveFromLocal caixukun.csv /tmp/ 6查看HDFS文件内容1
hadoop fs -cat src ... 读取指定文件全部内容显示在标准输出控制台。 注意对于大文件内容读取慎重。 hadoop fs -cat /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv 7查看HDFS文件内容2
hadoop fs -head file 查看文件前1KB的内容。 hadoop fs -head /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv 8查看HDFS文件内容3
hadoop fs -tail [-f] file 查看文件最后1KB的内容 -f选择可以动态显示文件中追加的内容。 hadoop fs -tail /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv 9下载HDFS文件1
hadoop fs -get [-f] [-p] src ... localdst 下载文件到本地文件系统指定目录localdst必须是目录 -f 覆盖目标文件已存在下 -p 保留访问和修改时间所有权和权限 hadoop fs -get /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv ./ 10合并下载HDFS文件2
hadoop fs -getmerge [-nl] [-skip-empty-file] src localdst 下载多个文件合并到本地文件系统的一个文件中。 -nl选项表示在每个文件末尾添加换行符
11拷贝HDFS文件
命令hadoop fs -cp [-f] src ... dst -f 覆盖目标文件已存在下 hadoop fs -mkdir -p /source/weibo/star/comment_log/20190811_node1.itcast.cn/ hadoop fs -cp /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv /source/weibo/star/comment_log/20190811_node1.itcast.cn/ 12追加数据到HDFS文件中
hadoop fs -appendToFile localsrc ... dst 将所有给定本地文件的内容追加到给定dst文件。 dst如果文件不存在将创建该文件。 如果localSrc为-则输入为从标准输入中读取。 hadoop fs -appendToFile caixukun_new.csv /source/weibo/star/comment_log/20190811_node1.itcast.cn/caixukun.csv 13查看HDFS磁盘空间
hadoop fs -df [-h] [path ...] 显示文件系统的容量可用空间和已用空间 14查看HDFS文件使用的空间量
hadoop fs -du [-s] [-h] path ... -s表示显示指定路径文件长度的汇总摘要而不是单个文件的摘要。 -h选项将以“人类可读”的方式格式化文件大小 hadoop fs -du -s -h -v /source/weibo/ 15HDFS数据移动操作
hadoop fs -mv src ... dst 移动文件到指定文件夹下 可以使用该命令移动数据重命名文件的名称 hadoop fs -mv /source/weibo/star/comment_log/20190810_node1.itcast.cn/caixukun.csv /tmp/caixukun_dirtydata.csv 16修改HDFS文件副本个数
hadoop fs -setrep [-R] [-w] rep path ... 修改指定文件的副本个数。 -R表示递归 修改文件夹下及其所有 -w 客户端是否等待副本修改完毕。 hadoop fs -setrep -w 2 /tmp/caixukun_dirtydata.csv 3. HDFS其他Shell命令操作
命令官方指导文档
Apache Hadoop 3.1.4 – Overview
友情提示
常见的操作自己最好能够记住其他操作可以根据需要查询文档使用。
命令属于多用多会孰能生巧不用就忘。