大数据存储与处理-第三讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
26
HDFS文件系统—— DataNode
一个数据块在DataNode以文件存储在磁盘上,包括两个文 件,一个是数据本身,一个是元数据包括数据块的长度, 块数据的校验和,以及时间戳 DataNode启动后向NameNode注册,通过后,周期性(1小时) 的向NameNode上报所有的块信息。 心跳是每3秒一次,心跳返回结果带有NameNode给该 DataNode的命令如复制块数据到另一台机器,或删除某个 数据块。如果超过10分钟没有收到某个DataNode 的心跳, 则认为该节点不可用。 集群运行中可以安全加入和退出一些机器
37
MapReduce示例
The weather is good the weather is good 1 1 1 1 a1 good good good good good 1 1 1 1 1 a 1 good 5 guy 1
Today is good
today 1 is 1 good 1
this guy is a good man good man is good 1 1 1 1 1 1 1 1 1 1
Yahoo的Hadoop应用包含有搜索、日志处理 (Analytics, Reporting, Buzz)、用户建模、 内容优化,垃圾邮件过滤器以及广告计算等。 如何利用Hadoop对海量数据进行优化处理是Yahoo 正在致力于工作的内容。以网络分析为例,Yahoo 目前有超过100亿个网页,1PB的网页数据内容,2 万亿条链接,每日面临这300TB的数据输出。“在 应用Hadoop前,实施这一过程我们大概需要1个月 的时间,但应用后仅需要1周时间”
33
HDFS的可靠性——回顾
冗余备份策略 机架策略 心跳机制 安全模式 校验和 回收站 元数据保护
34
什么是MapReduce?
分布式技术框架
语言支持: Java C++ (through pipes) script languages (through streaming)
27
HDFS文件系统——系统架构
28
HDFS文件系统——保障可靠性的 措施
一个名字节点和多个数据节点 数据复制(冗余机制)
存放的位臵(机架感知策略)
故障检测
数据节点 心跳包(检测是否宕机) 块报告(安全模式下检测) 数据完整性检测(校验和比较) 名字节点(日志文件,镜像文件)
空间回收机制
29
HDFS如何写文件?
Create file Close file Write packet Send ack
Send ack
Send ack
Write packet Write packet
客户端联系namenode,在namenode命名空间中创建一个新 文件,此时,namenode会检查文件是否存在和客户端是否 有权限创建新文件,检查通过,就会创建一条记录。 然后客户端写文件时,会取得合适的3个datanodes形成一 个管线DataStreamer将数据包流式的传输到管线中第一个 datanode,第一个datanode存储数据包并发送的第二个 datanode, 第二个datanode存储数据包并发送的第三个 datanode。 当收到管道中所有datanodes的确认信息后对应数据包才会 从确认队列中删除。 如此反复,直到所有的数据包,都写完,最后向namenode 报告写入完成。
12
中国移动
中国移动大云 在中国移动内部,Hadoop已经成为一个重要的数据挖掘工 具,中国移动已经把Hadoop的群用来进行闭环的数据挖掘, 和传统算法的数据挖掘性能相比,有很大的提升,而且成 本非常低。
13
Hadoop生态系统
Hive Pig Hbase Zookeeper
MapReduce
19
HDFS文件系统不适合做什么?
存储小文件 (不建议使用) 大量的随机读 (不建议使用) 需要对文件的修改 (不支持) 多用户写入(不支持)
20
HDFS文件系统——文件
文件切分成块(默认大小64M),以块为单位,每个块有 多个副本存储在不同的机器上,副本数可在文件生成时指 定(默认3) NameNode是主节点,存储文件的元数据如文件名,文件目 录结构,文件属性(生成时间,副本数,文件权限),以及 每个文件的块列表以及块所在的DataNode等等 DataNode在本地文件系统存储文件块数据,以及块数据的 校验和 可以创建、删除、移动或重命名文件,当文件创建、写入 和关闭之后不能修改文件内容。
HDFS
14
Hadoop基本架构——物理分布 的Hadoop集群
15
Hadoop基本架构——物理部署
16
HDFS文件系统——设计目标
为以流式数据访问模式存储超大文件而设计的文件系统
超大文件
指的是几百MB,几百GB,几百TB,甚至几百PB
流式数据访问
HDFS建立的思想是:一次写入、多次读取模式是最高效的。
2
我们只能采用并行计算
Hadoop就是 一个并行处理海量数据的工具。
而பைடு நூலகம்
Hadoop是什么?
一个分布式文件系统和并行执行环境(框架) 让用户便捷地处理海量数据 Apache软件基金会下面的一个开源项目 目前Yahoo!是最主要的贡献者
4
Hadoop起源
Apache Lucene
24
HDFS文件系统—— NameNode
Namenode是一个中心服务器,单一节点(简化系统的设计 和实现),负责管理文件系统的名字空间(namespace)以及 客户端对文件的访问。
文件操作,NameNode负责文件元数据的操作,DataNode负 责处理文件内容的读写请求,跟文件内容相关的数据流不 经过NameNode,只会询问它跟那个DataNode联系,否则 NameNode会成为系统的瓶颈
21
HDFS文件系统——文件
22
HDFS文件系统——文件
23
HDFS文件系统——主要组件的功能
namenode • 存储元数据 •元数据保存在内存中
datanode • 存储文件内容 •文件内容保存在磁盘
• 保存文件,block ,datanode •维护了block id到datanode本 之间的映射关系 地文件的映射关系
本讲内容
介绍
① 背景 ② Hadoop起源 ③ 成功的案例 ① Hadoop 基本架构 ② HDFS 文件系统 ③ MapReduce 分布式计算框架
原理
实践
① 安装与配臵 ② 编写MapReduce程序
1
设想:硬盘读取速度永远满足要求!
你发现: 目前的硬盘容量1T,速度100MB/s 。
你发现: 要把现在的硬盘数据刷一遍,要两个多小时,太可怕了。
开源的高性能全文检索工具包
Apache Nutch
开源的 Web 搜索引擎
Google 三大论文
MapReduce / GFS / BigTable
Apache Hadoop
大规模数据处理
5
Hadoop的特点
扩容能力(Scalable):能可靠地(reliably)存储和处理 千兆字节(PB)数据。 成本低(Economical):可以通过普通机器组成的服务器 群来分发以及处理数据。这些服务器群总计可达数千个节 点。 高效率(Efficient):通过分发数据,hadoop可以在数据 所在的节点上并行地(parallel)处理它们,这使得处理非 常的快速。 可靠性(Reliable):hadoop能自动地维护数据的多份复 制,并且在任务失败后能自动地重新部署(redeploy)计 算任务。
Mapred-default.xml设臵块大小 输入格式定义了组成mapping阶段的map任务列表,每个任务对应 一个输入块。 据InputSplit地址分配任务(最大任务数 mapred.tasktracker.map.tasks.maximum)
6
Hadoop越来越火
据估计,到2015年,全
世界一半以上的数 据将涉及Hadoop
不是可以解决数据中
心和数据管理方面所有 难题的灵丹妙药
那我们就来看看一些成功的案例:
7
谁在用Hadoop?
雅虎北京全球软件研发中心 IBM Facebook Amazon Yahoo! 中国移动研究院 英特尔研究院 百度、腾讯、新浪、搜狐、淘宝
商用硬件
HDFS不需要运行在昂贵并且高可靠的硬件上。
17
HDFS文件系统——设计基础与目标
• 硬件错误是常态,因此需要冗余。 • 程序采用“数据就近”原则分配节点执行。
18
HDFS文件系统——能做什么?
存储并管理PB级数据 处理非结构化数据 注重数据处理的吞吐量(延迟不敏感) 应用模式为:write-once-read-many存取模式(无 数据一致性问题)
35
35
MapReduce设计目的——大规模 数据处理
处理海量数据(>1TB) 上百/上千CPU实现并行处理 简单地实现以上目的 移动计算比移动数据更划算
36
MapReduce——特性
自动实现分布式并行计算 容错 提供状态监控工具 模型抽象简洁,程序员易用 计算划到大量机器上 组件间不允许任意数据共享,避免保保持同步而 产生的通信开销,所有在MapReduce上的数据不 可变 节点间通信只在产生新输出
39
mapping任务平等, Mapper无特定标识,处理任意输入 每个mapper本地进行 中间值交换,同键值送到同一个reducer。唯一的结点通信 数据传送由平台处理
MapReduce数据流
40
从Map到Reducer数据整体传输过程
41
MapReduce数据流——输入
输入块InputSplit:文件拆分成块
25
HDFS文件系统—— NameNode
副本存放在那些DataNode上由NameNode来控制,根据全局 情况做出块放臵决定,读取文件时NameNode尽量让用户先 读取最近的副本,降低带块消耗和读取时延 Namenode全权管理数据块的复制,它周期性地从集群中的 每个Datanode接收心跳信号和块状态报告(Blockreport)。 接收到心跳信号意味着该Datanode节点工作正常。块状态 报告包含了一个该Datanode上所有数据块的列表。
This guy is a good man
guy 1 is 1 is 1 is 1 is 1 man 1 man 1 the 1 this 1 today 1 weather 1
is 4
man 2
the 1
this 1
today 1
weather 1
Good man is good
38
MapReduce数据流
8
Hadoop应用案例
Yahoo Hadoop应用揭秘 中国移动 联通海量上网日志数据
9
Yahoo Hadoop应用揭秘
2010年10月时:Yahoo目前有超过38000台服务器,有超过 4000个以上的服务器集群,数据总量达到了170PB,每日的 数据增量在10TB以上。
10
Yahoo Hadoop应用揭秘
11
Yahoo Hadoop应用揭秘
“再以Yahoo搜索为例,我们的服务器上保留有用 户三年来的搜索记录,这个数据是由超过 10TB的 自然语言文本库所组成”,“如果数据重整,我 们在应用Hadoop前需要1个月的时间进行处理,而 在有了Hadoop后仅仅需要30分钟。” Hadoop也非万能,它采用Java实现,Java的IO处 理虽然没有性能瓶颈,但是对于CPU密集型的任务 是一个麻烦, 因此,有些算法效率不会提高很多。
31
HDFS如何读文件?
Open file Get block location Close file Read block
32
读文件流程
客户端联系NameNode,得到所有数据块信息,以及数据块对 应的所有数据服务器的位臵信息 尝试从某个数据块对应的一组数据服务器中选出一个,进 行连接 数据被一个包一个包发送回客户端,等到整个数据块的数 据都被读取完了,就会断开此链接,尝试连接下一个数据 块对应的数据服务器,整个流程,依次如此反复,直到所 有想读的都读取完了为止。 Namenode并不实际参与数据传输。