Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍

Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍介绍hadoop的体系,对hadoop庞大的生态圈进行了介绍,并标出了学习的优先级。简单明了的介绍,看了不晕

大家好,又见面了,我是你们的朋友全栈君。

原帖地址:http://blog.csdn.net/nsrainbow/article/details/36396007

本教程适用人群

如果你是以下的几类人中的一种
  • 老板叫我搭建一个hadoop集群,但是我还什么都不懂,网上的教程概念介绍的好多,我看的头晕,咋办?
  • 我想学hadoop但是我是个完全不懂的小白,hadoop有这么多的东西,我究竟要学那些算是能学会hadoop?
那么你就是本教程的适用人群!看完这个教程你不会成为一只Hadoop大象,但是你可以成为一只小象,至少你已经知道Hadoop长什么样子,有几条腿了,可以再学习很多进阶的教程了。

本教程的特点

  • 不要求你有很多台机器,你的最低要求就是有2台虚拟机搭建出来的centos机器,这样你在家也可以学习hadoop,而不是必须要在实验室或者公司
  • 不会介绍很多的概念,直接采用一个个的实践例子让你自己感受hadoop,如果需要了解具体的概念和参数,请继续学习每个教程后面的参考资料
  • 前21课介绍了高优先级组件,属于课程的主体部分,学完了21课就算完成了课程了,真正成为一只小象了。21课之后的低优先级组件我就看心情更新了,毕竟没那么多时间
OK,现在开始!

hadoop核心

Apache Hadoop 项目有两个核心组件,被称为 Hadoop 分布式文件系统 (Hadoop Distributed File System, HDFS) 的文件存储,以及被称为 MapReduce 的编程框架。有一些支持项目充分利用了 HDFS 和 MapReduce。 

支持商

Hadoop有两个主要支持商HortonWorks
Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍(代表社区)和 Cloudera
Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍 (代表商业), HortonWorks发布的安装包叫 Ambari , Cloudera发布的安装包叫 CDH (截至本文发布最新为CDH5)。其实还有一个MapR因为用的人不多,我就不介绍了 

选择建议:

我也不知道选什么好,因为我只用过cdh的版本,只是因为他看起来更商业化,可能会更稳定吧,不过cdh的官方文档都是英文而且写的很杂乱。如果你找不到什么cdh的资料可以看下我博客里面关于hadoop的文章,这些都是是我在cdh官方文档的基础上翻译和改进的

生态圈

下面介绍下Hadoop庞大的开源生态圈的一些组件(主要还是以CDH5官方安装教程有提到的为主)。由于条目众多,我会列出学习的优先级:高,低。优先级低的只需要了解就好了,基本工作中都可能不会用到。所以大家一上手的时候只需要高这个级别的就好了,低的等闲的没事干的时候去看下。

HDFS []

hadoop做出了一个虚拟文件系统,在这个系统上你以为你创建了一个文件,其实这个文件有可能被同时存放在很多台机子上,这样就让你的系统表面上看起来是一个空间,实际上是很多服务器的磁盘构成的,这就是分布式操作系统

对应课程

YARN (MapReduce2.0) []

这是一个面向 Hadoop 的编程模型。有两个阶段,它们分别被称为 Map 和 Reduce。在分布式系统上进行计算操作基本都是由这两个概念步骤组成的,因为分布式系统,并不像一般的数据库或者文件系统,不能从上至下,或者从第一条开始进行求和等操作,就需要一种由分散的节点不断向一个点聚拢的计算过程。

对应课程

HBase [

HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。HBase 跟 MongoDB也是目前市面上NoSQL数据库的两个首选项目

对应课程


ZooKeeper []

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。提供中央的控制信息和同步。通常为Hbase提供节点见的协调。看起来很抽象,简单的说没有zookeeper就无法部署HDFS的HA模式,只要是生产环境的部署肯定离不开zookeeper。所以一开始也不用太懂zookeeper,只要会用就行。

对应课程


Hive []

你可以在Hive里面建立表,通过表映射实际存储的hadoop文件,然后写sql去查询数据。Hive会把你输入的sql语句转化为mapreduce 任务去查询hadoop。但是速度非常慢,每次查询大概需要几分钟,所以hive主要是用于统计分析用的,并且支持的sql语法非常有限。但是毕竟写sql比些mapreduce任务简单多了。

对应课程

Sqoop []

Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递。

对应课程

Impala []

Cloudera发布了实时查询开源项目Impala 1.0 beta版,称比原来基于MapReduce的Hive SQL查询速度提升3~90倍(详情可以参考此文中的“How much faster are Impala queries than Hive ones, really?”部分),而且更加灵活易用。Impala是高角羚的意思,这种羚羊主要分布在东非。多款产品实测表明,Impala比原来基于MapReduce的Hive SQL查询速度提升3~90倍。Impala是Google Dremel的模仿,但在SQL功能上青出于蓝胜于蓝。

对应课程

pig []

pig是hadoop上层的衍生架构,与hive类似。对比hive(hive类似sql,是一种声明式的语言),pig是一种过程语言,类似于存储过程一步一步得进行数据转化。感觉跟hive 类似是不是?网上有人总结了他们的区别:Pig用来写一些即时脚本吧,比如领导问你要份数据,半个小时要出来之类;Hive嘛,就是一个产品经理过来,问这个啥回事?于是你Hive一下,一个简洁的类SQL语句

对应课程

Spark []

Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。Apache Spark现在名声大噪。为支持Spark项目成立的 Databricks公司 从Andereessen Horowittz那里募集了1400万美元,Cloudera也已决定全力支持Spark

对应课程

HttpFs[]

HttpFs 其实也是HDFS的组件之一只是默认是没有安装的,有了HttpFs可以方便的在网页上操作hdfs的文件系统,并且HttpFs提供了一套REST风格的API可以用程序对hdfs的文件进行操作


Hue []

HUE是一个很漂亮的web客户端,你可以在hue上调用和管理hadoop的各个组件,比如查看/编辑Hbase表的数据,查看/编辑Hive数据表,执行sql等作业

对应课程


Oozie []

Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Pig 任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat

对应课程


Phoenix[]

Phoenix是Apache的顶级项目。Phoenix在Hbase上构建了一层关系型数据库。可以用SQL来查询Hbase数据库,并且速度比Impala更快。还支持很多丰富的特性,最有名的便是它的二级索引。Phoenix借鉴了很多关系型数据库优化查询的方法,将这些方法用在Hbase上,让Hbase更方便使用。

对应课程

Flume[]

日志收集组件,通过在服务器上安装agent来收集服务器的日志,而且可以把多个flume串联起来,实现日志的转换,处理和集中。其实这个组件并不完全算是hadoop生态圈里面的东西,但是由于hadoop集群机器众多,日志数量巨大,可以说hadoop自己生成的日志就是海量数据,所以怎样合理的收集日志和对日志进行查询就成为了一个hadoop领域的一个必须解决的问题。所以flume也被列为hadoop生态圈的一份子

Sentry []

提供细粒度基于角色的安全控制

Flume [

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

Apache Crunch []

Apache Crunch(孵化器项目)是基于Google的FlumeJava库编写的Java库,用于创建MapReduce流水线。与其他用来创建MapReduce作业的高层工具(如Apache Hive、Apache Pig和Cascading等)类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库。而与其他工具不同的是,Crunch并不强制所有输入遵循同一数据类型。相反,Crunch使用了一种定制的类型系统,非常灵活,能够直接处理复杂数据类型,如时间序列、HDF5文件、Apache HBase表和序列化对象(像protocol buffer或Avro记录)等。

Crunch并不想阻止开发者以MapReduce方式思考,而是尝试使之简化。尽管MapReduce有诸多优点,但对很多问题而言,并非正确的抽象级别:大部分有意思的计算都是由多个MapReduce作业组成的,情况往往是这样——出于性能考虑,我们需要将逻辑上独立的操作(如数据过滤、数据投影和数据变换)组合为一个物理上的MapReduce作业

Llama []

让外部服务器从YARN获取资源的框架,另外Llama就是羊驼国内俗称草泥马

Mahout []

Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Apache Mahout项目已经发展到了它的第三个年头,目前已经有了三个公共发行版本。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。

Mahout 的创始人 Grant Ingersoll 介绍了机器学习的基本概念,并演示了如何使用 Mahout 来实现文档聚类、提出建议和组织内容。

Cloudera Search []

基于Solr的查询组件

Snappy []

Snappy 是一个 C++ 的用来压缩和解压缩的开发包,其目标不是最大限度压缩,而且不兼容其他压缩格式。Snappy 旨在提供高速压缩速度和合理的压缩率。Snappy 比 zlib 更快,但文件相对要大 20% 到 100%。在 64位模式的 Core i7 处理器上,可达每秒 250~500兆的压缩速度。

Whirr []

Apache Whirr是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr现今相对中立,当前支持Amazon EC2和Rackspace服务。一组为了运行云服务而设计的代码库,比如可以用来在AWS上部署ZooKeeper

Avro []

被IBM和Cloudera使用,用于数据串行化,也就是将数据转换为紧密的二进制格式(JSON)在Hadoop上存储和使用

以下的两个在CDH手册中并没有提到,但是在别的hadoop教程中经常被提到,顺带也介绍下

Fuse []

让 HDFS 系统看起来就像一个普通的文件系统,所以您可以对 HDFS 数据使用 ls、rm、cd 和其他命令。

Hadoop Streaming []

一个实用程序,在任何语言(C、Perl 和 Python、C++、Bash 等)中支持 MapReduce 代码。示例包括一个 Python 映射程序和一个 AWK 缩减程序。

Hadoop 架构图

本图显示了 Hadoop 架构


Alex 的 Hadoop 菜鸟教程: 第1课 hadoop体系介绍

HDFS(底层)位于商品硬件的集群之上。简单的机架式服务器,每台都配置 2 个十六核 CPU、6 到 12 个磁盘,以及 32G RAM。在一个 map-reduce 作业中,Map层以极高的速度从磁盘读取。Map向Reduce发出已进行排序和提供的键值对,然后,Reduce层汇总键值对。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129990.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 个人嵌入式学习总结

    个人嵌入式学习总结个人认为,嵌入式学习主要经过以下几个阶段,1. 嵌入式linux的移植;主要包括u-boot源码的修改,kernel针对特定硬件平台的修改,系统硬体驱动的移植,根文件系统的制作;2. 系统电路设计;包括根据系统功能选择硬件资源,接口电路的设计;PCB电路图的设计与布线优化。3. linux驱

  • pycharm 修改镜像源_如何设置linux服务器镜像源

    pycharm 修改镜像源_如何设置linux服务器镜像源由于国外的镜像源安装Python速度较慢,选择国内的镜像速度较快,这篇文章如要讲述如何设置国内镜像源。常用镜像源:清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/方法一:…

  • 优秀的app交互界面设计_界面交互设计是什么

    优秀的app交互界面设计_界面交互设计是什么食品O2OAPP界面,这种色调是让人很有食欲,很温暖的感觉音乐APP设计界面阅读APP界面–简洁大方,阅览读书就是要这种感觉一款生活服务类的APP,集合了生活的所有服务(家政保洁,衣物干洗,开锁换锁

  • [时间序列分析][4]–AR模型,MA模型,ARMA模型介绍[通俗易懂]

    [时间序列分析][4]–AR模型,MA模型,ARMA模型介绍[通俗易懂]自相关和偏自相关的两个函数代码由于后面会经常画一组序列自相关和偏自相关的图像,所以就把自己写的这个两个画图的函数的代码贴上,供大家参考。首先是自相关的函数输入的三个参数分别是{数据,滞后数,置信度

  • phpstorm 2021 3月份 激活码破解方法

    phpstorm 2021 3月份 激活码破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 20行Python代码开发植物识别 app「建议收藏」

    20行Python代码开发植物识别 app「建议收藏」这篇文章介绍如何用Python快速实现一个植物识别的app,家里养了几盆多肉还叫不上名字,正好拿来识别一下。实现这样一个app只需要20行左右的代码,先来看下效果:另外,我也开发了微信小程序版本,大

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号