hadoop生态圈的理解_谈一下你对hadoop生态的理解-程序员宅基地

hadoop部分:hadoop生态圈的理解(HDFS,MapReduce,HBASE,zookeeper,hive,sqoop,flume,kafka,yarn,spark)

一、简介
        Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。




二、核心
        Hadoop对应于Google三驾马车:HDFS对应于GFS,即分布式文件系统,MapReduce即并行计算框架,HBase对应于BigTable,即分布式NoSQL列数据库,外加Zookeeper对应于Chubby,即分布式锁设施。


                                      Hadoop核心系统

       

Hadoop大数据应用生态中最主要的组件及其关系

Hadoop Common

Hadoop Common是在Hadoop0.2版本之后分离出来的HDFS和MapReduce独立子项目的内容,是Hadoop的核心部分,能为其他模块提供一些常用工具集,如序列化机制、Hadoop抽象文件系统FileSystem、系统配置工具Configuration,并且在为其平台上的软件开发提供KPI等。其他Hadoop子项目都是以此为基础而建立来的。

HDFS

HDFS(Hadoop分布式文件系统)源自于Google的GFS论文,发表于2003年10月,HDFS是GFS的实现版。HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障,在低成本的通用硬件上运行。HDFS简化了文件的一次性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适用带有数据集的应用程序。HDFS提供一次写入多次读取的机制,数据以块的形式,同时分布存储在不同的物理机器上。 
HDFS默认的最基本的存储单位是64MB的数据块,和普通文件系统一样,HDFS中的文件被分成64MB一块的数据块存储。它的开发是基于流数据模式访问和处理超大文件的需求。

超大文件

超大文件:是指进行存储的文件达到MB、GB、TB级的大文件。

流式数据访问

流式数据访问:一次写入、多次读取的访问模式。

商用硬件

在节点出现故障时,HDFS会继续运行,用户不会察觉到明显的中断情况。这是由于HDFS的高可用性和容错性是通过软件来实现的,也由此使得它不需要价格高的设备来保障,大街小巷能买到的普通硬件就能用作搭建HDFS。 
HDFS并不是所有场景都适用。 
1)由于HDFS的优势是海量数据传输,在低延迟的数据访问中就并不适用,10ms以下的访问可以无视HDFS。HDFS会用延迟来换取数据的高吞吐量。 
2)存在的小文件较多时,HDFS也不适用。这主要是由于HDFS的整个文件存储在NameNode中,它能对数据库的存储位置进行定位,因此NameNode的内存量是被文件的数量限制的。而大量的小文件会占用很大一部分内存,在进行数据处理时会合并这些小文件。 
3)在多处写和随机修改的场景中,由于HDFS的文件不支持多个写入或任意位置的修改,所以HDFS也不适用。

MapReduce

Mapduce(分布式计算框架)源自于Google的MapReduce论文,发表于2004年12月,Hadoop MapReduce是Google Reduce 克隆版。MapReduce是一种分布式计算模型,用以进行海量数据的计算。它屏蔽了分布式计算框架细节,将计算抽象成Map 和Reduce两部分,其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce非常适合在大量计算机组成的分布式并行环境里进行数据处理。

HBase

Hbase(分布式列存数据库)源自Google的BigTable论文,发表于2006年11月,HBase是Google Table的实现。HBase是一个建立在HDFS之上,面向结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。HBase采用了BigTable的数据模型,即增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

Zookeeper

Zookeeper(分布式协作服务)源自Google的Ghubby论文,发表于2006年11月,Zookeeper是CHubby实现版。Zookeeper的主要目标是解决分布式环境下的数据管理问题,如统一命名、状态同步、集群管理、配置同步等。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于Hadoop管理操作。

Hive

Hive(数据仓库)由Facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HQL),将HQL转化为MapReduce任务在Hadoop上执行,通常用于离线分析HQL用于运行存储在Hadoop上的查询语句,Hive使不熟悉MapReduce开发人员也能编写数据查询语句,然后这些数据被翻译成Hadoop上面的MapReduce任务。

Pig

Pig(ad-hoc脚本)由yahoo开源,其设计动机是提供一种基于MapReduce的ad-hoc(计算query时发生)数据分析工具。Pig定义了一种数据流语言——Pig Latin,它是MapReduce编程的复杂性抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Lain)。其编译器将Pig Lain翻译成MapReduce程序序列,将脚本转换为MapReduce任务在Hadoop任务在Hadoop上执行,通常用于进行离线分析

Sqoop

Sqoop(数据ETL/同步工具)是SQL-to-Hadoop的缩写,主要用于传统数据和Hadoop之前传输数据。数据的导入和导出本质上是MapReduce程序,充分利用了MR的并行化和容错性,Sqoop利用数据库技术描述数据架构,用于关系数据库、数据仓库和Hadoop之间转移数据

Flume

Flume(日志收集工具)是Cloudera开源的日志系统收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统,当然也可以用于收集其他类型数据

Mahout

Mahout(数据挖掘算法库)起源于2008年,最初是Apache Lucent的子项目,它在极端的时间内取得了长足的发展,现在是Apache的顶级项目。Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便、快捷地创建智能应用程序。Mahout现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广大使用的数据挖掘算法。除了算法,Mahout还包含数据的输入/输出工具与其他存储系统(如数据库、MangoDB或Cassadra)集成的数据挖掘支持架构

YARN

YARN(分布式资源管理器)是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性差,不支持多计算框架而提出的。YARN是下一代Hadoop计算平台,是一个通用的运行时框架,用户可以编写自己的极端框架,在该运行环境中运行。

Mesos

Mesos(分布式资源管理器)是一个诞生于UC Berkeley的研究项目,现已成为Apache项目,当前有一些公司使用Masos管理集群资源,如Twitter。与YARN类似,Mesos是一个资源统一管理和调度平台重点内容,同样支持诸如MR、steaming等多种运算框架。

Tachyon

Tachyon(意为超光速粒子)是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(如Spark、Mapre)提供可靠的内存级速度的文件共享服务。Tachyon诞生于UC Berkeley的AMPLab。

Spark

Spark(内存DAG计算模型)是一个Apche项目,被标榜为“快如闪电的集群计算”,它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。最早Spark是UC Berkeley AMP Lab所开源的类Hadoop MapReduce的通用计算框架,Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark平台可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。

Spark GraphX

Spark GraphX最先是伯克利AMP Lab的一个分布式图计算框架项目,目前整合在Spark运行框架中,为其提供BSP大规模并行图计算能力

Spark MLlib

Spark MLlib是一个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等。

Kafka

Kafka是Linkedin于2010年12月开源的消息系统,主要用于处理活跃的流式数据。活跃的流失数据在Web网站应用中非常常见,这些数据包括网站的PV(Page View),用户访问了什么内容,搜索了什么内容等,这些数据通常以日志的形式保存下来,然后每隔一段时间进行一次统计处理。

Apache Pheonix

Apache Pheonix是HBase的SQL驱动(HBase SQL接口),Pheonix使得HBase支持通过JDBC的方式进行访问,并将你的SQL查询换成HBase的扫描和相应的动作

简而言之,Hadoop提供了一个可靠的共享存储和分析系统。HDFS实现存储,而MapReduce实现分析处理。纵然Hadoop还有其它功能,但这两部分是它的核心。

产品 描述
HDFS 分布式计算框架,提供存储与传输,海量数据,优点是可以在任何机器上运行,廉价,缺点是不适合太多的磁盘小文件
MapReduce 用于对海量数据的计算和分析,由map端和reduce端组成,键值对的形式
HBase 面向列的分布式数据库,可伸缩,高可靠,采用key和value的形式,key由行关键字、列关键字、时间戳组成,提供了随机实时读写
ZooKeeper 分布式协作服务,解决分布式环境下集群的管理
Hive 适用于ETL,数据仓库,分为内表和外表,通常用于分布式离线分析和分布的统计
Sqoop 关系数据ETL工具,传统数据库到hadoop之间的传输,数据的导入导出本身是MapReduce的程序,用于数据库和hadoop之间的转移
Avro 用于支持大批量数据交换的应用,数据序列化系统
Pig 数据处理工具,在MapReduce上构建的查询语言(SQL-LIKE),适用于大量并行计算
Flume 日志收集工具,在收集的过程中会执行简单的处理,过滤和格式的转换
Ambari 集群监控与管理
Mathout 一个机器学习和数据挖掘的库
Oozie 工作流引擎
Hue Hadoop图形化界面
Chukwa 基于Hadoop集群中监控系统,WatchDog
ambari 就是创建、管理、监视 Hadoop 的集群( Hive,Hbase,Sqoop,Zookeeper等)

转自:https://blog.csdn.net/wyqwilliam/article/details/81913740

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangMY12138/article/details/88367659

智能推荐

Laravel-admin 后台的自定义页面用法_laravel-admin $form->action-程序员宅基地

文章浏览阅读1.7w次。Laravel-admin 这个后台很好用,几乎省去了html和js的困扰,让后台CURD变得优雅简洁。这是一个自定义面的Demo路由定义: $router->get('mails/send', 'MailController@send'); $router->post('mails/send', 'MailController@send');控制中写法..._laravel-admin $form->action

flink sql读取kafka数据写入数据湖Apache Hudi_kafka队列 flink 数据湖-程序员宅基地

文章浏览阅读781次。创建生产者[bigdata@bigdata1 bin]$ sh kafka-console-producer.sh --broker-list bigdata1:9092,bigdata2:9092,bigdata3:9092 --topic test_topic>{"id":13,"name":"justin"}创建kafka表CREATE TABLE user_behavior ( id BIGINT, name STRING) WITH ( 'connecto._kafka队列 flink 数据湖

如何使用 Yahoo! Finance stock API 获取股票数据_yahoo finance api 下载数据-程序员宅基地

文章浏览阅读6.9k次。如何使用 Yahoo! Finance stock API 获取股票数据本站曾介绍过,通过代码添加雅虎财经的股票走势图到自己网站的方法(添加美国股市,添加沪深股市),调用的是一张图片。今天在德馨网站,看到了从雅虎财经频道获取股票数据的API(Yahoo! Finance stoc_yahoo finance api 下载数据

SpringMVC+Spring+Mybatis框架整合MQTT通信协议+ActiveMQ作为中间件进行消息的发布与订阅_mqtt +activemq-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏17次。最近做了一个小项目,简单描述下项目结构,主要是java与单片机进行通信,为了实现通信可以采用中间件和http的方式,但是本人因为最近在学习ActiveMQ,所以更加偏向前者,最终确定了采用消息中间件的方式进行通信。 首先完成的步骤分为这两步: 1、单片机采用MQTT的通信协议将一个消息发送到一个消息中间件(本人采用ActiveMQ,也可以采用其他的消息中间件),这里需要注意下..._mqtt +activemq

出租车计费,修改了计费表,每到4就会自动进一位变为5。_出租车遇4跳表算法-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏20次。今天看到一道题挺有意思的。作者不是我。作者:gsgfsgdfg链接:https://www.nowcoder.com/discuss/654309?type=all&order=time&pos=&page=1&channel=-1&source_id=search_all_nctrack来源:牛客网题目:出租车计费,修改了计费表,每到 4 就会自动进一位变为 5 。例如:计费到 4 ,进位到 5计费到 39,进位到 50计费到 39._出租车遇4跳表算法

计算机操作系统有哪几个管理功能,操作系统管理功能有哪几种-程序员宅基地

文章浏览阅读5.9k次。操作系统最重要的功能就是对内存、用户、设备等的管理了,那么管理功能具体是怎样完成的呢。下面由学习啦小编为大家整理了操作系统的五大管理功能的相关知识,希望对大家有帮助!操作系统五大管理功能系统是管理和控制计算机系统中的所有硬件、软件资源,合理地组织计算机工作流程,并为用户提供一个良好的工作环境和友好的接口。计算机系统的主要硬件资源有处理器、存储器、外部设备,软件资源以文件形式存在外存储器上。因此从资..._操作系统具有接口管理功能

随便推点

信噪比讨论(matlab加噪方式、案例分析)_信道加噪-程序员宅基地

文章浏览阅读9.2k次,点赞8次,收藏87次。信噪比讨论11 参数确定首先明确几个符号的意义 :S:信号的平均功率 ..._信道加噪

页面平滑过渡全屏切换-程序员宅基地

文章浏览阅读118次。实现效果为页面平滑过渡全屏切换,点击导航和鼠标滚动都可以切换。效果图:代码:<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <meta http-..._页面 全屏 切换

Android中使用MD5对密码进行加密_安卓 用md5对用户密码进行加密的案例-程序员宅基地

文章浏览阅读4.9k次。Android中使用MD5对密码进行加密最近在做一个小小的项目,其中用到了登录和注册,登录注册的demo网上很多,这里就不详细描述,在注册新用户和登录时候,Android设备都要向服务器发送密码,为了用户的安全,密码一定不能明文发送,所以这里采用了MD5对密码进行加密,比较简单,直接看代码。在工程目录下先创建一个MD5类可以直接复制以下代码//此处导入你的包名import java.security_安卓 用md5对用户密码进行加密的案例

何时启用CheckPoint操作_什么时候启用checkpoint-程序员宅基地

文章浏览阅读1.2k次。1. 使用了有状态的transformation操作--比如updateStateByKey,或者reduceBykeyAndWindow操作,被使用了,那么checkpoint目录要求是必须提供的,也就是必须开启checkpoint机制,从而进行周期性的RDD checkpoint2. 要保证可以从Driver失败中进行恢复--元数据checkpoint需要启用,来进行这种情况的恢复要注意,并不..._什么时候启用checkpoint

VTK笔记——合并数据(vtkAppendPolyData)-程序员宅基地

文章浏览阅读4.8k次。数据的合并在3D应用中时常会用到,怎样合并数据,对于不同类型的数据,合并的方法却不相同。vtk中的数据集有很多类,主要包括结构化网络数据集、非结构化网络数据集、多边形数据集、结构化点集、线性网络数据集、非结构化点集等几类。_vtkappendpolydata

anime.js 动画_使用Anime.js动画化DOM-程序员宅基地

文章浏览阅读771次。anime.js 动画 如果您正在寻找一个快速且轻便的动画库,那么Julian Garnier的Anime.js是您想要考虑的选择。 这是有关动态DOM动画工具(包括SVG图形)的系列文章中的第一篇。 我不打算包含专门的canvas-WebGL动画库或SVG特定的动画库。 但是,如果图书馆擅长为网页上HTML元素(最好是SVG图形)制作动画,我将考虑将其包含在本系列中。 我无意剖析每个库..._如何让anime.js动画重新启动

推荐文章

热门文章

相关标签