Hadoop生态系统入门进阶之一
- HDFS:Hadoop 生态圈的基本组成部分是 Hadoop 分布式文件系统(HDFS)。HDFS 是一种分布式文件系统,数据被保存在计算机集群上,HDFS 为 HBase 等工具提供了基础。
- MapReduce:Hadoop 的主要执行框架是 MapReduce,它是一个分布式、并行处理的编程模型,MapReduce 把任务分为 map(映射)阶段和 reduce(化简)阶段。由于 MapReduce 工作原理的特性,Hadoop 能以并行的方式访问数据,从而实现快速访问数据。
- Hbase:HBase 是一个建立在 HDFS 之上,面向列的 NoSQL 数据库,用于快速读/写大量数据,HBase 使用 Zookeeper 进行管理。
- Zookeeper:用于 Hadoop 的分布式协调服务。Hadoop 的许多组件依赖于 Zookeeper,它运行在计算机集群中,用于管理 Hadoop 集群。
- Pig:它是 MapReduce 编程的复杂性的抽象。Pig 平台包括运行环境和用于分析 Hadoop 数据集的脚本语言(Pig Latin),其编译器将 Pig Latin 翻译成 MapReduce 程序序列。
- Hive:类似于 SQL 高级语言,用于运行存储在 Hadoop 上的查询语句,Hive 让不熟悉 MapReduce 的开发人员也能编写数据查询语句,然后这些语句被翻译为 Hadoop 上面的 MapReduce 任务。像 Pig 一样,Hive 作为一个抽象层工具,吸引了很多熟悉 SQL 而不是 Java 编程的数据分析师。
- Sqoop:一个连接工具,用于在关系数据库、数据仓库和 Hadoop 之间转移数据。Sqoop 利用数据库技术描述架构,进行数据的导入/导出;利用 MapReduce 实现并行化运行和容错技术。
- Flume:提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到 HDFS。它基于一个简单而灵活的架构,利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到 Hadoop 中。
- 单机模式:安装简单,几乎不用做任何配置,但仅限于调试用途;
- 伪分布模式:在单节点上同时启动 NameNode、DataNode、JobTracker、TaskTracker、Secondary Namenode 等 5 个进程,模拟分布式运行的各个节点;
- 完全分布式模式:正常的 Hadoop 集群,由多个各司其职的节点构成。
12.配置masters 和 slaves
- 高吞吐量访问:HDFS 的每个 Block 分布在不同的 Rack 上,在用户访问时,HDFS 会计算使用最近和访问量最小的服务器给用户提供。由于 Block 在不同的 Rack 上都有备份,所以不再是单数据访问,速度和效率是非常快的。另外 HDFS 可以并行从服务器集群中读写,增加了文件读写的访问带宽。
- 高容错性:系统故障不可避免,如何做到故障之后的数据恢复和容错处理是至关重要的。HDFS 通过多方面保证数据的可靠性,多份复制并且分布到物理位置的不同服务器上,数据校验功能、后台的连续自检数据一致性功能都为高容错提供了可能。
- 线性扩展:因为 HDFS 的 Block 信息存放到 NameNode 上,文件的 Block 分布到 DataNode 上,当扩充的时候仅仅添加 DataNode 数量,系统可以在不停止服务的情况下做扩充,不需要人工干预。
- NameNode:在 Hadoop1.X 中只有一个 Master 节点,管理 HDFS 的名称空间和数据块映射信息、配置副本策略和处理客户端请求;
- Secondary NameNode:辅助 NameNode,分担 NameNode 工作,定期合并 fsimage 和 fsedits 并推送给 NameNode,紧急情况下可辅助恢复 NameNode;
- DataNode:Slave 节点,实际存储数据、执行数据块的读写并汇报存储信息给 NameNode;
- 客户端通过调用 FileSystem 对象的 open() 方法来打开希望读取的文件,对于 HDFS 来说,这个对象是分布文件系统的一个实例;
- DistributedFileSystem 通过使用 RPC 来调用 NameNode 以确定文件起始块的位置,同一 Block 按照重复数会返回多个位置,这些位置按照 Hadoop 集群拓扑结构排序,距离客户端近的排在前面;
- 前两步会返回一个 FSDataInputStream 对象,该对象会被封装成 DFSInputStream 对象,DFSInputStream 可以方便的管理 datanode 和 namenode 数据流,客户端对这个输入流调用 read() 方法;
- 存储着文件起始块的 DataNode 地址的 DFSInputStream 随即连接距离最近的 DataNode,通过对数据流反复调用 read() 方法,可以将数据从 DataNode 传输到客户端;
- 到达块的末端时,DFSInputStream 会关闭与该 DataNode 的连接,然后寻找下一个块的最佳 DataNode,这些操作对客户端来说是透明的,从客户端的角度来看只是读一个持续不断的流;
- 一旦客户端完成读取,就对 FSDataInputStream 调用 close() 方法关闭文件读取。
- 客户端通过调用 DistributedFileSystem 的 create() 方法创建新文件;
- DistributedFileSystem 通过 RPC 调用 NameNode 去创建一个没有 Blocks 关联的新文件,创建前 NameNode 会做各种校验,比如文件是否存在、客户端有无权限去创建等。如果校验通过,NameNode 会为创建新文件记录一条记录,否则就会抛出 IO 异常;
- 前两步结束后会返回 FSDataOutputStream 的对象,和读文件的时候相似,FSDataOutputStream 被封装成 DFSOutputStream,DFSOutputStream 可以协调 NameNode 和 Datanode。客户端开始写数据到 DFSOutputStream,DFSOutputStream 会把数据切成一个个小的数据包,并写入内部队列称为“数据队列”(Data Queue);
- DataStreamer 会去处理接受 Data Queue,它先问询 NameNode 这个新的 Block 最适合存储在哪几个 DataNode 里,比如重复数是 3,那么就找到 3 个最适合的 DataNode,把他们排成一个 pipeline.DataStreamer 把 Packet 按队列输出到管道的第一个 Datanode 中,第一个 DataNode 又把 Packet 输出到第二个 DataNode 中,以此类推;
- DFSOutputStream 还有一个队列叫 Ack Quene,也是由 Packet 组成,等待 DataNode 的收到响应,当 Pipeline 中的所有 DataNode 都表示已经收到的时候,这时 Akc Quene 才会把对应的 Packet 包移除掉;
- 客户端完成写数据后调用 close() 方法关闭写入流;
- DataStreamer 把剩余的包都刷到 Pipeline 里然后等待 Ack 信息,收到最后一个 Ack 后,通知 NameNode 把文件标示为已完成。
- 尽量减少每次写入磁盘的数据量
- 尽量减少下一复制阶段网络传输的数据量。最后合并成了一个已分区且已排序的文件。为了减少网络传输的数据量,这里可以将数据压缩,只要将 mapred.compress.map.out 设置为 true 就可以了
Hadoop生态系统入门进阶之一的更多相关文章
- (转)Hadoop入门进阶课程
http://blog.csdn.net/yirenboy/article/details/46800855 1.Hadoop介绍 1.1Hadoop简介 Apache Hadoop软件库是一个框架, ...
- Hadoop生态系统如何选择搭建
Apache Hadoop项目的目前版本(2.0版)含有以下模块: Hadoop通用模块:支持其他Hadoop模块的通用工具集. Hadoop分布式文件系统(HDFS):支持对应用数据高吞吐量访问的分 ...
- Java 入门进阶
Java 入门进阶 發表於 2015-04-16 http://xielong.me/2015/04/16/%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%B7%A5%E7%A8%8B% ...
- Hadoop概念学习系列之Hadoop 生态系统(十二)
当下 Hadoop 已经成长为一个庞大的生态体系,只要和海量数据相关的领域,都有 Hadoop 的身影.下图是一个 Hadoop 生态系统的图谱,详细列举了在 Hadoop 这个生态系统中出现的各种数 ...
- Hadoop快速入门
目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等. 先决条件 ...
- Hadoop 生态系统
1.概述 最近收到一些同学和朋友的邮件,说能不能整理一下 Hadoop 生态圈的相关内容,然后分享一些,我觉得这是一个不错的提议,于是,花了一些业余时间整理了 Hadoop 的生态系统,并将其进行了归 ...
- 从问题域出发认识Hadoop生态系统
近些年来Hadoop生态系统发展迅猛,它本身包含的软件越来越多,同时带动了周边系统的繁荣发展.尤其是在分布式计算这一领域,系统繁多纷杂,时不时冒出一个系统,号称自己比MapReduce或者Hive高效 ...
- hadoop生态系统的详细介绍
1.Hadoop生态系统概况 Hadoop是一个能够对大量数据进行分布式处理的软件框架.具有可靠.高效.可伸缩的特点. Hadoop的核心是HDFS和MapReduce,hadoop2.0还包括YAR ...
- hadoop pig入门总结
在这里贴一个pig源码的分析,做pig很长时间没做笔记,不包含任何细节,以后有机会再说吧 http://blackproof.iteye.com/blog/1769219 hadoop pig入门总结 ...
随机推荐
- testNG jar包启动找不到org.testng.TestNG
主要是因为打包时依赖的jar包没有打入,网上有很多需要将对应的jar单独拷贝出来然后通过classpath引用启动,但是感觉这个就是个无底洞.拷贝了这么多个包最后还是说找不到ObjectId 启动命令 ...
- 机器学习实战基础(八):sklearn中的数据预处理和特征工程(一)简介
1 简介 数据挖掘的五大流程: 1. 获取数据 2. 数据预处理 数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程 可能面对的问题有:数据类型不同,比如有的是文字,有的是数字 ...
- 008.Nginx静态资源
一 Nginx静态资源概述 1.1 静态资源类型 Nginx作为静态资源Web服务器部署配置, 传输非常高效, 常常用于静态资源处理,请求以及动静分离.通常非服务器动态运行生成的文件属于静态资源. 类 ...
- bzoj3622已经没有什么好害怕的了
bzoj3622已经没有什么好害怕的了 题意: 给n个数Ai,n个数Bi,将Ai中的数与Bi中的数配对,求配对Ai比Bi大的比Bi比Ai大的恰好有k组的方案数.n,k≤2000 题解: 蒟蒻太弱了只能 ...
- UML学习笔记—基本概念和初始阶段
chpater1 1.什么是分析和设计 分析:对问题和需求的调查研究 设计:满足需求的概念上的解决方案 做正确的事(分析)和正确地做事(设计) 2.什么是Object-Oriented-Analysi ...
- Python实现性能自动化测试竟然如此简单【颠覆你的三观】
一.思考 1.什么是性能自动化测试? 性能系统负载能力 超负荷运行下的稳定性 系统瓶颈 自动化测试使用程序代替手工 提升测试效率 性能自动化使用代码模拟大批量用户 让用户并发请求 多页面多用户并发 ...
- 转自fineui论坛:解决fineui框架开发中的Designer.aspx.cs丢失问题
在开发的时候碰到个问题,本来好好的Edit.aspx Edit.aspx.cs Edit.Designer.aspx.cs编辑Edit.aspx然后保存,编译的时候 发现Edit.aspx.cs里 ...
- java大数据最全课程学习笔记(3)--HDFS 简介及操作
目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 HDFS 简介及操作 HDFS概述 HDFS产出背景及定义 HDFS优缺点 HDFS组成架构 HDFS文件块大小 ...
- Spring声明式事务快速上手
1.什么是事务 首先我们要知道什么是事务.知其然,才能知其所以然. 事务(Transaction)是一个业务,是一个不可分割的逻辑工作单元,基于事务可以更好的保证业务的正确性. 这么说可能有点难以理解 ...
- 太慢不能忍!CPU又拿硬盘和网卡开刀了!
总线技术 我是CPU一号车间的阿Q,最近为了一件事儿搞得我挺烦的. 当初我们CPU工厂刚刚来到主板上建厂时,那时候主板上的单位还不多,跟我们打交道最多的就是内存那家伙了. 后来,键盘.鼠标.硬盘.网卡 ...