什么是Hadoop?

面向大数据处理

擅长离线数据分析

分布式文件系统+计算框架(HDFS+MapReduce)

Hadoop不是数据库,Hbase才是数据库

Hadoop是一个快速进化的生态系统

Hadoop会使用在哪些行业? 电子商务,移动运营商


什么是大数据?

大数据是个相对概念,基于目前的软硬件水平,满足不了预期性能的的数据量,就被称为大数据。




Hadoop子项目家族


Hbase  Pig Hive  Chukwa

MapReduce HDFS Zoo Keeper

Core  Avro


Core:Hadoop的核心代码

MapReduce:Hadoop的分布式计算框架

HDFS:分布式文件系统

Pig:轻量级语言,系统自动转换成MapReduce程序语言,进行MapReduce工作,然后把结果返回给用户。它的作用是用户和MapReduce转换器这样一个组件。

Hive:查询MapReduce的SQL语言。

Hbase: 列式数据库,非关系型数据库, 面向数据分析

ZooKeeper: 负责服务器及进程之间的通信

Chukwa:数据集成工具。将各个数据源加载到Hadoop里面进行数据分析。


Hadoop的架构(Hadoop的后台进程)


Switch相当于网络交换机


Namenode

当用户跟Hadoop集群打交道时,Hadoop会首先访问Namenode,获得文件分布的信息,它是分布在哪些数据节点里面,

然后才跟数据节点打交道,将数据拿到。

1.是HDFS的守护程序,起到分布式文件系统的总控作用,它记录所有的元数据,比如

2.记录文件是如何分割成数据块的,以及这些数据块被存储在哪些节点。

3.对内存和I/O进行集中管理

4.是个单点,发生故障时将使集群崩溃。


Secondary Namenode(辅助名称节点)

主要是作为NameNode的后备,可以将NameNode的数据复制成一份副本,一旦NameNode瘫痪,可以使用Secondary NameNode

代替,使集群重新运行。但这种切换目前还无法自动切换。

1.监控HDFS状态的辅助后台程序

2.每个集群都有一个

3.与NameNode进行通讯,定期保存HDFS元数据快照

4当NameNode故障可以作为备用NameNode使用。


DataNode(数据节点)

每台服务器都运行一个

负责把HDFS数据块读写到本地文件系统  


JobTracker

1.用于处理作业(用户提交代码)的后台程序

2.决定哪些文件参与处理,然后切割成task并分配节点。

3.监控task,重启失败的task

4.每个集群只有一个JobTracker,位于Master节点。



TaskTracker

1.位于slave节点,与datanode结合(代码与数据一起的原则)

2.管理各自节点的task(由jobtracker分配)

3.每个节点只有一个tasktracker,但一个tasktracker可以启动多个jvm,用户并行执行map或reduce任务

4.与jobtracker交互



Master与Slave


Master:运行Namenode,secondary,jobtracker程序的服务器。

Slave:运行Datanode,tasktracker的机器。

Master不是唯一的。




关于Google的技术问题


1.大量的网页怎么存储?

保存在内存中,为了防止断电导致数据丢失,会采取冗余的方式保存多个地方。


2.Google如何快速搜索? 搜索算法

倒排索引

Google会先对网页内容进行分词,比如我爱北京广场会被分为

单词ID | 单词 | 倒排列表(DocID;TF)

1.我,(1,1)

2.爱

3.北京

4.广场

然后同一行内保存这个词在哪些网页中存在,以及便宜量。比如第一个网页,偏移量为1.

假如搜索我,google先找到我这个单词,单词上已建立索引,根据倒排列表可以迅速找到哪些网页存在这个词。


3.Page_Rank(网页价值)计算问题

这是Google最核心的算法,用于给每个网页价值评分。


根据页面的链接个数来决定页面的价值,链接的越多,指向此页面的网页越多,则价值越大。

另外还根据页面的page rank来决定指向的价值,比如国务院的网站指向的连接,就价值比普通的个人网站指向

价值高很多。


1->1 2->1 3->1 4->1

1->2 2->2 3->2 4->2

1->3 2->3 3->3 4->3

1->4 2->4 3->4 4->4


G=aS+(1-a)1/nU

S是矩阵

a是0-1的一个数,比如0.85

U是全部元素都是1的矩阵

n是网页的个数,例子中是4




数据分析者面临的问题


1.数据日趋庞大,无论是入库还是查询,都会出现性能瓶颈。

2.用户的应用和分析结果呈整合趋势,对实时性和相应时间要求越来越高。

3.使用的模型越来越复杂,计算量指数级上升。


数据分析者期待的解决方案

1.完美解决性能瓶颈,在可见未来不容易出现新瓶颈。

2.过去所拥有的技能可以平稳过渡。

3.转移平台的成本多高?平台软硬件成本,再开发成本,技能培养成本,维护成本。


Why not Hadoop?

Java?

难以驾驭?

数据集成困难?

Hadoop vs Oracle