Hadoop生态圈知识

1、Hadoop生态圈知识

  1、Hadoop生态概况

  Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户能够在不了解分布式底层细节的状况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。具备可靠、高效、可伸缩的特色。java

  Hadoop的核心是YARN,HDFS和Mapreduce。node

  一、经常使用的模块架构

  

  二、Hadoop社区版和发行版的区别

    一、社区版的优缺点

  优势:web

  • 彻底免费
  • 彻底开源
  • 社区活跃

  缺点算法

  • 版本管理较麻烦
  • 缺少部署、运维等工具
  • 技术问题无人兜底(什么问题都会遇到)
    二、发行版的优缺点

  优势数据库

  • 版本管理清晰
  • 兼容性、稳定性有提高
  • 工具丰富
  • 可购买技术服务

  缺点tomcat

  • 企业版须要付费
  • 部分或所有不开源
  • 部分产品无社区生态可言

  三、Hadoop的应用场景

  • 海量数据存储:各类云盘
  • 日志处理:对网站日志作ETL,存入Hive或各类关系型数据库
  • 数据分析:hive/impala等可用于离线数据分析、BI,spark和HBase等可用于实时的分析
  • 机器学习:用于标签、推荐系统

  四、Hadoop不适用的场景

  • 少许结构化数据:不超过TB的结构化数据,继续使用单机版数据库,超过TB先考虑使用数据库集群
  • 低延迟数据访问:能够考虑HBase,如果K/V型的则选择更多,例如Redis
  • 大量小文件:HDFS的文件结构保存在namenode进程的内存中,所以总量是有限制的,通常100w个文件消化300M内存。若小文件超多,仍是随机读写,HDFS就很是不合适的,通常有这种需求的公司会有本身研发。(默认的存储文件块是64M,其余存储文件块是几K)
  • 实时计算:MapReduce的批处理机制决定了不能实时计算,根据实时性要求的不一样,可以使用Storm或SparkStreaming

  五、为什么大数据都要学Hadoop

  • 非顶级公司,Hadoop几乎是分布式计算的必选方案
  • 即便顶级公司,Hadoop的经验也很是有用

  2、HDFS(Hadoop分布式文件系统)

  源自于Google的GFS论文,发表于2003年10月,HDFS是GFS克隆版。安全

  HDFS是Hadoop体系中存储管理的基础。他是高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。服务器

  HDFS简化了文件的一致性模型,经过流式数据访问,提升吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。架构

  它提供了一次写入屡次读取的机制,数据以块的形式,同时分布式在集群不一样物理机上。框架

  一、HDFS架构示意图

  CS架构:分为两部分,NameNode(服务端)和DataNode(客户端)

  Client是第三方程序。

  

  访问数据:Client请求访问NameNode,NameNode返回相应的元数据(告知client数据在哪一个DataNode上),client找对应的DataNode读取数据。

  NameNode负责数据存储到哪一个节点上。

  容错机制(数据备份): NameNode将数据存储到某个节点的同时,会根据配置建立对应副本到其余(物理)节点上(能够感知数据在哪一个物理节点上)。

  二、namenode和datanode角色职责

    一、namenode职责
  • 接收用户操做请求
  • 维护文件系统的目录结构
  • 管理文件与block之间关系,block与datanode之间关系
    二、datanode职责
  • 按照namenode的要求存储文件
  • 文件被分红block存储在磁盘上
  • 为保证数据安全,文件会有多个副本

  三、替代HDFS的产品

  

  3、MapReduce(分布式计算框架)

  一、MapReduce介绍

  源自于Google的MapReduce论文,发表于2004年12月,Hadoop MapReduce是Google MapReduce的克隆版。

  MapReduce是一种分布式计算模型,泳衣进行大数据量的计算。他屏蔽了分布式计算框架细节,将计算抽象成map和reduce两部分

  map对数据集上的独立元素进行指定的操做,生成键-值对形式中间结果。reduce则对中间结果中相同“键”的全部“值”进行规约,以获得最终结果。

  MapReduce很是适合大量计算机组成的分布式并行环境里进行数据处理。

  二、替代MapReduce的产品

  

  4、HBASE(分布式列存储数据库)

  一、HBase简述

  源自于Google的bigtable论文,发表于2006年11月,HBase是Google bigtable的克隆版。

  HBase是一个开源的非关系型分布式数据库(NoSQL)。

  HBase是一个创建在HDFS之上, 面向列的稀疏排序映射表(Key/value),其中,键由行关键字、列关键字和时间戳构成。

  在HBase中,列簇至关于关系型数据库的表。而key-value这样的键值对,至关于数据库里面的一行。

  HBase提供了对大规模数据的随机、实时读写访问;同时,HBase中保存的数据可使用MapReduce来处理,它将数据和并行计算完美结合在一块儿。

  二、HBase的特色

  HBase具备高可靠性、高性能、面向列、可伸缩的特色

  三、HBase适用于哪些应用

  • 海量数据(TB、PB)
  • 须要在海量数据中高效的随机读取
  • 能同时处理结构化和非结构化数据
  • 不须要彻底拥有RDBMS的ACID特性

  四、HBase架构图

  

  5、zookeeper(分布式协做服务)

  一、zookeeper简述

  源自于Google的chubby论文,发表于2006年11月,zookeeper是chubby的克隆版。

  zookeeper是一个分布式应用程序协调服务。

  它解决了分布式环境下数据管理问题:统一命名,状态同步,集群管理,配置同步等。

  Hadoop的许多组件依赖于zookeeper,它运行在计算集群上面,用于管理Hadoop操做。

  二、znode

  zookeeper名字空间的每一个节点都是以这样一个路径来标识的。这样的节点统一称为znode。

  分为如下几类(如下能够组成)

  • 持久的/临时的
  • 无序的/有序的

  三、三种成员

  • leader:接收消息,并编号
  • follower:同步消息,参与leader选举
  • observer:同步消息,但不参与leader选举(提高节点选举效率,可添加observer)

  6、HIVE(数据仓库)

  由Facebook开源,最初用于解决海量结构化的日志数据统计问题。

  Hive定义了一种相似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。一般用于离线分析。

  HQL用于运行存储在Hadoop上的查询语句,Hive让部署MapReduce开发人员也能编写数据查询语句,而后这些语句被翻译为Hadoop上面的MapReduce任务。

  一、hive架构以下

  

    

  Hadoop和MapReduce是hive架构的根基。

  二、hive架构包括的组件

  分为两大类:服务端组件和客户端组件

  • CLI:(command line interface)
  • JDBC/ODBC
  • Thtift Server
  • WEB GUI
  • metastore
  • Driver(complier 、optimizer和executor)

   7、Pig(ad-hoc脚本)

  有Yahoo开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具。

  pig定义了一种数据流语言——pig latin,它是MapReduce变成的复杂性的抽象,pig平台包括运行环境和用于Hadoop数据集的脚本语言(pig latin)。

  实现:pig 编译器将pig latin翻译成MapReduce程序序列,将脚本转换成MapReduce任务在Hadoop上执行,一般用于离线分析。(如今几乎让hive去掉

  8、sqoop(数据ETL/同步工具)

  sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之间传输数据。数据的导入和导出本质是MapReduce程序,充分利用MR的并行化和容错性。

  sqoop利用数据库计算描述数据架构,用在关系数据库、数据仓库和Hadoop之间转移数据

  9、flume(日志收集工具)

  flume是cloudera开源的日志收集系统,具备分布式、高可靠、高容错、易于定制和扩展的特色。

  它将数据从产生、传输、处理并最终写入目标路径的过程抽象为数据流,在具体的数据流中,数据源支持在flume中定制数据发送方,从而支持收集各类不一样协议数据。(能够直接写到Hadoop中,传输到另一台服务器中,或本地指定路径)

  flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外flume还具备可以将日志写到各类数据目标(可定制)的能力。

  总的来讲,flume是一个可扩展、适合复杂环境的海量日志收集系统,也能够用于收集其余类型数据。

  10、Oozie(工做流调度器)

  Oozie是一个基于工做流引擎的服务器,能够在上面运行Hadoop的MapReduce和pig任务。它实际上是一个运行在Java Servlet容器(好比tomcat)中的java web应用。

  对于Oozie来讲,工做流就是一系列的操做(好比Hadoop的MR,以及pig的任务),这些操做经过有向无环图的机制控制。这种控制依赖是,一个操做的输入依赖于前一个任务的输出,只有前一个操做全完完成后,才能开始第二个。

  Oozie工做流经过hPDL(hPDL是一种xml的流程定义语言)。工做流操做经过远程系统启动任务,当任务完成后,远程系统会进行回调来通知任务已经结束,而后

再开始下一个操做。

  一、Oozie工做流包含控制流节点以及操做节点

  控制流节点定义了工做流的开始和借宿(start、end以及fail的节点),宁控制工做流执行路径(decision,fork,join节点)。操做节是工做流触发计算/处理任务的执行,Oozie支持不一样的任务类型Hadoop MapReduce,hdfs,pig,ssh,email,Oozie子工做流等等。Oozie能够自动以扩展任务类型。

  Oozie工做流能够参数化的方式执行(使用变量${inputDir}定义)。当提交工做流任务时,就须要同时提供参数。若参数合适的话(使用不一样的目录)就能够定义并行的工做流任务。

  

 

  11、Yarn(分布式资源管理器)

  YARN是一代MapReduce,即MRv2。是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性查,不支持多计算框架而提出的。

     YARN是下一代Hadoop计算平台,是一个通用的运行框架,用户能够编写本身计算框架,在该运行环境中运行。

  用于本身编写的框架做为客户端的一个lib,在运行提交做业时打包便可。

  一、YARN包含的组件

  • 资源管理:包括应用程序管理和机器资源管理
  • 资源双层调度
  • 容错性:各个组件均有考虑容错性
  • 扩展性:可扩展到上万个节点

  二、MRv1与MRv2架构

  

  

  12、spark(内存DAG计算模型)

  一、spark简述

   spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有了一个繁荣的开源社区,而且是目前最活跃的Apache项目。

  spark是分布式批处理系统和分析挖掘引擎。

  最先spark是UC berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。

   二、spark的功能

  • 数据处理:能够用来快速处理数据,兼具容错性和可扩展性
  • 迭代计算:支持迭代计算,有效应对多步的数据处理逻辑
  • 数据挖掘:在海量数据基础上进行复杂的分析,可支持各类数据挖掘和机器学习算法

  三、spark的优点

  快,内存计算;资源分配灵活,可基于Yarn或Mesos

  spark提供了一个更快的、更通用的数据处理平台。和Hadoop相比,spark可让你的程序在内训中运行时速度提高100倍,或者在磁盘时速度提升10倍。

  四、spark架构

  

  十3、kafka(分布式消息队列)

  kafka是LinkedIn与2010年12月开源的消息队列系统,他主要用于处理活跃的流式数据。

  活跃的流式数据在web网站应用中很是常见,这些数据包括:网站的PV,用户访问了什么内容,搜索了什么内容等等。这些动做一般以日志的形式记录下来,而后每一个一段时间进行一次统计处理。

  十4、storm

  一、storm简述

  storm是一个开源、分布式、高容错的实时计算系统,弥补了Hadoop批处理所不能知足的实时要求,常常用于在实时分析、在线机器学习、持续计算、分布式远程调用和EIL等领域。

  二、storm的关键概念

  https://blog.csdn.net/hxyerui/article/details/51179488

  三、storm架构图

  

  十5、Hue

  一、Hue简述

  Hue(Hadoop user experience)是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,它是基于Python Web框架Django实现的。

  二、Hue的功能

  • SQL编辑,支持Hive、impala、sparkSQL和各类关系型数据库
  • 管理Hadoop和spark任务
  • HBase数据的查询和修改
  • Sqoop任务的开发和调试
  • 管理Oozie的工做流
  • 其余功能:浏览HDFS、浏览zookeeper

  十6、StreamSets

   在streamsets推出前,flume,scribe等少数开源工具是流式采集日志仅有的解决方案,flume的应用案例最多。streamsets是flume的良好替代品

  streamsets的源和目标的支持特别丰富,还能够对数据进行不落地处理,所以还能够替代传统ETL软件的一部分功能

  一、streamsets的优势

  • 功能上,有管理界面,能够单个流启停,统计报表丰富,能够预览数据
  • 源端支持,其多出HDFS、JDBC、Redis、ftp等几种重要的源
  • 目标端支持,其多出JDBC、Redis、RabbitMQ、Flume等几种重要的目标
  • 数据处理上,streamsets有多种字段处理组件,flume仅有过滤功能。有强大的格式处理能力,且支持源端压缩格式,还能使用JavaScript和Python等自定义处理逻辑

  二、streamsets的缺点

  资源占用率比flume略高,可是由于和flume同样能够分布式部署,问题不大

相关文章
相关标签/搜索