一、大数据与云计算
1.云计算是并行计算、分布式计算和网格计算的发展。
2云计算服务类型:将基础设施作为服务laas、将平台作为服务paas 、将软件作为服务saas 。
3.云计算体系结构分为四层:物理资源层、资源池层,管理中间件层,SOA(service-oriented-architecture,面向服务的体系结构)构建层。
4.云计算有更低的硬件和网络成本、更低的管理成本和电力成本,也有更高的资源利用率。
5.云计算特点:超大规模、 虚拟化、高可靠性、 通用性 、高可伸缩性、 按需服务、 极其廉价
二、Google云计算原理和应用
Google云计算技术包括:Google文件系统GFS、分布式计算编程模型MapReduce 、分布式锁Chubby、分布式结构化数据表BigTable 、分布式存储系统Megastore 、分布式监控系统Dapper 、海量的交互式分析工具D remel ,以及内存大数据分析系统powerdrill。
2.GFS是一个大型的分布式文件系统Google File System
3.GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个chunk,每一个chunk都有一个索引号。
4.GFS特点:采用中心服务器模式、不缓存数据 、在用户态下实现 、只提供专用接口 5.master容错,Master上保存了GFS文件系统的三种元数据
Name Space,文件系统目录结构 、Chunk与文件名的映射表、 Chunk副本的位置信息(默认有三个副本)
6.chunk server容错:GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB,每个Chunk又划分为若干Block(64KB),每个Block对应一个32bit的校验和,保证数据正确。
7.系统管理技术:大规模集群安装技术、故障检测技术、节点动态加入技术 节能技术 8.mapreduce模型:Map函数--对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,这使得它们可以充分并行化。reduce函数--操作—对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,reduce也可以在并行环境下执行。 9. MapReduce函数把输入文件分成M块,每块大概16M~64MB。
10.Chubby几个重要的特性:Chubby不支持内部文件的移动;不记录文件的最后访问时间;另外在Chubby中并没有符号连接(Symbolic Link,又叫软连接,类似于Windows系统中的快捷方式)和硬连接(Hard Link,类似于别名)的概念
11.用户打开某个节点的同时会获取一个类似于UNIX中文件描述符(File Descriptor)的句柄,这个句柄由以下三个部分组成 :
校验数位:防止其他用户创建或猜测这个句柄 、序号:确定句柄由当前还是以前的主服务器创建 、模式信息:用于新的主服务器重新创建一个旧句柄 。 补充:Bigtable是Google开发的基于GFS和Chubby 的分布式存储系统。
12.分布式结构化数据表Bigtable 设计动机与目标:需要存储的数据种类繁多、海量的服务请求、商用数据库无法满足Google的需求。
13. Bigtable选用了Google自己开发的分布式锁服务Chubby
14.Google应用程序引擎 :Google App Engine为每个应用程序提供了一个安全运行环境,该沙盒可以保证每个应用程序能够安全的隔离运行。 第五章、hadoop2.0
1.2002年开源组织Apache成立开源搜索引擎项目Nutch,
2004年 Google三大论文, Apache实现了Nutch版的NDFS和MapReduce 2006年 NDFS和MapReduce移出Nutch,形成独立项目,称为Hadoop。
2.hadoop分布式文件系统HDFS可以部署在廉价的硬件上,能够高容错、可靠的存储海量数据(可以达到TB甚至PB级)。它还可以和Yarn 中的mapreduce编程模型很好的结合,为应用程序提供高吞吐量的数据访问,适用于大数据应用程序。 3.HDFS架构:
4.HDFS内部特性:冗余备份、副本存放 副本选择
HDFS会尽量使用离程序最近的副本来满足用户请求,这样可以减少总带宽消耗和读延时。如果在读取程序的同一个机架上有一个副本,那么就使用这个副本;如果HDFS机群跨了多个数据中心,那么读取程序将优先考虑本地数据中心的副本。
HDFS的架构支持数据均衡策略。如果某个DataNode的剩余磁盘空间下降到一定程度,按照均衡策略,系统会自动把数据从这个DataNode移动到其他节点。当对某个文件有很高 需求时,系统可能会启动一个计划创建该文件的新副本,并重新平衡集群中的其他数据。
4心跳检测 5数据完整性检测 6元数据磁盘失效7 简单一致性模型、流式数据访问 客户端缓存
客户端创建文件的请求不是立即到达NameNode,HDFS客户端先把数据缓存到本地的一个临时文件,程序的写操作透明地重定向到这个临时文件。 当这个临时文件累积的数据超过一个块的大小(128MB)时,客户端才会联系NameNode。NameNode在文件系统中插入文件名,给它分配一个数据块,这样客户端就把数据从本地的缓存刷新到指定的数据块中。当文件关闭后,临时文件中剩余的未刷新数据也会被传输到DataNode中,然后客户端告诉NameNode文件已关闭,此时NameNode才将文件创建操作写入日志进行存储。如果NameNode在文件关闭之前死机,那么文件将会丢失。 如果不采用客户端缓存,网络速度和拥塞都会对输出产生很大的影响。 流水线复制
当客户端准备写数据到HDFS的文件中时,数据一开始会写入本地临时文件。假设该文件的复制因子是3,当本地临时文件积累到一个数据块的大小时,客户端会从NameNode获取一个副本存放的DataNode列表,列表中的DataNode都将保存那个数据块的一个副本。客户端首先向第一个DataNode传输数据,第一个DataNode一小块一小块(4kB )的接受数据, 写入本地文件的同时,把接受到的数据传输给列表的第二个DataNode;第二个DataNode以同样的方式边收边传,把数据传输给第三个DataNode;第三个DataNode把数据写入本地文件。DataNode从前一个节点接受数据的同时,即时把数据传给后面的节点,这就是流水线复制 10.架构特征 11.超大规模数据集 第六章、hadoop2.0大家族
1.Hbase是基于Hadoop的开源分布式数据库,它以Google的BigTable为原型,设计并实现了具有 高可靠性 高性能 列存储 可伸缩 实时读写 的分布式数据库系统。Hbase不仅仅在设计上不同于一般的关系型数据库,在功能上区别更大,表现在HBase适合于存储非结构化数据,Hbase是基于列的而不是基于行的模式,Hbase在Hadoop之上提供了类似于BigTable的能力。 2.hadoop逻辑模型
元素由行健、列(<列族>:<限定符>)和时间戳唯一确定,元素中的数据以字节码的形式存储,没有类型之分。行键是数据行在表中的唯一标识,并作为检索记录的主键。 3.Hive是一个构建在Hadoop上的数据仓库框架,它起源于Facebook内部信息处理平台。
4.Hive部署:按metastore存储位置的不同,其部署模式分为内嵌模式、本地摸索和完全远程模式。
5.Flume是一个分布式高性能、高可靠的数据传输工具,包含Source、Channel、Sink三个部分,Flume 将三者构成的统一整体称为agent,启动时必须以agent为单位启动Flume 。
1)它负责读取原始数据,目前Flume支持大量类型 ,用户可以自定义Source,使用时在配置文件里声明即可。
2)它负责将从Source端传来的数据存入Channel,目前Flume包含三中类型的channel,即memory,JDBC和file,当传输数据量较大时,应当考虑使用file channel。用户也可以自己定义channel,使用时在配置文件里声明即可。Flume的分用、复用和过滤功能即在于此,通过定义并控制多个相互无关的channel,可以实现数据发往不同地点而不干涉。
3)它负责从Channel中取出并发送数据 ,Flume 当前支持HDFS,logger,Avro ,thrift,IRC,file和Hbase等大量类型的sink ,Sink内部都是使用netty来发送数据的 。