分布式(多台服务器干同一件事)文件系统 解决海量数据存储
思维特点(
数据量大
类型繁多
价值密度低
处理速度快
)
HDFS技术原理
存储
查询
处理
采集
单点瓶颈 一个NameNode管理不过来
不能阻碍-------->(集群扩展 需要足够多的服务器)
通过联邦机制来解决 引入多个NameNode 同时接受请求 在块层面做好请求
-----------------------------------------------------------
client DataNode多实例部暑
Client 将文件切分成一个个Block 上传
NameNode单实例部署
处理客户端读写请求
管理数据块
NameNode选举 一主一备
当集群运行 向ZooKeeper 写自己的信息 谁先写完谁主
主备倒换:主实时的Zookeeper之间进行心跳 当一段时间没有心跳 将备提升为主
DataNode 执行数据块读写
ZKFC进程需在NameNode的节点中部署
客户端将文件划分为多个Block 根据DataNode的地址信息 按顺序写入到每一个DataNode中
主备之间进行数据同步的条件
1 .每做一个操作写一个操作 edltlog.new文件
当文件到64M 就会将文件传到JN 上 备NameNode 到JN下载
2 .当时间间隔达到一小时
edltlog.new 日志文件 记录所做过的操作
fsimage快照文件 当前文件系统的状态
当两个条件都不满足 没有同步时 会进行慢慢恢复
访问入口 切分 client
把数据写到硬盘 DataNode(数据结点) DataNode数据的读写操作
一共12T 两个只能存储10T |
切分 数据会被切分成多个128mb的数据块|-----最小化磁盘寻址时间
记录数据存储位置 和 块之间的关系 每个数据块都会产生一个150K的元数据 用来记录
|
NameNode节点主备管理状态由ZKFC负责 NameNode
数据在存储的时候会进行备份 默认备份3份
存放策略(不同的服务器)
1写入到客户端本地
2 远端机架的任意结点
3 和客户端同一个机架的不同结点
读取 就近原则
距离计算公式 0客户端的同一节点'2同一机架的不同服务器 '4 远端
ZooKeeper为什么有三个 互相进行投票
存活条件 是半数以上的结点存活时 集群才能正常使用 3个存活两个
四个存活三个 都容灾一个
适合做
大文件存储
流式数据访问 ----从开头到结尾 不能随机读
不适合
无法高效对大量小文件存储
低延迟读取
不支持随机读写文件 支持追加写
Zookeeper 由Server节点组成
|
一个Leader 其余 Follower
(最终一致性 S对外视图一样
实时性
可靠性 被一个S接受=被所有S接受
等待无关性
原子性
顺序一致性)
ACL应用于特定的znode
setACL /znode scheme(认证方式):id:perm
worlk任何人
auth 不适用ID 只有认证
digest 使用username:password生成的MD5进行访问
调用Zookeeper客户端 zkCli.sh-server ip :24002
创建结点 create/node
HDFS fsck /用于检测数据块的完整性
Zookeeper 的scheme认证方式
Digest
Auth
Ip
World
Super
HDFS的Shell操作
hadoop fs 命令| hdfs dfs 命令