当下 Hadoop 已经成长为一个庞大的生态体系,只要和海量数据相关的领域,都有 Hadoop 的身影。下图是一个 Hadoop 生态系统的图谱,详细列举了在 Hadoop 这个生态系统中出现的各种数据工具。

  这一切,都起源自 Web 数据爆炸时代的来临。Hadoop 生态系统的功能以及对应的开源工具说明如下。

MapReduce

  fork是计算机程序设计中的分叉函数。

  Google的网络搜索引擎在得益于算法发挥作用的同时,MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背后的最具影响力的“发动机”。

MapReduce的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题,此时分布式计算优势就体现出来。将这种技术与Linux服务器结合可获得性价比极高的替代大规模计算阵列的方法。Yahoo在2006年看到了Hadoop未来的潜力,并邀请Hadoop创始人Doug Cutting着手发展Hadoop技术,在2008年Hadoop已经形成一定的规模。Hadoop项目再从初期发展的成熟的过程中同时吸纳了一些其他的组件,以便进一步提高自身的易用性和功能。

HDFS

  对于分布式计算,每个服务器必须具备对数据的访问能力,这就是HDFS(Hadoop Distributed File System)所起到的作用。 HDFS与MapReduce的结合是强大的。在处理大数据的过程中,当Hadoop集群中的服务器出现错误时,整个计算过程并不会终止。同时HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。HDFS对存储的数据格式并无苛刻的要求,数据可以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。 开发人员编写代码责任是使数据有意义。Hadoop MapReduce级的编程利用Java APIs,并可手动加载数据文件到HDFS之中。

Pig和Hive

  对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案:Pig和Hive,使得Hadoop编程变得更加容易。

Pig:是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

Hive:在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(hive superimposes structure on data in HDFS),并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。

Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此,Pig仍然吸引了大量的软件开发人员。

HBase、Sqoop以及Flume

  Hadoop核心还是一套批处理系统,数据加载进HDFS、处理然后检索。对于计算这或多或少有些倒退,但通常互动和随机存取数据是有必要的。HBase作为面向列的数据库运行在HDFS之上。HBase以Google BigTable为蓝本。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。HBase利用MapReduce来处理内部的海量数据。同时Hive和Pig都可以与HBase组合使用,Hive和Pig还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变得非常简单。

但为了授权随机存储数据,HBase也做出了一些限制:例如Hive与HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同时HBase大约可存储PB级的数据,与之相比HDFS的容量限制达到30PB。HBase不适合用于ad-hoc分析,HBase更适合整合大数据作为大型应用的一部分,包括日志、计算以及时间序列数据。

Sqoop和Flume可改进数据的互操作性和其余部分。Sqoop功能主要是从关系数据库导入数据到Hadoop,并可直接导入到HFDS或Hive。而Flume设计旨在直接将流数据或日志数据导入HDFS。

ZooKeeper和Oozie

  随着越来越多的项目加入Hadoop大家庭并成为集群系统运作的一部分,大数据处理系统需要负责协调工作的的成员。随着计算节点的增多,集群成员需要彼此同步并了解去哪里访问服务和如何配置,ZooKeeper正是为此而生的。

而在Hadoop执行的任务有时候需要将多个Map/Reduce作业连接到一起,它们之间或许彼此依赖。Oozie组件提供管理工作流程和依赖的功能,并无需开发人员编写定制的解决方案。

Ambari是最新加入Hadoop的项目,Ambari项目旨在将监控和管理等核心功能加入Hadoop项目。Ambari可帮助系统管理员部署和配置Hadoop,升级集群以及监控服务。还可通过API集成与其他的系统管理工具。

Mahout

  各类组织需求的不同导致相关的数据形形色色,对这些数据的分析也需要多样化的方法。Mahout提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括集群、分类、推荐过滤、频繁子项挖掘。

通常情况下,Hadoop应用于分布式环境。就像之前Linux的状况一样,厂商集成和测试Apache Hadoop生态系统的组件,并添加自己的工具和管理功能。

HDFS一一  Hadoop分布式文件系统,GFS的Java开源实现,运行于大型商用机器集群,可实现分布式存储。
MapReduce一一  一种并行计算框架,Google MapReduce模型的Java开源实现,基于其写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理T级别及以上的数据集。

Zookeepe一一  一分布式协调系统,Google Chubby的Java开源实现,是高可用的和可靠的分布式协同(coordination)系统,提供分布式锁之类的基本服务,用于构建分布式应用。

Hbase一一 基于Hadoop的分布式数据库,Google BigTable的开源实现,是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储到各个计算节点上。
Hive一一 是为提供简单的数据操作而设计的分布式数据仓库,它提供了简单的类似SQL语法的HiveQL语言进行数据查询。
Cloudbase一一  基于Hadoop的数据仓库,支持标准的SQL语法进行数据查询。
Pig一一   大数据流处理系统。建立于Hadoop之上为并行计算环境提供了一套数据工作流语言和执行框架。
Mahout一一    基于HadoopMapReduce的大规模数据挖掘与机器学习算法库。
Oozie一一    MapReduce工作流管理系统。

Sqoop—一    数据转移系统,是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库中的数据导入Hadoop的HDFS中、也可以将HDFS的数据导入关系型数据库中。
Flume一一  一个可用的、可靠的、分布式的海量日志采集、聚合和传输系统。
Scribe一一  Facebook开源的日志收集聚合框架系统。

              

转载于:https://www.cnblogs.com/wangsongbai/p/9115425.html

Hadoop概念学习系列之Hadoop 生态系统相关推荐

  1. Hadoop概念学习系列之Hadoop HA进一步深入(二十八)

    对于Hadoop里的HA,有hdfs HA和resourcemanger HA之分. 1.hdfs HA 为什么引入federation? 因为,这样能达到允许在一个集群里,有多对namenode.通 ...

  2. Hadoop概念学习系列之Hadoop 是什么?(一)

    Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和(Google MapRedu ...

  3. Hadoop学习系列之Hadoop、Spark学习路线(很值得推荐)

    Hadoop学习系列之Hadoop.Spark学习路线(很值得推荐) 文章出自:http://www.cnblogs.com/zlslch/p/5448857.html 1 Java基础: 视频方面: ...

  4. Hadoop概念学习系列之谈谈RPC(三十三)

    不多说,直接上干货! RPC-------->远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在,如TCP或UDP,为 ...

  5. Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构

    精选30+云产品,助力企业轻松上云!>>> Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背 ...

  6. Hadoop概念学习系列之为什么hadoop/spark执行作业时,输出路径必须要不存在?(三十九)...

    很多人只会,但没深入体会和想为什么要这样? 拿Hadoop来说,当然,spark也一样的道理. 输出路径由Hadoop自己创建,实际的结果文件遵守part-nnnn的约定. 如何指定一个已有目录作为H ...

  7. Hadoop概念学习系列之Java调用Shell命令和脚本,致力于hadoop/spark集群(三十六)...

    第一种:普通做法 首先,编号写WordCount.scala程序.  然后,打成jar包,命名为WC.jar.比如,我这里,是导出到windows桌面.  其次,上传到linux的桌面,再移动到hdf ...

  8. 大数据Hadoop学习系列之Hadoop、Spark学习路线

    1 Java基础: 视频方面:推荐毕老师<毕向东JAVA基础视频教程>. 学习hadoop不需要过度的深入,java学习到javase,在多线程和并行化多多理解实践即可. 书籍方面:推荐李 ...

  9. Hadoop学习系列之Hadoop、Spark学习路线

    1 Java基础: 视频方面:推荐毕老师<毕向东JAVA基础视频教程>. 学习hadoop不需要过度的深入,java学习到javase,在多线程和并行化多多理解实践即可. 书籍方面:推荐李 ...

最新文章

  1. 话AI、学实践、探未来,亚马逊云科技AI在线大会报名开启!
  2. oracle sql 导入mysql数据库备份_Oracle 备份、导入数据库命令
  3. k8s nginx ingress配置TLS
  4. dom4j解析xml实例(2)
  5. 国内常见的电子地图坐标介绍
  6. 【LeetCode笔记】621. 任务调度器(Java、桶)
  7. 禁止按钮在一定时间内连续点击
  8. 利用Windows 2003系统中实现两个网段的路由
  9. LNode *和LinkList的小区分
  10. 微信支付 APP端 第三弹 申请退款
  11. CSS漂亮盒子(下)
  12. 解决surface的幽灵触控
  13. 吴恩达机器学习MATLAB代码笔记(1)梯度下降
  14. 1018 锤子剪刀布python3无超时
  15. Siemens CXV65+Photoshop CS2
  16. php创建网址打不开,php网站无法打开怎么办
  17. 计算机里面看不到桌面是什么原因,电脑桌面图标都没了是什么情况?电脑桌面图标都没了解决方法...
  18. 注册短信验证码防刷设计方案
  19. 一步步教你如何打造一个网站克隆工具仿站
  20. 大数据与人工智能的关系,不少于500字

热门文章

  1. java调用url505_JAVA中三种URL连接方法
  2. linux 信号量semget,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  3. php集成jpush教程,Laravel 集成 JPush 极光推送指北
  4. mysql 账户管理_Mysql账户管理_MySQL
  5. html 三级目录索引,墨涩网 - HTTP Web服务器索引目录列表程序Directory Lister——墨涩网...
  6. Centos 利用yum源安装 nginx stream模块
  7. IOS下,javascript字符串转日期类型错误
  8. linux:rsync命令
  9. nas php.ini,php.ini 配置文件常用详解
  10. python根据文件名获取文件路径_python 查看文件名和文件路径