2018-07-28-初入Hadoop生态系统

前言

说起Hadoop,知道它是一个开源的、可运行于大规模集群上的分布式计算平台,实现了MapReduce计算模型和分布式文件系统HDFS等功能;但对Hadoop整个的生态不够了解,本着爱学习的态度,一块来探探hadoop的生态圈。

关于Hadoop

日常生活中我们一看到大数据和大数据相关的信息就会想到了hadoop,但要说具体点,又不知从何说起。
hadoop是基于Java开发的,所以在跨平台上有很大的优势,并且可以部署在廉价的计算机集群中,所以导致hadoop的火热程度。hadoop的核心是HDFS和MapReduce,HDFS是针对谷歌文件系统(GFS)的开源实现,具有较高的读写速度、容错性、可伸缩性,采用MapReduce的整合,可以在不了解分布式系统底层细节的情况下开发。这样就可以轻松的完成海量数据的存储和计算。

Hadoop的特性

  • 高可靠:采用冗余数据存储方式,这个即使一个副本发生故障,还有其它的副本保证正常对外服务。
  • 高效:采用了分布式存储和分布式处理两大核心,能够很高效的处理大量的数据。
  • 高可扩展:前面说了部署在廉价的计算机集群上,扩展起来很方便。
  • 成本低:参考高可扩展。
  • 高容错:参考高可靠,能够自动将失败任务重新分配。
  • 平台:运行在Linux上,基于java开发的hadoop跨平台优势可以很好完成。
  • 支持多种语言编程

Hadoop生态系统

hadoop除了HDFS和MapReduce外,还还包括了其它很多的功能组件。例如:经常听到的zookeeper、hbase、hive、pig、mahout、sqoop、flume、ambari等功能组件。


hadoop生态系统

下面对各个组件做一个简单的概述,比较常用的着重描述。

  • Ambari:一种基于web的工具,就作用来说,就是创建、管理、监视Hadoop生态圈的集群;就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

    Ambari的Dashboard页面

  • Zookeeper:为分布式系统提供一致性协同服务,像配置服务、命名服务、分布式同步等,前面服务发现这篇文章中也讲到了为什么Zookeeper不适合做发现服务,感兴趣的可以去了解下,还有消息中间件里面也讲到了Kafka使用Zookeeper来维护集群信息。
    下面讲讲Zookeeper特性

    1. 最终一致性:最重要的性能,client不论连接到哪个server,展示都是同一个视图。
    2. 可靠性:具有简单、健壮、良好性能,如果消息被一台server接受,它将被所有server接受。
    3. 实时性:保证client在一个时间间隔范围内获得server的更新信息/失效信息,但存在网络延时等原因,不能保证所有client同时得到,应该在读数据之前调用sync接口同步。
    4. 等待无关:互不相关,慢的或者失效的client不得干涉快的client的请求。
    5. 原子性:只有成功或者失败,没有中间状态。
    6. 顺序性:从同一客户端发起的事务请求,都会最终被严格的按照其发送顺序被应用到zk中,包括全局有序和偏序两种,全局有序好理解,就是所有的server的发布消息顺序一样;偏序存在无法比较的现象,如果一个消息B在消息A后被同一个发布者发布,A必将排在B前面。
      Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步,leader崩溃,由server发起选举。
      典型的应用场景(配置文件管理、集群管理、同步锁、leader选举、队列管理等)
      最典型集群模式: Master/Slave 模式(主备模式),Master负责写,Slave负责读,但Zookeeper没有使这种模式,采用了三种角色。
      Zookeeper中三种角色
    • 领导者(leader):负责进行发起投票和决议,更新系统状态。
    • 学习者:分为跟随着(follower)和观察者(observer),前者用于接收客户请求并向客户端返回结果,参与投票;后者接收客户端写请求,转发给领导者,不参与投票,只同步领导者的状态。
    • 客户端:请求发起方。
      zookeeper
  • Hbase:一个实时读写、分布式的列式数据库,主要是为了弥补Hadoop对实时操作的缺陷。和传统关系型数据库有一个很重要的区别是,一个是基于行,一个是基于列。可以说它是键值存储,也可以说它是多时间版本映射的数据库。
    四个描述

    • 行键(rowkey):可以理解它为唯一ID,唯一标识,Hbase是不允许跨行的事务,所有rowkey和列族的设计就尤为重要和取巧。
    • 列族/列键(column family):一个表中必须至少有一个列族,列族是由多个列组成的,列族是能影响数据存储的物理特性。
    • 列限定符(column key):可以理解为列。列族里的数据是通过列限定符来定位。列限定符不需要事前定义,这也是和关系型数据库的区别,支持任意扩展。
    • 时间戳(timestamp):可以理解为行键、列族、列限定符组成了一个单元(cell),cell是有时间版本,用时间戳标识,默认是3个。
  • Hive:sql转换MapReduce程序语言,可以减少MapReduce jobs编写工作,Hive提供了类似sql语言的查询语言-Hive QL,可以通过Hive QL语句快速实现简单的MapReduce统计,十分适合做数据仓库的统计分析。

  • Pig:在MapReduce上创建了更简单的过程语言抽象,提供了一种更接近结构化查询语言(SQL)的接口,可以理解为Pig最大的作用就是对MapReduce算法(框架)实现了一套shell脚本 ,称之为:Pig Latin。

  • Mahout:用于机器学习的一个框架,旨在帮助更方便快捷创建智能应用程序,包含许多实现,聚类、分类、推荐过滤、频繁子项挖掘等。

  • MapReduce:一种离线计算框架,用于大规模数据集的平行运算,将并行计算过程高度抽象到了两个函数,Map和Reduce;这样就可以在不了解分布式系统底层细节的情况下进行平行应用开发,核心思想是:“分而治之”,把输入的数据集切分为若干独立的数据库,分发给各个分节点共同平行完成,最后聚合结果得到最终结果。

  • YARN:调度系统,资源管理器,最初是为了修复MapReduce实现的不足,因为MapReduce是采用了Master/Slave 模式,一个JobTracker负责作业调度和资源管理,多个TaskTracker负责执行被指派的具体任务,所以会存在单点故障、任务过重、内存溢出、资源划分不合理等缺陷。

  • HDFS:Hadoop分布式文件系统,是针对谷歌文件系统GFS的开源实现,具有处理超大数据、流式处理、可以运行在廉价商用服务器上等有点。

  • Flume:分布式的海量日志采集,聚合和传输的系统,Flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。

  • Sqoop:SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据,通过Sqoop可以方便的将数据从关系数据库中导入Hadoop,或者将数据从Hadoop导出到关系数据库,Sqoop主要通过JDBC和关系数据库进行交互。

附加几个其它的功能组件

  • Storm:Storm是Twitter开源的分布式实时大数据处理框架,流计算平台,优点是无延迟,缺点是不够灵活,想要统计的东西必须预知道;要达到更新实时,在数据流进来的时候就开始处理,比如广告点击计算,它的实时性要远远好于MapReduce计算框架。

  • Spark:MapReduce计算框架不适合迭代计算和交互计算,MapReduce是一种磁盘计算框架,而Spark则是一种内存计算框架,它将数据尽可能放到内存中提高迭代应用和交互式应用的计算效率。

  • Pregel:Pregel是Google提出的大规模分布式图计算平台,专门用来解决网页链接分析、社交数据挖掘等实际应用中涉及的大规模分布式图计算问题,Pregel作为分布式图计算的计算框架,主要用于图遍历、最短路径、PageRank计算等。

针对Hadoop的改进和提升
Hadoop框架自身的改进,从1.0到2.0

组件 Hadoop1.0的问题 Hadoop2.0的改进
HDFS 单一名称节点,存在单点失效问题 设计了HDFS HA,提供名称节点热备份机制
单一命名空间,无法实现资源隔离 设计了HDFS联邦,管理多个命名空间
MapReduce 资源管理效率底 设计了新的资源管理框架YARN

不断完善的Hadoop生态系统

组件 功能 解决Hadoop中存在的问题
Pig 处理大规模数据的脚本语言,用户只要编写几条简单的语句,系统会自动转换为MapReduce作业 抽象层次低,需要手工编写大量代码
Oozie 工作流和协作服务引擎,协调Hadoop上运行的不同任务 没有提供作业依赖关系管理机制,需要用户自己处理作业之间的依赖关系
Tez 支持DAG作业的计算框架,对作业的操作进行重新分解和组合,形成一个搭的DAG作业,减少不必要操作 不同的MapReduce任务之间存在重复操作,降低了效率
Kafka 分布式发布订阅消息系统,不同类型的分布式系统可以统一接入到Kafka,实现和Hadoop各个组件之间的不同类型数据的实时高效交换 Hadoop生态系统中各个组件和其它产品之间缺乏统一的、高效的数据交换中介

结语

这里主要是对Hadoop生态系统的一些功能组件做一个简单的归类描述,不涉及到具体的实现。
感兴趣的可以看看个别组件功能的详细实战。
浅谈Hbase与中间的一些设计策略
个人博客~
简书~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,789评论 2 89
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,145评论 0 34
  • 终极算法 关注微信号每天收听我们的消息终极算法为您推送精品阅读 前言 Hadoop 在大数据技术体系中的地位至关...
    Yespon阅读 128,596评论 12 168
  • 【什么是大数据、大数据技术】 大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法在合理时间内通过传统的应...
    kimibob阅读 2,692评论 0 51
  • 想去转山的缘起 五月之后,身体就像一个老房子被蛀虫啃噬,开始不动声色的全面腐朽,已经影响到我的日常闻思功课和为社会...
    倪铭忆阅读 2,003评论 2 2