Hadoop 权威指南学习1 (主要框架)
1. Hadoop 最出名的是 MapReduce和 HDFS,不过也有很多其他有用的子项目。
技术栈如下:
Core
一系列分布式文件系统和通用I/O的组件和接口(序列化、Java RPC和持久化数据结构)
Avro
一种提供高效、跨语言RPC的数据序列系统,持久化数据存储。
MapReduce
分布式数据处理模式和执行环境,运行于大型商用机集群。
HDFS
分布式文件系统,运行于大型商用机集群。
Pig
一种数据流语言和运行环境,用以检索非常大的数据集。Pig运行在MapReduce和HDFS的集群上。
Hbase
一个分布式、列存储数据库。使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。
ZooKeeper
一个分布式的、高可用性的协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用。
Hive
分布式数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(运行时由引擎翻译成MapReduce作业)用以查询数据。
Chukwa
分布式数据收集和分析系统。Chukwa运行HDFS中存储数据的收集器,它使用MapReduce来生成报告。
2. Shuffle and combiner
Shuffle
是从map输出,到reduce输入之间的过程。
很多map任务和reduce任务,并不是一对一的关系,所以可以认为在中间进行了“洗牌” 重组操作,形象的叫作shuffle。
Shuffle是Hadoop很核心的部分,涉及到最珍贵的网络资源。此外,shuffle过程中会有很多参数,也有很多策略可以研究。
Combiner
是运行在map上的一种优化,并不改变reducer的结果,可以帮助减少map和reduce 之间的数据传输量。
它的一个很重要的作用:会对相同key的值进行合并,即减少了数据量,进而提高了效率。
3. HDFS
Hadoop Distributed Filesystem. HDFS is a filesystem designed for storing very large files with streaming data access
patterns, running on clusters of commodity hardware.
1) 大文件
2)流式数据访问。 一次写入,多次读取
3)商用普通硬件。并不要求昂贵、高可靠性机器。因此要应对节点故障和中断(使用户尽量感知不到)
所以,一些不适合使用的领域是:
1)低延迟数据访问。
HDFS是高数据吞吐量,HBase是低延迟访问的更好选择
2)大量的小文件
namenode(名称节点)存储文件系统的元数据,因此文件数量也由namenode的内存大小决定。
3)多用户写入,任意位置修改文件
HDFS中的文件只有一个写入者,否则会造成冲突。而且写操作总是在文件的末尾。
4. HA 高可用性
参考自 http://blog.csdn.net/caizhongda/article/details/7947480
在以前的版本中,HDFS 集群中的NameNode机器,存在单点故障(SPOF )。如果只有一个NameNode的集群出现故障,那么整个集群将无法使用,直到NameNode 重新启动。主要是在以下两种情况会影响HDFS集群:
1). NameNode 机器发生意外,比如宕机,集群将无法使用,直到管理员重启NameNode
2). NameNode 机器需要升级,包括软件、硬件升级,此时集群也将无法使用
而HDFS 的HA 功能通过配置Active/Standby 两个NameNodes,实现故障时快速切换另外一台。
在一个典型的HDFS(HA) 集群中,使用两台单独的机器配置为NameNodes ,在任何时间点,确保NameNodes 中只有一个处于Active 状态,其他的处在Standby 状态。
5. YARN
参考自 http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/#_3.3_hadoop_ 官方简介
YARN 是Hadoop 0.23.0 版本后新的 map-reduce 框架。
0.20.0 及之前版本的map-reduce框架如下:
提交任务 分发任务
Jobclient ------------> JobTracker <-------------------> TaskTracker ------------------> map & reducer slots
heartbeat通信
缺点:
- JobTracker 是 Map-reduce 的集中处理点,存在单点故障。
- JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
- 在 TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到每个task的 cpu/ 内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现 OOM。
- 在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。
- 源代码层面分析的时候,会发现代码非常的难读,常常因为一个 class 做了太多的事情,代码量达 3000 多行,造成 class 的任务不清晰,增加 bug 修复和版本维护的难度。
- 从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 ( 例如 bug 修复,性能提升和特性化 ) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。
YARN 是对旧的map-reduce框架的完全重构。根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。
ResourceManager, ApplicationMaster 与 NodeManager 三个部分取代了 JobTracker和TaskTracker。
ResourceManager 调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况;具体来说就是接收 JobSubmitter 提交的作业,按照作业的上下文 (Context) 信息,以及从 NodeManager 收集来的状态信息,启动调度过程,分配一个 Container 作为 App Mstr
NodeManager 功能比较专一,就是负责 Container 状态的维护,并向 RM 保持心跳。
ApplicationMaster 负责一个 Job 生命周期内的所有工作
Hadoop 权威指南学习1 (主要框架)的更多相关文章
- Hadoop权威指南学习笔记二
MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...
- Hadoop权威指南学习笔记一
Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...
- Hadoop权威指南学习笔记三
HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...
- hadoop权威指南学习(一) - 天气预报MapReduce程序的开发和部署
看过Tom White写的Hadoop权威指南(大象书)的朋友一定得从第一个天气预报的Map Reduce程序所吸引, 殊不知,Tom White大牛虽然在书中写了程序和讲解了原理,但是他以为你们都会 ...
- 转载:Hadoop权威指南学习笔记
转自:http://pieux.github.io/blog/2013-05-08-learn-hadoop-the-definitive-guide.html 1 前言 Hadoop的内部工作机制: ...
- Hadoop权威指南 - 学习笔记
初识Hadoop.关于MapReduce Hadoop宏观介绍 相对于其他系统的优势 关系型数据库管理系统 为什么不能用配有大量硬盘的数据库进行大规模分析?为什么需要Hadoop? 因为计算机硬盘的发 ...
- Hadoop 权威指南学习2 (Sqoop)
6. Sqoop Apache sqoop is an open source tool that allow users to extract data from structured data s ...
- hadoop权威指南学习
通常情况下,处理少量的大型文件更容易.更有效,为什么呢? map阶段中的键如果不需要可以忽略掉? MapReduce过程也可以用于本地文件的处理,但是如果是要使用到集群的话还需要HDFS. Data ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
随机推荐
- nginx相关
定时切割nginx日志#!/bin/bash #desc: cut nginx log #this script run at 00:00 LOG_PATH='/usr/local/nginx/log ...
- Centos下Apache使用Symlink访问外部目录出现403
在Aapche 的document root 下创建软链到其他目录时, 无法从浏览器访问, 返回403错误. 主要检查两点: 1. 软链目标目录的每一级, 都要对所有人开放执行权限, 即对各级目录 c ...
- [转]Spring JdbcTemplate 查询分页
原文:http://blog.csdn.net/xiaofanku/article/details/4280128 现在进行的项目由于数据库的遗留原因(设计的不堪入目)不能用hibernate.所以用 ...
- (原创)解决远程桌面连接远程应用时,出现 '应用程序错误: '0x7c931780'指令引用的 '0x89abcdef' 内存。该内存不能为 'read'"
公司的部分应用为cs结构,没有web版的,这些应用的外部访问基本都是通过使用windows server 2008 r2的远程桌面服务来实现的. 个人感觉微软远程桌面服务问题很多,今天有同事使用Rem ...
- nfs客户端报错解决Stale file handle
NFS故障: 场景:客户端挂载是好的.服务端磁盘满了,重新给挂了一快.客户端df -h nfs挂载消失. 客户端报错:Stale file handle 现象如下: [root@test63-spri ...
- C#加密解密大全
1.方法一 (不可逆加密) public string EncryptPassword(string PasswordString,string PasswordFormat ) { ...
- velocity模板引擎学习(3)-异常处理
按上回继续,前面写过一篇Spring MVC下的异常处理.及Spring MVC下的ajax异常处理,今天看下换成velocity模板引擎后,如何处理异常页面: 一.404错误.500错误 <e ...
- 《DOM启蒙》 随笔
使用 Javascript 字符串创建并向 DOM 中添加元素与文本节点 innerHTML.outerHTML.textContent 及 insertAdjacentHTML() 属性和方法提供了 ...
- 安装.NET Framework后程序无法启动的错误处理
最近发现一直在使用的Database.NET软件无法正常使用了,表现为当尝试进行Sql Server的连接创建时,直接报错 在事件查看器具体错误信息为: 日志名称: Applicat ...
- js的几种排序
转载:http://www.jb51.net/article/81520.htm 一.冒泡排序 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...