Hadoop核心架构(1)
在大数据的发展过程中,出现了一批专门应用与大数据的处理分析工具,如Hadoop,Hbase,Hive,Spark等,我们先从最基础的Hadoop开始进行介绍
Hadoop是apache基金会下所开发的分布式基础架构,实现了一个分布式文件系统(HDFS),HDFS拥有高容错性、高可靠性、高扩展性、高效性、低成本的特性,可以让用户在不了解相关的底层源码的情况下,在廉价的机器上搭配一台完整的服务器进行分布式程序开发,利用集群的高速运算和存储处理自己的业务。
一个应用程序无非就是计算和存储两个部分,Hadoop也不例外,他的两大核心设计就是HDFS和MapReduce两个组建,HDFS实现了Hadoop的海量数据的存储,而MapReduce则为存储的海量数据提供了计算
核心架构:
在Hadoop官方网站上对于Hadoop项目的构成有详细的讲解,主要包括
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop分布式文件系统(HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。
Hadoop YARN:作业调度和集群资源管理的框架。
Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集。
Apache的其他Hadoop相关项目包括:
Ambari™:基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。Ambari还提供了一个用于查看群集运行状况的仪表板,例如热图,以及可视化查看MapReduce,Pig和Hive应用程序的功能,以及以用户友好的方式诊断其性能特征的功能。
Avro™:数据序列化系统。
Cassandra™:可扩展的多主数据库,没有单点故障。
Chukwa™:用于管理大型分布式系统的数据收集系统。
HBase™:可扩展的分布式数据库,支持大型表的结构化数据存储。
Hive™:一种数据仓库基础架构,提供数据汇总和即席查询。
Mahout™:可扩展的机器学习和数据挖掘库。
Pig™:用于并行计算的高级数据流语言和执行框架。
Spark™:用于Hadoop数据的快速通用计算引擎。Spark提供了一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
Tez™:基于Hadoop YARN构建的通用数据流编程框架,它提供了一个功能强大且灵活的引擎,可以执行任意DAG任务来处理批量和交互式用例的数据。Tez正在被Hadoop生态系统中的Hive™,Pig™和其他框架以及其他商业软件(例如ETL工具)采用,以取代Hadoop™MapReduce作为底层执行引擎。
ZooKeeper™:用于分布式应用程序的高性能协调服务
在知道了Hadoop集群的项目构成之后我们便开始挨个项目进行说明
Hadoop-----HDFS
[if !supportLists]1、[endif]因为HDFS实例是一个分布式的处理机制,所以可能包括成千上万台服务器计算机,每一个计算机存储文件的一部分,但是,因为各种各样的原因,每一个计算机都有可能在使用过程中出现各种问题,比如断电等,所有这就意味着在这么多的服务器中总有几个是处在无法使用的状态,因此检测故障并能快速的回复保证计算的正常进行是HDFS的核心架构目标
[if !supportLists]2、[endif]HDFS的设计主要是用于批处理而不是通常的用户的交互式的通用应用程序,数据访问的高吞吐量是重点,所以posix放松了对于HDFS的监管,可以通过流式处理的方式对于文件系统中的数据进行相应的处理。
[if !supportLists]3、[endif]因为要处理的数据量特别巨大,单一的服务器根本不可能完成这一任务,所有,HDFS被调整为支持大文件,将一个大的文件分解成多个一样大小的小文件然后分散到各个集群的节点上进行计算
[if !supportLists]4、[endif]为了简化数据的一致性问题以及实现高吞吐量的数据访问,HDFS提供了一个一次写入多次读取的文件访问模型,当文件写入HDFS之后,可以被多次读取进行计算,但是,在一次写入之后除了追加和截断之外,不能再次写入,但是可以通过append方法在文件的末尾进行追加,典型的就是MapReduce应用程序
[if !supportLists]5、[endif]在应用程序请求计算的时候,如果将数据向计算移动的话,因为数据量太大会造成大量的网络延迟以及时间的浪费,并且会消耗大量的资源,但是,如果计算向数据移动,因为计算的应用程序占用的内存很小,在进行传输的过程中不会消耗太多的资源而且传输速度很快,不会产生网络拥塞并提高了系统的整体吞吐量
[if !supportLists]6、[endif]HDFS的设计便于在软件和硬件两个平台进行移植
基于以上6点,也会发现HDFS不适合应用在要求低延迟的数据访问、存储大量的小文件、多用户写入、任意修改文件的场景,因为这几个场景不仅仅不会体现其在数据处理方面的超强的能力,相反还会成为一个拖累,处理能力还不如普通的处理方式
HDFS具有主从架构,集群由一个NameNode和多个DataNodes构成,以及辅助节点Secondary Namenode
NameNode对集群中的文件系统命名空间的主服务器和客户端对于文件的访问组成。存储DataNode中块的管理信息(块管理
通过处理注册和定期心跳来提供Datanode集群成员资格。
进程阻止报告并维护块的位置。
支持块相关操作,如创建,删除,修改和获取块位置。
管理副本放置,阻止复制下的块的复制,并删除过度复制的块。
)
DataNodes管理节点的存储,每一个DataNode的上有多个block块构成,传入系统的大文件就被存储在着一个个的block块(默认大小为64MB)中并定期的向NameNode发送block块的列表信息(
1、可以存储大于磁盘容量的文件,将块存储在不同的磁盘上,提高了集群磁盘的利用率。
2、将传入的文件转化成块存储,可以实现元数据和块的分离,用一个单独的节点存储块的地址信息等,便于管理。
数据块适合用于数据备份进而提供数据容错能力和提高可用性
)
Secondary Namenode:辅助NameNode进行fsimage和edit.log的合并,减轻namenode的压力
本文章主要翻译于官方网站,如有雷同,纯属巧合
Hadoop核心架构(1)的更多相关文章
- 大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
转自:http://blog.csdn.net/iamdll/article/details/20998035 分类: 分布式 2014-03-11 10:31 156人阅读 评论(0) 收藏 举报 ...
- Hadoop 核心架构
Hadoop 由许多元素构成.其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件.HDFS(对于本文)的上一层是Ma ...
- 第十一章: Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
HDFS的体系架构 整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持. HDFS采用主从(Master/Slave)结构模型,一 ...
- Hadoop(一)Hadoop核心架构与安装
Hadoop是什么 大白话,Hadoop是个存储数据,计算数据的分布式框架.核心组件是HDFS.MapReduce.Yarn. HDFS:分布式存储 MapReduce:分布式计算 Yarn:调度Ma ...
- Hadoop体系架构简介
今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底层实现,MapReduce ...
- 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
大型网站技术架构(四)--核心架构要素 作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
- 谈一谈jQuery核心架构设计(转)
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
随机推荐
- 工作总结:mvc分层架构
pojo:plain ordinary java object 简单无规则java对象,我个人觉得它和其他不是一个层面上的东西,VO和PO应该都属于它 po:persistant object 持久对 ...
- Windows ->> FIX: “The security database on the server does not have a computer account for this workstation trust relationship”
前几天在做AlwaysOn实验时遇到搭建活动目录域时某台已经加入AD的机器无法以域管理员账户登录的情况. 报错信息是:The security database on the server does ...
- GCC the GNU
GCC简单使用 -v/-v/--version 查看gcc版本号 python@ubuntu:~$ gcc -v -I 指定头文件目录,注意-I和之间没有空格 1 #include<s ...
- Spark Broadcast内幕解密:Broadcast运行机制彻底解密、Broadcast源码解析、Broadcast最佳实践
本课主题 Broadcast 运行原理图 Broadcast 源码解析 Broadcast 运行原理图 Broadcast 就是将数据从一个节点发送到其他的节点上; 例如 Driver 上有一张表,而 ...
- 【[JLOI2011]飞行路线】
据说这是分层图最短路的板子题 但其实就是一个\(dij\)多带了一维状态 我们看到\(k\)很小所以显然我们可以设计一个这样的状态 \(d[v][k]\)表示从起点到点\(v\)免费走了\(k\)条路 ...
- 关于webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示
今天用webstorm打开项目,文件下方出现了一个小锁的图标,修改文件出现“cannot modify a ready-only directory”的弹窗提示 解决办法:运行 sudo chown ...
- Vue.js-简单的增删查功能
1.Vue.js是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图 ...
- Jumpserver堡垒机搭建(脚本自动化)
#!/bin/bash # coding: utf- # Copyright (c) set -e #返回值为非0时,退出脚本 echo "0. 系统的一些配置" setenfor ...
- Web—02-轻松理解css
CSS基本语法以及页面引用 CSS基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个 ...
- C++笔记011:C++对C的扩展——变量检测增强
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 在C语言中重复定义多个同名的变量是合法的,多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上. 在C++中,不允许定义多个同名的 ...