Hadoop基础学习

来源:互联网 发布:淘宝产品短连接 编辑:程序博客网 时间:2024/05/16 07:03

一,大数据初识
1,大数据的三大特征:大容量,多类型,高时效;
2,结构化数据表示可用二维表表示并存在数据库中的数据;非结构化数据包括图片视频音频等。
3,大数据并行计算:将一个计算任务分解成多个并行子任务并分配给不同的处理器,各个处理器之间相互协同,达到加速计算速度提升计算规模的目的。
4,大数据处理的容错性
     1)存储容错:RAID冗余磁盘阵列
     2)计算任务容错:失效节点检测,计算任务迁移,数据定位与获取。
5,云计算:利用大量计算节点构成的可动态调整的虚拟化计算资源,通过并行化和分布式计算技术,实现业务质量可控的大数据处理的计算技术。
6,Hadoop是一个能对大数据进行可靠的分布式处理的开源框架。包括Hadoop Common,HDFS,MapReduce,Hbase等,其中Hadoop Common是隐藏在幕后为架构提供基础支持。
7,大数据处理架构图
数据库MYSQLHadoopJDBC - Garfield - 张广辉的博客

8,Hive
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
 
二,MapReduce
Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programming model),是一个用于处理和生成大规模数据集的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务都可用这个模型来表达。
1  原理
Hadoop基础学习 - Garfield - 张广辉的博客
 Map-Reduce框架的运作完全基于<key,value>对,即数据的输入是一批<key,value>对,生成的结果也是一批<key,value>对,但输入和输出的键值对的类型会不同。

Map:<k1,v1> ->list<k2,v2>

Reduce:<k2,list<v2>> -><k3,v3>

例子:有一些文件,其内容是用户的电话和访问网站的流量。

Hadoop基础学习 - Garfield - 张广辉的博客
 
2 工作过程
2.1 角色:
JobTracker
JobTracker是一个master服务, JobTracker负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。
 TaskTracker
TaskTracker是运行于多个节点上的slaver服务。TaskTracker则负责直接执行每一个task。TaskTracker都需要运行在HDFS的DataNode上。分为map类型和reduce类型。
 JobClient
每一个job都会在用户端通过JobClient类将应用程序以及配置参数打包成jar文件存储在HDFS,并把路径提交到JobTracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。

2.2 流程:一道MapRedcue作业是通过JobClient.rubJob(job)向master节点的JobTracker提交的, JobTracker接到JobClient的请求后把其加入作业队列中。JobTracker一直在等待JobClient通过RPC提交作业,而TaskTracker一直通过RPC向 JobTracker发送心跳heartbeat询问有没有任务可做,如果有,让其派发任务给它执行。如果JobTracker的作业队列不为空, 则TaskTracker发送的心跳将会获得JobTracker给它派发的任务。这是一道pull过程。slave节点的TaskTracker接到任务后在其本地发起Task,执行任务。
Hadoop基础学习 - Garfield - 张广辉的博客

2.3 作业调度
FIFO
Hadoop 中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选 择被执行的作业

公平调度器
为任务分配资源的方法,其目的是随着时间的推移,让提交的作业获取等量的集 群共享资源,让用户公平地共享集群。具体做法是:当集群上只有一个任务在运行 时,它将使用整个集群,当有其他作业提交时,系统会将TaskTracker节点空间的时 间片分配给这些新的作业,并保证每个任务都得到大概等量的CPU时间。

容量调度器
支持多个队列,每个队列可配置一定的资源量,每个队列采用 FIFO 调度策略,为 了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交 的作业所 占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值 最小的队 列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择 ,同时考虑用户资源量限制和内存限制。但是不可剥夺式

3,MapReduceshufflesort阶段
Shuffle,洗牌描述着数据从map task输出到reduce task输入的这段过程。 MR的核心。
http://langyu.iteye.com/blog/992916

4,join
当输入的数据来自多个文件时,需要做文件连接。包括Reduce端连接,Map端连接,Map过滤后的Reduce连接。

三,HDFS分布式文件存储系统
1,相当于在服务器集群级别上实现RAID的功能。
HDFS以块为文件存储单元,每写完一个块,自动将复制到另外主机上。
文件需要处理时,使用MR并行计算处理。
2,系统构架
NameNode:系统管理者,提供数据存放的对应关系,为查询者快速查到数据服务。索引。
Secondary NameNode:保存NameNode的快照,在NameNode出现故障时进行数据恢复。
DataNode:数据存储节点。文件读写。
Client:文件系统的使用者,通过NameNode获得文件存储的元数据信息,然后在DataNode进行读写操作。
Hadoop基础学习 - Garfield - 张广辉的博客
 Hadoop基础学习 - Garfield - 张广辉的博客
 由图可知,通过NameNode可以将client与datanode做低耦合,使他们有较少的依赖,因此发生故障时影响较少。
3,主流分布式文件系统:http://blog.sina.com.cn/s/blog_6ab284e40102v1jr.html

四,Hbase与Nosql(NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。
随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
问题:1. 多机事务怎么做? 2. 多机join怎么做才能非常高效? 3. 分布式索引怎么做?
1、Nosql数据库的代表:Big table,MongoDB,Hbase
2、sql与nosql数据库的差异
1)放松事务的一致性要求,即存入的某条记录不一定能被立即查询到,关系数据库在实现数据一致性方面付出了极大的性能代价,如银行系统;关系数据库对高并发的适应性差。
2)改变固定的表结构,采用采用Key-value或者列存储方式等,关系数据库的表结构扩展性极差,如系统的升级,功能的增加,往往意味着数据结构巨大变动

3、Hbase构架
1)HBase位于结构化存储层,其底层存储支持HDFS。

2)列存储
行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推。
1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;

列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。
1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;
优缺点:

1) 每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量

2) 既然是一个字段的数据聚集存储,那就更容易为这种聚集存储设计更好的压缩/解压算法。

列存储适合用在什么场合?

OLAP,数据仓库,数据挖掘等查询密集型应用。

列存储不适合用在什么场合?

相对来说,不适合用在OLTP,或者更新操作,尤其是插入、删除操作频繁的场合。

3)Hbase的表:http://blog.csdn.net/codestinity/article/details/6981278
通过列族为单位,这是一种可扩展的数据结构,新添加的列可以随时加到列族当中。

4)物理存储
以HRegion为单元进行管理数据,访问数据先访问HRegion,由它进行数据存取。
HRegionServer是存储数据的节点,对应多个HRegion。
HMaster是主服务器,存储了HRegionServer的信息。
每个HRegion对应一端key区间[key1,key2].当一个HRegion存的内容太多时,一个分裂成两个,并可以在整个HRegionServer集群上进行迁移,以保证多HRegionServer集群的的负载均衡。当有新HRegionServer加入,也会进行迁移,并在Hmaster记录HRegionServer的信息
Hadoop基础学习 - Garfield - 张广辉的博客
 
Hadoop基础学习 - Garfield - 张广辉的博客
5)一致性算法:Paxos,核心原则:少数服从多数
http://blog.csdn.net/cxhzqhzq/article/details/6568040

4、实现原理分类:关系数据库以标为单位实现数据存储。

类型

部分代表

特点

列存储

Hbase

Cassandra

Hypertable

顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

文档存储

MongoDB

CouchDB

文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。

key-value存储

Tokyo Cabinet / Tyrant

Berkeley DB

MemcacheDB

Redis

可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)

一致性哈希算法

图存储

Neo4J

FlockDB

图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。

对象存储

db4o

Versant

通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。


http://blog.csdn.net/it_man/article/details/8121766


0 0