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 FileSystem,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入门介绍相关推荐

  1. Hadoop入门介绍

    Hadoop入门介绍 Hadoop背景介绍 发展钱途 什么是Hadoop Hadoop产生背景 Hadoop生态圈 国内应用 用户画像 HADOOP用于网站点击流日志数据挖掘 大屏展示 离线数据分析 ...

  2. 第五十九课 Hadoop入门介绍

    Hadoop入门 Hadoop入门 Hadoop 2.0介绍 转载于:https://blog.51cto.com/liwenjia/1881373

  3. hadoop入门介绍(一)

    hadoop是什么?(一) hadoop发展史 (二) Hadoop三大发行版本(三) Hadoop三大发行版本:Apache.Cloudera.Hortonworks. Apache版本最原始(最基 ...

  4. hadoop 入门介绍(大数据介绍)

    大数据概论 .1 大数据概念 主要解决,海量存储和海量数据的分析计算问题. 2 大数据特点 1>Volume(大量) 2>Velocity(高速) 3>Variety(多样) 4&g ...

  5. 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍

    Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...

  6. 大数据介绍、集群环境搭建、Hadoop介绍、HDFS入门介绍

    大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 文章目录 大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 1.课前资料 2.课程整体介绍 3.大数据介绍 3.1 什么是大数 ...

  7. 细细品味大数据--初识hadoop

    初识hadoop 前言 之前在学校的时候一直就想学习大数据方面的技术,包括hadoop和机器学习啊什么的,但是归根结底就是因为自己太懒了,导致没有坚持多长时间,加上一直为offer做准备,所以当时重心 ...

  8. Hadoop新手篇:hadoop入门基础教程

    Hadoop新手篇:hadoop入门基础教程 关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧.最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环 ...

  9. 一.hadoop入门须知

    目录: 1.hadoop入门须知 2.hadoop环境搭建 3.hadoop mapreduce之WordCount例子 4.idea本地调试hadoop程序 5.hadoop 从mysql中读取数据 ...

  10. Hadoop新手篇:hadoop入门基础教程 1

    Hadoop新手篇:hadoop入门基础教程 关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧.最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环 ...

最新文章

  1. 德国版“非升即走”引发学界震荡!“临时工”干12年也难获教职,网友:全世界都在卷...
  2. 如何快速清空 Linux 中的大文件
  3. eclipse配置maven及查看对应maven配置文件settings.xml的地方
  4. 纯Shading Language绘制飞机火焰效果
  5. Python 操作数据库(1)
  6. 关于.Net2.0下配置架构的使用
  7. SpringBoot2.1.5 (24): @SpringBootTest单元测试
  8. 【Unity开源项目精选】AssetStudio:提取Unity游戏的资源
  9. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?
  10. 清北大学计算机专业学习清单,好专业都在清北交复?快来看看这份院校清单,拥有着全国排名【NO.1】的专业...
  11. centos 虚拟机 使用串口_vmware中的centos怎样扩充空间
  12. Ember.js中文介绍
  13. C/C++之回调函数
  14. 1、Java开发环境搭建(eclipse版)
  15. OPPO设备设置第三方桌面为默认Launcher
  16. 【Web】lighttpd基础
  17. Kotlin中问号 ? 和两个叹号 !! 的含义
  18. 多变量微分方程组带事件控制的ODE45函数写法
  19. JavaSE_面向对象练习_图书管理系统
  20. 典型ASIC设计流程

热门文章

  1. QTP简单框架(1)之框架简介
  2. 深度学习之GAN对抗神经网络
  3. which one clone BMW key programmer is the best
  4. 测试工程师必备Linux知识点
  5. Java Synchronized的用法
  6. 猪猪的机器学习笔记(十五)主题模型
  7. jquery在IE8上使用find的问题
  8. 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
  9. Effective C# Item47:选择安全代码
  10. 新概念英语(1-95)Tickets,please!