什么是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