hadoop生态系统基本介绍

1)hadoop 生态系统

  hdfs:(Hadoop Distributed File System 分布式文件系统)

    a) block:  hdfs将一个大文件切割成多个小文件,在2.0版本中每个小文件的大小为128MB,这些小文件被称作为块(block)

    b) namenode:namenode 是 HDFS 集群主节点,负责维护整个 hdfs 文件系统的目录树,以及每一个路径(文 件)所对应的 block 块信息(block 的 id,及所在的 datanode 服务器)

      NameNode 对数据的管理采用了两种存储形式:内存和磁盘

      首先是内存中存储了一份完整的元数据,包括目录树结构,以及文件和 数据块与副本存储地 的映射关系;

      1) 内存元数据  metadata : metadata (全部存在内存中)

      2) 磁盘元数据镜像文件 fsimage:fsimage_0000000000000000555

      3) 数据历史操作日志文件 edits:edits_0000000000000000001-0000000000000000018 (可通过日志运算出元数据,全部存在磁盘中)

      4) 数据预写操作日志文件 (正在编辑的日志文件)edits_inprogress_0000000000000000556

      5) 集群的版本信息: VERSION  存放 hdfs 集群的版本信息

  yarn:(Yet Another Resources Negotiator 运算资源调度系统)    c) datanode:datanode 是 HDFS 集群从节点,每一个 block 都可以在多个 datanode 上存储多个副本(副本 数量也可以通过参数设置 dfs.replication,默认是 3)

  mapReduce:(Map 和 Reduce 分布式运算编程框架)

  common:(基础功能组件)(工具包,RPC 框架)JNDI 和 RPC

2)hbase:非关系型数据库

3)hive:Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce 执行 所以说 Hive 是基于 Hadoop 的一个数据仓库工具,

      实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和管理

4)Zookeeper:ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现。

       它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比 如分布式同步,配置管理,集群管理,命名管理,队列管理。

       它被设计为易于编程,使用文 件系统目录树作为数据模型。服务端跑在 java 上,提供 java 和 C 的客户端 API

5)Flume: Flume 是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,

       用于收集数据,同时,Flume 提供对数据的简单处理,并写到各种数据接收方的能力。

6)kafka:Kafka 是一个分布式消息队列,在流式计算中,Kafka 一般用来缓存数据(类似大坝,蓄水),Storm 通过消费 Kafka 的数据进行计算。

     经典架构:Flume + Kafka + Storm + Redis

     Kafka 是一个分布式消息队列:具有生产者、消费者的功能。它提供了类似于 JMS 的特性,

        但是在设计实现上完全不同,此外它并不是 JMS 规范的实现。

     Kafka 对消息保存时根据 Topic 进行归类,发送消息者称为 Producer,消息接受者称为 Consumer,

     此外 Kafka 集群有多个 Kafka 实例组成,每个实例(server)成为 broker。

     

7)redis:Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库

    REmote DIctionary Server(Redis)是一个由 Salvatore Sanfilippo 写的开源的、高性能的、使用

    ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、key-value

    存储系统,并提供多种语言的 API。和 memcached 类似,Redis 常被称作是一款 key-value 内

    存存储系统或者内存数据库,同时由于它支持丰富的数据结构,又被称为一种数据结构服务

    器(Data Structure Server)。因为值(value)可以是字符串(String),哈希(Map),列表(list),

    集合(sets)和有序集合(sorted sets)等类型。

8)sqoop:数据迁移工具

    Sqoop 是 Apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。

    导入数据:MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统

    导出数据:从 Hadoop 的文件系统中导出数据到关系数据库 MySQL 等

    Sqoop 的本质还是一个命令行工具,和 HDFS,Hive 相比,并没有什么高深的理论。

9)azkaban:工作流调度器  

    对市面上最流行的两种调度器,给出以下详细对比,以供技术选型参考。总体来说,ooize

    相比 azkaban 是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不

    在意某些功能的缺失,轻量级调度器 azkaban 是很不错的候选对象。

猜你喜欢

转载自www.cnblogs.com/hongtenglong/p/9338172.html