Hadoop大数据生态圈介绍

Hadoop、Spark生态圈主要介绍

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

  • 核心组件有:Hdfs、Yarn、MapReduce
  • 广义上指一个生态圈,泛指大数据技术相关的开源组件或产品,如hdfs、yarn、hbase、hive、spark、pig、zookeeper、kafka、flume、phoenix、sqoop、...,以后将进行详细说明
  • 特点是开源(Apache协议)、分布式、大容量、可扩展、HA等,应用中可灵活组合使用

Spark与Hadoop之间有什么联系

  • Spark也是一个生态圈,发展非常快,在计算方面比MapReduce要快并且编程更简单,除计算还包括ETL、机器学习、流处理、图计算等组件
  • Hadoop和Spark在某些方面重叠,但他们之前可以很好的协同作战

 

生态圈中常用组件或产品详细介绍

文件系统:

  • 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甚至关系型数据库等,下同)
  • Phonenix,一套专注于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、pstgresql...)间进行数据的传递,可以将一个关系型数据库(例如:MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中
  • Solr,提供全文搜索服务,基于Lucene的全文搜索服务器

典型的组合使用场景

Flume → kaffa → Hdfs → Spark/Storm/Hive → Hbase/Redis/Mysql → Phoenix/Spark sql/Hive     (大数据组件)

→ Jdbc → Hibernate/Mybatis/Jfinal → Struts2/Spring MVC/Jfinal → Echarts/Html   (常规的编程、前端展示组件)

  • Flume从各种渠道收集数据发送到Kafka
  • Kafka可以缓存数据,并将原始数据存放到hdfs
  • Spark/Storm/Hive从hdfs中取出数据进行清洗、统计等计算操作,并把统计结果存放到Hbase/Redis/Mysql
  • Phoenix/Spark sql/Hive提供了标准Jdbc方式的访问接口,调用程序只需向Jdbc接口编程,即可读取Hbase/Redis/Mysql中的数据
  • Jdbc获取到数据后通过ORM组件(Hibernate/Mybatis/Jfinal),将数据集合转换为对象集合,一般为List形式,发送到控制层Struts2/Spring MVC/Jfinal
  • 控制层把数据发给view层,最终使用Echarts来绘制图形报表展示给用户

 

 

 

 

 

 

 

 

你可能感兴趣的:(大数据)