云技术与大数据
大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。
云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现;
GOOGLE的集群系统
Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。核心组件是3个:
GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节。
MapReduce。Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。
BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。
Hadoop的产生
Hadoop原来是Apache Lucene下的一个子项目,它最初是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目。
Hadoop 是一个实现了 MapReduce 计算模型的开源分布式并行编程框架,适用于大规模集群上的海量数据 处理,目前最成功的应用是分布式搜索引擎。
Hadoop包括HDFS、MapReduce、HBase、Hive 和ZooKeeper等成员组成。
HDFS
分布式文件系统是Hadoop云计算的基础。
HDFS (Hadoop Distributed File System)是Google GFS 的开源版本,一个高度容错的分布式文件系统,适合部署在廉价的机器上。HDFS能够提供高吞吐量的数据访问,支持大文件存储,非常适合大规模数据集上的应用。
HDFS采用master/slave架构。一个HDFS集群是有一个Namenode(master)和一定数目的Datanode(slave)组成。
HDFS的数据写入
HDFS的数据读取
HDFS的特点
简单的一致性模型
HDFS应用需要一个“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐 量的数据访问成为可能。Map/Reduce应用或者网络爬虫应用都非常适合这个模型。目前还有计划在将来扩充这个模型,使之支持文件的附加写操作;
HDFS的数据级别
作为通用的分布式文件系统并不是最好的选择,它在并发控制、缓存一致性以及小文件读写的效率上是比较弱的。但是它有自己明确的设计目标,那就是支 持大的数据文件(兆至T级),并且这些文件以顺序读为主,以文件读的高吞吐量为目标,并且与MapReduce框架紧密结合。
MapReduce
MapReduce的总体结构
运行于Hadoop的MapReduce应用程序最基本的组成部分包括:
一个Mapper类
一个Reducer类
一个创建JobConf的执行程序
还可以包括Combiner,InputFormat, OutputFormat, Partition。
Map/Reduce函数
Demo:字数统计
foo.txt: Sweet, this is the foo file
bar.txt: This is the bar file
期望输出:
sweet 1
this 2
is 2
…
Mapper
Reducer
日志分析
日志分析使用hadoop的好处
利用分布式计算的强大计算能力,很容易分析原始日志文件,生成按索引归类的文件。
查询时,map/reduce模型有天然的排序功能,又可在map中过滤。
以日志文件为基础,利用map/reduce模型,可以很方便的扩展其它应用,如日志分析,数据挖掘。
HDFS中可以存储海量数据。
系统横向扩展容易。