《 Hadoop 3大数据技术快速入门 》的笔记一

第1章 概述

分布式并行运算
用多台计算机参与同一堆数据的处理,这叫作分布式并行运算。实际上,大数据指的是一个分布式并行运算系统。

大数据系统的定位
大数据系统并不是通用计算平台,它仅用于处理数据、分析数据,然后将结果用于其他业务逻辑,而业务逻辑(比如登录注册)是不可以通过大数据系统处理的。
大数据系统的价值
大数据系统借助于普通计算机和普通网络就可实现分布式计算,对硬件没有特殊要求,很平民化,而且软件都是开源的,任何人、任何公司都很容易组建出自己的大数据平台。传统分布式系统需要昂贵的企业级硬件配合其软件系统,而且在扩展硬件时性能的提升比例也不如大数据。

大数据系统的原理
数据系统对被处理的数据是有要求的,数据结构必须是统一的或者可以被抽象成统一结构!这很好理解:**结构统一了,每条数据的处理逻辑也就相同了,于是才可以把数据分成多段并行处理。**人们把统一结构的一堆数据叫作结构化数据,比如数据库表中的各条记录。

大数据系统的组成
Hadoop由HDFS、YarnMapReduce组成:HDFS是分布式文件系统,解决了大量数据存储的问题;Yarn是分布式计算系统的节点资源管理和调度工具;MapReduce是数据计算框架,分成Map和Reduce两个阶段,其中Reduce又隐含了一个Shuffle过程。MapReduce与其他两个不是一个层面上的,MapReduce是帮助我们编写运行于Hadoop系统中的数据处理程序的库。

如何把数据处理分散到不同的计算机上,让每台计算机的计算资源被充分利用起来,比如把新任务分配给空闲的计算机。这就需要一套资源管理和调度系统,而Hadoop中的Yarn就是为了完成这个任务而生的。

第2章 HDFS原理详解

HDFS是建立在操作系统现有文件系统之上的,而不是代替它,也就是说,要访问HDFS时不能用系统文件IO API,而需要用一套更上层的API。

HDFS实现了以廉价计算机构建海量数据存储系统的方案。在集群上运行HDFS程序把它们管理起来,使它们对外看起来像一台硬盘无限大的计算机。

主从结点架构

HDFS最基本的构成就是一台主节点+多台数据节点。主节点叫NameNode(经常简写为NN),数据节点叫DataNode(经常简写为DN)。NameNode主要负责文件目录树管理,DataNode负责对客户端提供文件数据读写服务

数据冗余
客户端先向NameNode发出创建文件的请求(第二步),NameNode告诉它应该将文件放在哪个DataNode上,于是客户端连接那个DataNode,再向它发送要写的数据。DataNode收到数据后保存数据,同时将数据副本放到其他DataNode上,直到所有副本写完,才通知NameNode一次写操作完成。

一个文件在不同的DataNode上都存在,所以当客户端读取文件时可能从不同的DataNode上获取,这样也充分利用了分布式的优势,提高了并行性,

fsimage与edits

文件系统的目录树中的每个节点包含了文件的信息(比如文件名、文件属性等)以及文件与DataNode的对应关系,这些数据称为元数据(meta data)

要读写HDFS中的文件,必须经过NameNode(先从目录树中找到文件Meta数据),所以NameNode容易成为整个系统的瓶颈。为了提升响应速度,在NameNode中,整个文件系统的目录树是放在内存中的。这会带来一个问题:NameNode一旦关机或意外死掉,内存中的数据是无法保存的。

如何解决这个问题呢?其实思路很简单:HDFS引入了一个叫作fsImage的文件,用于保存NameNode的所有元数据(整个目录树就是HFDS文件系统的描述,所以叫fs镜像)。当执行改变文件系统的操作时,依然先写入edits中,只不过每隔一段时间要将edits合并到fsimage中,合并完的edits被扔掉,如此可以保证fsimage与当前最新的元数据没有太大的差距,而edits中保存的实际是fsimage与内存中元数据的差异。

SecondaryNameNode的作用是专门帮助NameNode更新fsimage文件。

ZooKeeper实现自动故障转移

ZooKeeper是一个分布式软件,主要作为其他分布式系统的辅助协调工具,协调各节点间如何相互配合。ZooKeeper可以存储小数据,其组织形式为树形结构,与文件系统类似

ZooKeeper还有一个功能—节点监视,一个客户端可以注册成为某个节点的监视者,当节点被删除时就会收到通知。

收到“大哥”去世的消息后,“小弟”们都试图去ZooKeeper取得一个同步锁(ZooKeeper支持分布式同步锁),一旦有人得到它,其他人便不能再得到,于是得同步锁者成为“大哥”,其他节点只能继续做“小弟”。

防脑裂

如果同时存在两个Active NameNode,客户端可以连接任何一个,客户端发出改变文件或目录的请求时,是不会在两个NameNode间同步的,因为两个Active NameNode都不屑去读edits,那么树目录也就对不上了,这就是脑裂。

HDFS的特点

HDFS也有一些天生的缺点很难克服。一是不支持随机写,只适合一次写入多次读取的使用方式。二是不适合存储大量的小文件。 原因很简单:由于同一时刻只有一个NameNode处于Active状态,因此NameNode的内存大小决定了目录树的最大容量,也就决定了HDFS系统能为多少个文件提供目录条目,如果你向HDFS中存入很多小文件,就很容易占满NameNode的内存而空闲DataNode的大量硬盘空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值