《深入理解Hadoop(原书第2版)》——第2章 Hadoop中的概念 2.1 Hadoop简介

简介:

本节书摘来自华章计算机《深入理解Hadoop(原书第2版)》一书中的第2章,第2.1节,作者 [美]萨米尔·瓦德卡(Sameer Wadkar),马杜·西德林埃(Madhu Siddalingaiah),杰森·文纳(Jason Venner),译 于博,冯傲风,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第2章

Hadoop中的概念

价格实惠的普通计算机经常满足不了应用程序的计算资源需求,很多企业的业务应用程序已经不再适合在单台廉价的计算机上运行。这时,一个简单昂贵的解决方案就是购买一些具有多CPU的高端服务器,这通常需要巨额资金。只要能买到最高端的服务器,这个解决方案就能够达到理想的效果,但预算往往是个大问题。另一个替代方案,就是搭建一个高可用的集群,这个集群经过专业的安装和精心的管理服务,使用起来就像一台计算机一样。很多高可用的集群都是企业专有的而且价格也十分贵。

为了获取所需的计算资源,一个更经济实惠的解决方案是云计算。面对大数据量的处理需求,一个常用的方法就是把它们分割成互不依赖的小份数据来分别计算处理,这就是所谓的单指令多数据流(single-instruation, multiple-data, SIMD)的数据计算模式。Hadoop为这样的云计算需求提供了一套开源的计算框架和一套分布式文件系统。

本书是一本利用Hadoop进行开发工作的实用指南。Hadoop项目由Apache Software Foundation来负责管理。本章会为大家讲解Hadoop的核心概念思想。为了后续章节更有效地学习,你需要安装并运行Hadoop。

2.1 Hadoop简介

Hadoop是以谷歌在2004年发表的一篇关于MapReduce的论文为基础开发的。Hadoop项目开始于2005年,那个时候,Hadoop项目是开源的网页搜索引擎Nutch项目下的一个子项目。后来,Hadoop从Nutch项目中分离出来,并最终成为了Apache基金会的顶级项目。

现在,MapReduce已经成为业内家喻户晓的Hadoop框架。同时,围绕Hadoop项目诞生了好几家公司来提供Hadoop系统的支持、咨询和培训。

就其自身来讲,Hadoop是一个基于Java语言的MapReduce框架。随着Hadoop平台被越来越多的企业采用,Hadoop需要加入对非Java语言的支持。下面列出了Hadoop的改进及其子项目,这些都促使Hadoop在企业中的应用越来越广:

  • Hadoop Streaming—任何命令行脚本都可以通过Streaming调用MapReduce框架。UNIX脚本程序员、Python程序员等都可以使用MapReduce来开发一些临时任务。
  • Hadoop Hive—使用MapReduce平台的用户发现,开发一个MapReduce程序往往需要大量的编码工作,而且易于出错且难于测试。这就需要一个更有效的类似SQL的语言,这样一来,用户就可以关注于业务问题而不必关心类似SQL命令功能的底层实现(比如WHERE子句、GROUP BY子句、JOIN子句等)。Apache Hive可以把海量数据集放入数据仓库中,用户可以编写类似SQL语句的Hive查询语句来查找数据。Hive引擎把Hive查询语句透明地转换为底层MapReduce任务来执行。高级用户可以使用Java语言来编写用户自定义函数(UDF)。Hive也支持标准的ODBC、JDBC数据库驱动。Hive还可以用来开发商业智能(Business Intelligence, BI)分析程序去处理分析存放在Hadoop中的数据。
  • Hadoop Pig—使用Pig的目的与使用Hive的目的是一样的,但是Hive是一个类SQL语言,属于陈述性的语言;而Pig是一种过程性语言,非常适合数据管道应用场景。Pig对数据处理管道程序的程序员非常有吸引力(比如,SAS程序员)。它也非常适合开发抽取、加载和传输(ETL)类型的程序。
  • Hadoop HBase—所有之前介绍的项目,包括MapReduce程序,都是批处理程序。现在有个强烈的需求就是在Hadoop中实时查询数据。Hadoop并不是一个原生的键/值存储系统。拿类似Facebook的社交网站做例子,如果你想查看一个朋友的用户资料,你希望能够立即得到结果(而不是经过一个长时间的批处理任务执行)。这样的场景用例就是开发HBase平台的目的所在。

我们刚刚粗略地介绍了Hadoop的由来和它的子项目。前面的例子也说明了Hadoop系统是因何发展而来。Hadoop系统最早是作为用于索引海量文本数据的MapReduce引擎而启动的项目。后来慢慢地发展成为一个通用的大数据处理模型。这个大数据模型可以支持标准的企业级用例,比如DW、BI、ELT或者实时缓存查询。MapReduce是一个非常有用的编程模型,它在前文刚刚提到的标准企业级用例(ETL、 DW)中得到了广泛应用,使其在大数据计算处理领域成为主流。同样重要的是,现在各个企业都在积极应对海量数据处理带来的挑战。

在很长的一段时间内,Hadoop系统只能做到用户提交任务后,以先进先出(FIFO)的模式在集群上执行任务。这样的话,一些运行耗时、重要性低的任务会占用大量的集群资源,而运行时间短、重要性高的任务迟迟无法运行。为了解决这样的问题,Hadoop中出现了更加复杂的任务调度器,比如公平调度器(Fair Scheduler)和计算能力调度器(Capacity Scheduler)。但是在Hadoop 1.x系列(版本号小于0.23)中,一些系统本身设计之初的决策导致了集群在可扩展性方面的限制。

Yahoo公司的工程师们发现,当Hadoop系统集群的计算节点数量达到数千台量级的时候,集群就会存在一些可扩展性问题(详细的情况请参见链接:http://developer.yahoo.com/blogs/hadoop/scaling-hadoop-4000-nodes-yahoo-410.html )。当人们对Hadoop系统的这些可扩展性问题越来越清晰之后,Hadoop的工程师们讨论思考,并重新评估了Hadoop系统原型设计中的一些基础假设。最终,Hadoop系统平台的核心架构被重新设计。由此,Hadoop 2.x(版本号大于0.23的Hadoop系统)诞生了。

本书在全面介绍Hadoop 2.x的同时,也会适当地提到Hadoop 1.x。这样你会深刻地理解Hadoop 2.x发生这些变化的原因。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
消息中间件 分布式计算 大数据
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
【大数据技术Hadoop+Spark】Flume、Kafka的简介及安装(图文解释 超详细)
132 0
|
1月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
231 0
|
11天前
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
53 4
|
1月前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
173 2
|
23天前
|
存储 分布式计算 Hadoop
Hadoop节点数据块概念与功能
【5月更文挑战第21天】
32 1
|
25天前
|
存储 分布式计算 Hadoop
hadoop节点HDFS数据块基本概念
【5月更文挑战第19天】
29 1
|
1月前
|
存储 分布式计算 Hadoop
大数据存储技术(1)—— Hadoop简介及安装配置
大数据存储技术(1)—— Hadoop简介及安装配置
74 0
|
1月前
|
分布式计算 监控 Hadoop
Hadoop【基础知识 02】【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】Hadoop【基础知识 02】【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
164 0
|
1月前
|
存储 SQL 分布式计算
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
Hadoop(HDFS+MapReduce+Hive+数仓基础概念)学习笔记(自用)
328 0
|
1月前
|
存储 分布式计算 资源调度
干翻Hadoop系列文章【03】:MapReduce概念详解
干翻Hadoop系列文章【03】:MapReduce概念详解

相关实验场景

更多