【大数据数据应用】

  1. 大数据的特征:
  1. 数据量大(Volume):非结构化数据的超大规模和增长,导致数据集合的规模不断扩大,数据单位已从GB到TB再到PB,甚至开始以EB和ZB来计数。
  2. 类型繁多(Variety):大数据的类型不仅包括网络日志、音频、视频、图片、地理位置信息等结构化数据,还包括半结构化数据甚至使非结构化数据,具有异构型和多样性的特点。
  3. 价值密度低(Value):大数据本身存在较大的潜在价值,但由于大数据的数据量大,其价值往往呈现稀疏性的特点。虽然单位价值数据的价值密度在不断降低,但是数据的整体价值在提高。
  4. 速度快时效高(Velocity):要求大数据的处理速度 快,时效性高,需要实时分析而非批量式分析,数据的输入、处理和分析连贯性的处理。
  1. 结构化数据和非结构化数据:
  1. 结构化数据:指关系模型数据,即以关系数据库表形式管理的数据,结合到典型场景中更容易理解,比如企业ERP、OA、HR里的数据。
  2. 非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种形式的图片、视频等。
  3. 半结构化数据:指非关系模型的、有基本固定结构模式的数据。例如日志文件、XML文档、JSON文档、E-mail等。
  1. Hadoop生态圈:

我们通常说到的hadoop包括两个部分,一是Hadoop核心技术(或者说狭义上的hadoop),对应为apache开源社区的一个项目,主要包括三部分内容:hdfs,mapreduce,yarn。其中hdfs用来储存海量数据,mapreduce用来对海量数据进行计算,yarn是一个通用的资源调度框架(是在hadoop2.0中产生的)。

另一部分指广义的,广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如hbase、hive、spack、pig、zookeeper、kafka、flume、phoenix、sqoop等。

生态圈中的这些组件或产品相互之间会有依赖,但又各自独立。比如habse和kafka会依赖zookeeper,hive会依赖mapreduce。

  1. Hadoop hdfs架构:
  1. HDFS产生背景:

随着数据量的越来越大,在一个操作系统存不下赛哦有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS是分布式文件管理系统中的一种。

  1. HDFS的定义:

HDFS(Hadoop Distributed File Systemctl)是一个文件系统,用于储存文件,通过目录树来定位为文件。它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

  1. HDFS优缺点:

优点:1.高容错性

  1. 数据自动保存多个副本。通过增加副本的形式提高容错性。
  2. 某一个副本丢失后,可以自动恢复。
  1. 适合处理大数据。
  1. 数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据。
  2. 文件规模:能够处理百万规模以上的文件数量,数量相当之大。
  1. 可构建在廉价机器上,通过多副本机制,提高可靠性。

缺点:1.不适合低延迟时数据访问,比如我无法处理毫秒级的储存数据。

  1. 无法高效的对大量小文件进行存储。
  1. 储存大量小文件会占用NameNode大量的内存来储存文件目录和快信息,而NameNode的内存是有限的。
  2. 小文件存储的寻址时间会超过读取时间,违反HDFS的设计目标。
  1. 不支持并发写入、文件会随即修改
  1. 一个文件只能有一个写,不允许多个线程同时写
  2. 仅支持数据追加(append),不支持文件的随即修改
  1. HDFS组成构架
  1. Namenode(nn)就是master,是一个主管者、管理者。
  1. 管理HDFS的名称空间
  2. 配置副本策略
  3. 管理数据块(block)映射信息
  1. Datanode就是slave。Nameenode下达命令,datanode执行实际的操作
  1. 存储实际的数据块
  2. 执行数据块的读/写操作
  1. Client就是客户端。客户端是一个抽象的概念,无论是命令行还是通过API还是web界面来操作都是客户端。
  1. 文件切分。文件上传HDFS的时候,client将文件切分成一个个Block,然后进行上传
  2. 与NameNode交互,获取文件的位置信息
  3. 与DataNode交互,获取或写入数据
  4. Client提供一些命令来管理HDFS,比如NameNode格式化
  5. Client可以通过一些命令来访问HDFS ,比如对HDFS增删改查操作
  1. Secondary NameNode并非NameNode的热备。当NameNode挂掉的时候,并不能马上替换NameNode并提供服务
  1. 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode
  2. 在紧急情况下,可辅助回复NameNode
  1. HDFS文件块大小

HDFS中的文件在物理上是分块存储(Block)块的大小可以通过配置参数(dfs。Blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M。

寻址时间为传输时间的1%时,则为最佳状态。因此,传输时间=10ms/0.01=1000ms=1s而目前磁盘传输速率普遍为100MB/s。

  1. HDFS读的流程
  1. 读取数据流程
  1. 客户端通过Distributed File System向NameNode请求下载文件,NameNode通过查询元数据,找到文件所在的DataNode地址
  2. 挑选一台DataNode(就近原则,然后随机)服务器。请求读取数据
  3. DataNode开始数据传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做实验)
  4. 客户端以Packet为单位接受,先在本地缓存,然后写入目标文件
  1. 写数据流程
  1. 客户端通过Distributed File System模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在
  2. NameNode返回是否可以上传
  3. 客户端请求第一个Block上传到哪几个DataNode服务器上
  4. NameNode返回3个DataNode节点,分别为dn1、dn2、dn3
  5. 客户端通过FSDataOutputSteram模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成
  6. dn1、dn2、dn3逐级应答客户端
  7. 客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传个dn3;dn1每传一个packet会放入一个应答队列等待应答。
  8. 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值