您的位置:首页 > 运维架构

(3) Hadoop-HDFS分布式文件系统

2017-12-19 00:07 176 查看

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客户端好用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: