1. HDFS入门
1.1 HDFS基本概念
- HDFS就是一个分布式文件系统,既然是文件系统就会有树形结构,既然是分布式就会涉及到集群的概念。所有文件系统都是用来存储数据的,而它的特点就是用来处理大数据和存储大数据。
1.2 HDFS解决的问题那些
-
- 故障的检测和自动快速恢复 (一旦计算失败会恢复到曾经的状态从新计算)
-
- 注重是数据高吞吐量 (吞吐量代表的是单位时间内处理的数据量)
-
- 可以用来存储大数据 GB 到 TB
-
- 一旦写入就不支持修改
-
- 并行计算不需要移动数据
1.3 HDFS 特性以及相关概念呢
-
- master/slave架构 namenode与datanode,resourceManage与nodemanag
-
- block块 每个文件都是一个block块,大文件会划分为多个block块,块的大小2.Xhadoop默认是128 ,1.Xhadoop默认是64.
-
- namenode存储的是数据元数据信息,datanode存储的数据真是内容
-
- Block块的副本机制,就是为了提高容错性
-
- 一次写入,多次读取 而且不支持修改
2. HDFS 实现原理
2.1 原理分析
下面这张图就是原理
首先大家要清楚最原始的纵向扩展以及无法满足目前数据的存储,因此产生了横向扩展(增加服务器数量),但是横向存储的不利于数据的存储,因此又产生了block的概念,将大文件按照128的比例去拆分。分别存储到不同服务器中,为了提高容错性,引入的副本的内容。为了方便的管理集群快速索引数据就有产生了NameNode这个东东,NameNode所在的服务器中存储的是数据的元数据信息。按照这个逻辑就产生了HDFS,这就是产生的原理。
总结一下
-
- 纵向的扩展
-
- 数据的拆分
-
- 副本容错性
-
- 元数据的索引
-
2.2 NameNode概述
- NameNode 上面存储的是DataNode上面所有文件的元数据信息,需要很大的内存,也是单点故障的所在。
2.3 DataNode概述
- dataNode 是文件实际存储的所在地,当dataNode启动的时候会上报自己的Block块的信息,Block块通俗的将就文件的列表,每个文件都是一个Block,dataNode与NameNode彼此直接的联系是通过心跳机制,心跳监听默认是3秒,如果超时默认DataNode挂掉,就会由其他dataNode去接管
2.4 HDFS 写入流程
- 关于文件的从HDFS上面 文件的读取或者写入流程 就看我总结的图片就够用了。 希望能有朋友可以帮我指正啊 。。。
block的划分是在客户端完成的
2.5 HDFS 读取流程
block的合并是在客户端完成的
3.HDFS的shell指令
3.1 上面那张图就是HDFS指令说明,下面会介绍一些细节提示一下大家
3.1.1 关于路径问题
1.
hadoop fs -ls hdfs://namenode:port/ 这个是全路径显示hdfs文件的系统
例如 是本地的文件系统 默认是 file://localhost:port/
不同的文件系统 对应的协议就是 FS,HFTP FS,S3 FS 这个样子
可以简写 hadoop fs -ls / 这个就是简写 因为fs.defaultFS 中有配置对应的全路径 ,记住操作的文件列表 还有元数据信息都是namenode上面所有也只是针对namenode去操作
第二个:core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-1:9000</value>
</property>
3.1.2 修改hdfs上面用户主
- chgrp
使用方法:hadoop fs -chgrp [-R] GROUP URI [URI ...]
功能:更改文件组的关联。用户必须是文件的所有者,否则是超级用户。
-R 将使改变在目录结构下递归进行。
示例:hadoop fs -chgrp othergroup /hadoop/hadoopfile
3.1.3 将多个文件合并下载
- - getmerge
功能:合并下载多个文件
示例:比如 hdfs 的目录 /aaa/下有多个文件:log.1, log.2,log.3,...
hadoop fs -getmerge /aaa/log.* ./log.sum
3.1.4 修改文件副本数
- - setrep
功能:改变一个文件的副本系数。-R 选项用于递归改变目录下所有文件的副本
系数。
示例:hadoop fs -setrep -w 3 -R /user/hadoop/dir1
3.1.5 统计文件可用空间
- df
功能:统计文件系统的可用空间信息
示例:hadoop fs -df -h / // h代表human的意思显示的能让人看懂
4.HDFS的应用开发
5.补充知识点
问题一 : namenode 本身不序列化 节点的上报 过程就做(安全启动模式),元数据保存在内存中比磁盘要快,namenode 需要大内存。如果元数据存储在内容中 为什么还会在本地看到呢 ?
解答 : namenode上面的元数据信息不会持久存储在namenode上面,一旦关机从起就没有了
问题二 :Jounal 记录的是操作日志 – 恢复操作记录,防止在运行的过程中因为意外中断 这个文件在哪里啊 ?
1. 注意点:针对块的副本 不是文件的副本!!!这点很关键
2. 注意点:rack 机架 机架感知 (一般20台以内就可以 小公司就买阿里云),2个节点在同一个机架上面 ,另一个节点在另外一个机架上面
3. 注意点
文件上传
A B C 三台相当于并行 从第4方的角度去看
a-》 b -》 c 是 串行 按照数据包的流程
RCP 通信 客户端进行block块的划分
备份数 = 实际数 = 副本数 在Hadoop中
recusive
it
stop
注释的快捷键
建立错误的资源库
idea 启动的时候回去加载环境变量
下载
crc 校验 tlis.exe 本地校验 是否开启本地校验
删除 是否递归删除
window是客户端 提交都是 三个备份
Linux 默认都是2 个备份 原因的话就根据配置文件有关
也可以通过流的形式去调用
日志的采集
数据库 -- hdfs
前端 - 数据库
java 还有 shell 都可以
shell 脚本 wget 什么意思 ? shell 脚本自己写一边 练习吧感觉比window客户端好用!