hadoop生态圈的详解

学习和使用hadoop有一年了,这里主要分享一下对hadoop整体上的理解,分门别类的介绍一下相关组件,最后提供了建议的学习路线,希望对hadoop的初学者有参考作用。

1.      Hadoop核心件组有哪些? 广义hadoop指什么?

  • 核心组件有:Hdfs、Yarn、MapReduce;
  • 广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如hdfs、yarn、hbase、hive、spark、pig、zookeeper、kafka、flume、phoenix、sqoop。

2.      Spark与hadoop之间有什么联系

  • Spark也是一个生态圈,发展非很快,在计算方面比mapreduce要快很多倍,供了一个简单而丰富的编程模型,支持多种应用,包括ETL、机器学习、数据流处理、图形计算;
  • Hadoop和Spark在某些方面有重叠,但组件之间都可以很好的协同作战。

3.      分门别类介绍其中详细组件

为了方便理解以下按照功能进行了分类,并且把较为流行的排在了前面介绍,列表如下:


分类


相关产品


文件系统


HDFS,目前大量采用的分布式文件系统,是整个大数据应用场景的基础通用文件存储组件

S3, Simple Storage Service简单存储服务,更好的可扩展性,内置的持久性,以及较低的价格


资源调度


YARN,分布式资源调度,可以接收计算的任务把它分配到集群各节点处理,相当于大数据操作系统,通用性好,生态支持好;

Mesos,同YARN类似,偏向于资源的抽象和管理


计算框架


Spark序列,有流计算、图计算、机器学习;

Flink,支持计算数据不断变化,即增量计算;

Storm,专注于流式计算,功能强大;

Mapreduce, 分布式计算基本计算框架,编程难度高,执行效率低


数据库


Hbase,一种NoSQL列簇数据库,支持数十亿行数百万列大型数据储存和访问,尤其是写数据的性能非常好,数据读取实时性较好,提供一套API,不支持SQL操作,数据存储采用HDFS;

Cassandra,对大型表格和 Dynamo支持得最好;

Redis,运行异常快,还可应用于分布式缓存场景


SQL支持


Spark SQL,由Shark、Hive发展而来的,以SQL方式访问数据源(如hdfs、hbase、S3、redis甚至关系统数据库等,下同);

Phoenix,一套专注于SQL方式访问hbase的JDBC驱动,支持绝大部分SQL语法,支持二级索引,支持事务,低延时;

Hive,通过HQL(类似SQL)来统计分析生成查询结果,通过解析HQL生成可以Mapreduce上执行的任务,典型的应用场景是与hbase集成;

其它:impala、pig等,都实现了类似的功能,解决了直接写map/reduce分析数据的复杂性,降低了数据分析工作者或开发人员使用大数据的门槛


其它工具


分布式协作zookeeper,可以理解为一个小型高性能的数据库,为生态圈中与很多组件提供发布订阅的功能,还可以监测节点是否失效(心跳检测),如HBase、Kafka中利用zookeeper存放了主从节点信息;

Kafka, 是一种分布式的,基于发布/订阅的消息系统,类似于消息对列的功能,可以接收生产者(如webservice、文件、hdfs、hbase等)的数据,本身可以缓存起来,然后可以发送给消费者(同上),起到缓冲和适配的作;

Flume,分布式的海量日志采集、聚合和传输的系统,主要作用是数据的收集和传输,也支持非常多的输入输出数据源;

Sqoop,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中

4.      典型的组合使用场景

Hadoop、Spark生态圈的组件是相互配合使用的,每个组件都有自己“用武之地”,组合起来完成即可以满足各种系统业务需求,下面列举两个例子:

(1)数据采集、存储、分析场景

该场景下完成了整个数据的采集、存储、分析,并输出结果,组件搭配如下:

Flume + kafka(zookeeper)+ Hdfs + Spark/Storm/Hive + Hbase (Zookeeper、Hdfs) /Redis

说明如下:

  • Flume用来从种渠道(如http、exec、文件、kafka , …)收集数据,并发送到kaffka(当然也可以存放到hdfs、hbase、file、…)
  • Kafka可以缓存数据,与flume一样也支持各种协议的输入和输出,由于kafka需要zookeeper来完成负载均衡和HA,所以需要zookeeper来支持
  • 开始计算,这里有三种选择,Spark/Storm/Hive,各有优势,相对Hive目前仍使用广泛,该技术出现的较早;Storm专注于流式处理,延迟非常低; Spark最有前景的计算工具;不管用什么,最终都是对数据的清理、统计,把得到的结果输出
  • 展示结果数据存储,可以使用Hbase kafka(zookeeper) /Redis或mysql等,看使用场景(数据量大小等因素),由于处理之后的结果数据一般比较少可以直接放到Redis,然后就可以采用常规的技术展示出报表或其它消费方式使用这些计算后的结果数据

(2)数据存储和实时访问

这种场景非常类似常规应用开发场景,即通过java的JDBC来访问大数据集群,组件搭配:

Jdbc + Solr + Phoenix/Spark sql + Hbase kafka(zookeeper) + Hdfs

说明如下:

  • Jdbc是通用的java操作数据库的方式,使用的是sql语句
  • Solr为全文检索,完成站点分词搜索功能
  • Phoenix/Spark sql方便以jdbc方式访问Hbase数据库
  • Hdfs最终完成数据的物理存储

5.      建议的学习线路

仅凭个人经验,大概的分了三个阶段,如下:

时间: 2024-11-06 16:56:09

hadoop生态圈的详解的相关文章

hadoop生态圈安装详解(hadoop+zookeeper+hbase+pig+hive)

目录 1.hadoop分布式安装 2.zookeeper分布式安装 3.hbase分布式安装 4.pig分布式安装 5.hive客户端安装

hadoop fsck命令详解

hadoop fsck命令详解 hadoop  fsck Usage: DFSck <path> [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]        <path>             检查这个目录中的文件是否完整 -move               破损的文件移至/lost+found目录        -delete             删除破损的文件 -o

kettle连接hadoop&amp;hdfs图文详解

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到页面最下面的底端,如下图: ar

kettle入门(三) 之kettle连接hadoop&amp;hdfs图文详解(转)

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到页面最下面的底端,如下图: ar

kettle入门(三) 之kettle连接hadoop&amp;hdfs图文详解

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把原始文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到打开页面最下面的底端如下图: arc

Hadoop RCFile存储格式详解(源码分析、代码示例)

RCFile RCFile全称Record Columnar File,列式记录文件,是一种类似于SequenceFile的键值对(Key/Value Pairs)数据文件. 关键词:Record.Columnar.Key.Value. RCFile的优势在哪里?适用于什么场景?为了让大家有一个感性的认识,我们来看一个例子. 假设我们有这样一张9行3列的Hive数据表table,以普通的TextFile进行存储, 现在我们需要统计这张数据表的第二列(col2)值为“row5_col2”的出现次数

hadoop之mapreduce详解(优化篇)

一.概述 优化前我们需要知道hadoop适合干什么活,适合什么场景,在工作中,我们要知道业务是怎样的,能才结合平台资源达到最有优化.除了这些我们当然还要知道mapreduce的执行过程,比如从文件的读取,map处理,shuffle过程,reduce处理,文件的输出或者存储.在工作中,往往平台的参数都是固定的,不可能为了某一个作业去修改整个平台的参数,所以在作业的执行过程中,需要对作业进行单独的设定,这样既不会对其他作业产生影响,也能很好的提高作业的性能,提高优化的灵活性. 现在回顾下hadoop

Hadoop学习(二) Hadoop配置文件参数详解

Hadoop运行模式分为安全模式和非安全模式,在这里,我将讲述非安全模式下,主要配置文件的重要参数功能及作用,本文所使用的Hadoop版本为2.6.4. etc/hadoop/core-site.xml 参数 属性值 解释 fs.defaultFS NameNode URI hdfs://host:port/ io.file.buffer.size 131072 SequenceFiles文件中.读写缓存size设定 范例: <configuration> <property> &

Hadoop Shell命令详解

     说明:调用文件系统(FS)Shell命令应使用bin/hadoop fs <args>的形式.所有的的FS shell命令使用URI路径作为参数. 1.cat 说明:将路径指定文件的内容输出到stdout. 用法:hadoop fs -cat URI [URI -] 范例: hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2 hadoop fs -cat file:///file3/user/hadoop/