文档章节

《Hadoop基础教程》之初识Hadoop

Carl_
 Carl_
发布于 2015/05/08 11:32
字数 1522
阅读 38
收藏 0
点赞 0
评论 0

Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身。

         《Hadoop基础教程》是我读的第一本Hadoop书籍,当然在线只能试读第一章,不过对Hadoop历史、核心技术和应用场景有了初步了解。

 

  • Hadoop历史

        雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。

        随后在2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。

        2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为NDFS。

        2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。

        2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。

        2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。

        不得不说Google和Yahoo对Hadoop的贡献功不可没。

 

  • Hadoop核心

        Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的。要想了解Hadoop,就必须知道HDFS和MapReduce是什么。

 

  • HDFS

HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。

 

HDFS的设计特点是:

1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了。

2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。

3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。

4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

 

HDFS的关键元素:

Block:将一个文件进行分块,通常是64M。

NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode。

DataNode:分布在廉价的计算机上,用于存储Block块文件。


 

 

  • MapReduce

通俗说MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。

 

下面以一个计算海量数据最大值为例:一个银行有上亿储户,银行希望找到存储金额最高的金额是多少,按照传统的计算方式,我们会这样:

Java代码  收藏代码

  1. Long moneys[] ...  

  2. Long max = 0L;  

  3. for(int i=0;i<moneys.length;i++){  

  4.   if(moneys[i]>max){  

  5.     max = moneys[i];  

  6.   }  

  7. }  

 

 如果计算的数组长度少的话,这样实现是不会有问题的,还是面对海量数据的时候就会有问题。

MapReduce会这样做:首先数字是分布存储在不同块中的,以某几个块为一个Map,计算出Map中最大的值,然后将每个Map中的最大值做Reduce操作,Reduce再取最大值给用户。


        MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。

 

 

  • 总结

        总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量。

        Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。

        但要知道,Hadoop的使用范围远小于SQL或Python之类的脚本语言,所以不要盲目使用Hadoop,看完这篇试读文章,我知道Hadoop不适用于我们的项目。不过Hadoop作为大数据的热门词,我觉得一个狂热的编程爱好者值得去学习了解,或许你下一个归宿就需要Hadoop人才,不是吗。


本文转载自:http://blessht.iteye.com/blog/2095675

共有 人打赏支持
Carl_
粉丝 39
博文 387
码字总数 12168
作品 0
广州
2016 | 大数据平台类产品资讯汇总

InfoSphere Streams 平台支持流数据的实时处理,支持不断更新持续查询的结果,可在移动的数据流中检测洞察。 InfoSphere Streams——实时大数据分析平台 Streams V4.2新特性:支持使用 Pyth...

勿忘初心321
2016/11/25
4
0
收藏 | 100+篇大数据学习资讯,带你玩转大数据分析!

深度解析如何挑选适合自己的Hadoop平台 什么是Hadoop,怎样学习Hadoop 分布式文件系统HDFS解析 Hadoop开发人员基础课程之初识MapReduce HBase基础知识,面向列的实时分布式数据库 完全分布式...

勿忘初心321
2016/11/22
10
0
Hadoop 之初识Hadoop

Hadoop历史 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 随后在2003年Google发表了一篇...

李超
2015/04/02
0
0
大数据怎样才能踏入进去?年薪60万大数据架构师教你如何入门!

1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用Linux,熟练安装Linux上的软件,了解熟悉负载均衡、高可靠等集群相关概念,搭建互联网高并发、高可靠的服务架构; 学完此...

董黎明
06/09
0
0
Hadoop项目实战-用户行为分析之应用概述(三)

1.概述   本课程的视频教程地址:《项目工程准备》   本节给大家分享的主题如下图所示:   下面我开始为大家分享今天的第三节的内容——《项目工程准备》,接下来开始分享今天的内容。...

smartloli
2015/06/11
0
0
15种最佳方式帮你顺利掌握Hadoop技术

在探讨今天的主题——如何利用各类资源学习Hadoop知识——之前,让我们首先搞清楚另一个问题:大数据Hadoop到底是什么?简单来讲,Hadoop是一套用于实现大数据技术的框架方案。为了顺利掌握H...

天天顺利
2015/08/14
0
0
零基础学习hadoop到上手工作线路指导(编程篇)

问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如何编译hadoop源码? ...

一枚Sir
2014/08/07
787
0
一张图片看懂hadoop生态圈

好多朋友觉得,通过扁平的文章了解hadoop生态圈不是很直观。 所以我抽时间,把hadoop生态圈中的各部分通过架构图的形式,直观的整理了出来, 方便对hadoop不了解的朋友更直观的了解hadoop。 ...

I加加
2017/03/31
0
0
想当程序员?从这里入门吧!

想当程序员? 没找到合适的入门教程? 实验楼上有啊,各技术入门教程~ 【C 语言入门教程】 C语言,不用多介绍,大多数人的入门语言;除了入门教程,还有很多实战项目教程呢,学完基础直接动手...

实验楼
2017/11/21
0
0
[Hadoop大数据]——Hive初识

Hive出现的背景 Hadoop提供了大数据的通用解决方案,比如存储提供了Hdfs,计算提供了MapReduce思想。但是想要写出MapReduce算法还是比较繁琐的,对于开发者来说,需要了解底层的hadoop api。...

青夜之衫
2017/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaEE——JavaScript

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 JavaScript 内置对象 String对象方法: date对象...

凯哥学堂
11分钟前
0
0
Git 远程代码回滚master

方式一(推荐): git revert commit-id 方式二(不推荐):不推荐原因:推送到线上后,其它开发人员需要重新clone git reset --hard commit-id git push origin HEAD --force...

浮躁的码农
11分钟前
0
0
Elasticesearch学习(7)—— ES查询与Java API的对应关系

1、普通查询 类型 ES查询语句 Java查询实现 结果 查询格式 { "query": { "bool": { "must": [], "must_not": [], "should": [], "filter": [] } }, "from": 0, "size": 10, "sort": [] } Que......

叶枫啦啦
12分钟前
15
0
getElementsByClassName()与getElementById()区别

1.document.getElementsByClassName() 返回的是数组 使用:document.getElementsByClassName("className")[0].innerText='具体内容' 2.document.getElementById() 返回的是单个元素 使用:d......

botkenni
22分钟前
0
0
MyBatis入门

一、安装 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency> 二、从 XML 中构建 SqlSessionFactory String r......

一个yuanbeth
23分钟前
0
0
聊聊spring cloud的LoadBalancerAutoConfiguration

序 本文主要研究一下spring cloud的LoadBalancerAutoConfiguration RibbonAutoConfiguration spring-cloud-netflix-ribbon-2.0.0.RC2-sources.jar!/org/springframework/cloud/netflix/ribb......

go4it
26分钟前
0
0
【转】使用Lombok来优雅的编码

前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。 正文 添加依赖 在 pom.xml 文件中添加相关依赖:...

HAVENT
28分钟前
0
0
Dubbo 源码解读 —— 可支持序列化及自定义扩展

一、概述 从源码中,我们可以看出来。目前,Dubbo 内部提供了 5 种序列化的方式,分别为 fastjson、Hessian2、Kryo、fst 及 Java原生支持的方式 。 针对不同的序列化方式,对比内容如下: 名...

Ryan-瑞恩
35分钟前
0
0
MySQL内存设置—— MySQL server has gone away

set global max_allowed_packet=268435456

一梦心草
45分钟前
0
0
推导式

列表、集合和字典推导式 列表推导式是Python最受喜爱的特性之一。它允许用户方便的从一个集合过滤元素,形成列表,在传递参数的过程中还可以修改元素。形式如下: [expr for val in collect...

火力全開
50分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部