大数据概况及hadoop生态系统

大数据特征:

4V特征:
Volume(大数据量)
Velocity(速度快)
Varitey(多样化)
结构化数据、半结构化数据、非结构化数据
Value(价值密度低)
固有特性:
时效性
不可变性
在这里插入图片描述

Hadoop发行版本:

社区版:Apache Hadoop
Cloudera发行版:CDH(开源)
Hortonworks发行版:HDP(半开源)

Hadoop的特点

高扩展性,可伸缩
高可靠性:
多副本机制,容错高
低成本
无共享架构
灵活,可存储任意类型数据
开源,社区活跃

Hadoop生态圈

Hadoop核心:
HDFS、MapReduce、YARN、common、core
数据查询分析:
Hive、Pig、Impala、Presto
协调管理:
HCatalog、Zookeeper、Ambari
数据迁移:
Sqoop、Flume
Spark、NoSQL(Hbase)、机器学习、任务调度等
在这里插入图片描述

Zookeeper

分布式应用程序协调服务
解决分布式急群众应用系统的一致性问题
提供的功能
配置管理、明明服务、分布式同步、队列管理、集群管理等
特性
全局数据一致
可靠性、顺序性、实时性
数据更新原子性
Zookeeper集群
角色:Leader、Follower、Observer

Hadoop架构

HDFS(Hadoop Distributed File System)
分布式文件系统,解决分布式存储
MapReduce
分布式计算框架
YARN
分布式资源管理系统
在Hadoop 2.x中引入
Common
支持所有其他模块的公共工具程序

HDFS特点

HDFS优点
支持处理超大文件
可运行在廉价机器上
高容错性
流式文件写入
HDFS缺点
不适合低延时数据访问场景
不适合小文件存取场景
不适合并发写入,文件随机修改场景

HDFS CLI(命令行)

基本格式

hdfs dfs -cmd<args>
haddop fs -cmd<args>(已过时)

命令和linux类似
创建存放数据文件的目录:

hdfs dfs -mkdir /hdfs/shell

查看目录

hdfs dfs -ls /hdfs/shell

递归查看目录

hdfs dfs -ls -R /hdfs

上传文件:

hdfs dfs -put /a.txt /hdfs

下载文件到本地:

hdfs dfs -get /hdfs/shell/a.txt

查看文件:

hdfs dfs -test /hdfs/shell/a.txt
hdfs dfs -cat /hdfs/shell/a.txt

统计目录下文件大小

hdfs dfs -du /hdfs/shell/a.txt
hdfs dfs -count /hdfs/shell/a.txt

删除移动数据文件和目录

hdfs dfs -rm /hdfs/shell/a.txt
hdfs dfs -rm -R /hdfs	递归删除目录下所有子目录和文件

HDFS角色

Client:客户端
NameNode (NN):元数据节点
管理文件系统的Namespace/元数据
一个HDFS集群只有一个Active的NN
DataNode (DN):数据节点
数据存储节点,保存和检索Block
一个集群可以有多个数据节点
Secondary NameNode (SNN):从元数据节点
合并NameNode的edit logs到fsimage文件中
辅助NN将内存中元数据信息持久化

HDFS副本机制

Block:数据块
HDFS最基本的存储单元
默认块大小:128M(2.x)
副本机制
作用:避免数据丢失
副本数默认为3
存放机制:
一个在本地机架节点
一个在同一个机架不同节点
一个在不同机架的节点

HDFS高可用(High Availability)

在1.x版本中
存在Namenode单点问题
在2.x版本中
解决:HDFS Federation方式,共享DN资源
Active Namenode
对外提供服务
Standby Namenode
Active故障时可切换为Active

HDFS文件格式

HDFS支持以不同格式存储所有类型的文件
文本、二进制
未压缩、压缩
为了最佳的Map-Reduce处理,文件需可分割
SequenceFile
Avro File
RCFile&ORCFile
Parquet File

HDFS读文件的流程

1、跟namenode通信查询元数据(block所在的datanode节点),找到文件块所在的datanode服务器
2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)
4、客户端以packet为单位接收,先在本地缓存,然后写入目标文件,后面的block块就相当于是append到前面的block块最后合成最终需要的文件。

HDFS写文件的流程

1、根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
2、namenode返回是否可以上传
3、client会先对文件进行切分,比如一个blok块128m,文件有300m就会被切分成3个块,一个128M、一个128M、一个44M请求第一个 block该传输到哪些datanode服务器上
4、namenode返回datanode的服务器
5、client请求一台datanode上传数据(本质上是一个RPC调用,建立pipeline),第一个datanode收到请求会继续调用第二个datanode,然后第二个调用第三个datanode,将整个pipeline建立完成,逐级返回客户端
6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(一个packet为64kb),当然在写入的时候datanode会进行数据校验,它并不是通过一个packet进行一次校验而是以chunk为单位进行校验(512byte),第一台datanode收到一个packet就会传给第二台,第二台传给第三台;第一台每传一个packet会放入一个应答队列等待应答
7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值