Java转大数据之路--Hadoop学习笔记之Hadoop简介

1.Hadoop是什么?

官方介绍

The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.

蹩脚翻译如下:
Apache Hadoop是一个用来开发可靠的、可扩展的、支持分布式计算的开源软件的工程。
Apache Hadoop软件库是一个框架,它可以让用户使用简单的编程模型来处理跨计算机集群的大型分布式数据集。Hadoop可以从一台机器扩展到几千台,每一台都各自提供本地计算和存储。Hadoop的高可用不依赖于计算器硬件本身,每台计算机都很容易出现故障,Hadoop通过检测和处理应用程序层的故障来保证计算机集群的高可用。

百度百科介绍

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。它可以让用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

2.Hadoop的发展历程

有关Hadoop的发展历程,摘选一段Hadoop之父Doug Cutting在《Hadoop权威指南》中序言:

Hadoop起源于Nutch项目。我们几个人有一段时间一直在尝试构建一个开源的Web搜索引擎,但始终无法有效地将计算任务分配到多台计算机上。直到谷歌发表GFS和MapReduce的相关论文之后,我们的思路才清晰起来。他们设计的系统可以精准地解决我们在Nutch项目中面临的困境。于是,我们(两个半天工作制的人)开始尝试重建这些系统,并将其作为Nutch的一部分。

我们终于让Nutch可以在20台机器上平稳运行,但很快又意识到:要想应对大规模的Web数据计算,还必须得让Nutch能在几千台机器上运行,不过这个工作远远不是两个半天工作制的开发人员能够搞定的。

差不多就在那个时候,雅虎也对这项技术产生了浓厚的兴趣并迅速组建了一个开发团队。我有幸成为其中一员。我们剥离出Nutch的分布式计算模块,将其称为“Hadoop”。在雅虎的帮助下,Hadoop很快就能够真正处理海量的Web数据了。

Hadoop发展到今天已经不仅仅是一个以MapReduce和HDFS为核心的工程了。广义上来讲,现在的Hadoop是一个包含众多项目的生态圈。
在这里插入图片描述

Hadoop出现了很多版本

  • Apache Hadoop
    官方版本,目前最新为3.1.1
  • Cloudera hadoop(CDH)
    使用下载最多的版本,稳定,有商业支持(收费),在Apache的基础上打上了一些patch
  • HortonWorks(HDP)
    基于Apache的版本进行了集成,结合Ambari可以实现平台化快速安装部署。

Hadoop版本选择

截止2019年01月05日,Hadoop已经发展到第三代,版本号为3.1.1。三代对二代做了兼容并且支持java8。Hadoop的管本管理非常混乱,新手很容易苦恼到底该选择哪个版本。下面列出几个传送门供大家参考。

本博客,使用最新的Hadoop 3.1.1版本。

更多参考:

3.Hadoop核心组件

注:这里的Hadoop是狭义上的,不是广义上的Hadoop生态圈。

  • HDFS:Hadoop Distributed File System 分布式存储框架,适合海量数据存储
  • YARN:Yet Another Resource Negotiator 资源管理调度系统,负责给计算框架分配计算资源
  • MapReduce:分布式运算框架,适合海量数据计算
    在这里插入图片描述

3.1 HDFS

主从结构
主节点,最多可以有2个:namenode
从节点,有多个:datanode
namenode负责
接收用户操作请求,是用户操作的入口
维护文件系统的目录结构,称作命名空间
datanode负责
存储数据

3.2YARN

主从结构
主节点,最多可以有2个:ResourceManager
从节点,有很多个: NodeManager
ResourceManager负责
集群资源的分配与调度
MapReduce、Storm、Spark、Flink等应用,必须实现ApplicationMaster接口,才能被RM管理
NodeManager负责
单节点资源的管理

3.3MapReduce

mapreduce是一个编程模型,它是分布式运行的,由两个阶段组成:Map和Reduce
Map阶段是一个独立的程序,有很多个节点同时运行,每个节点处理一部分数据。
Reduce阶段也是一个独立的程序,在这先把reduce理解为一个单独的聚合程序即可。

4.Hadoop的特点

  • 扩容能力(Scalable):能可靠(reliably)地存储和处理PB级别的数据。如果数据量更大,存储不下了,再增加节点就可以了。
  • 成本低(Economical):可以通过普通机器组成的服务器集群来分发以及处理数据.这些服务器集群可达数千个节点。
  • 高效率(Efficient):通过分发计算程序,hadoop可以在数据所在节点上(本地)并行地(parallel)处理他们,这使得处理非常的迅速
  • 可靠性(Reliable):hadoop能够自动地维护数据的多份副本,并且在任务失败后能够自动地重新部署(redeploy)计算任务.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值