Hadoop 基础知识

大数据已经火了很长很长时间了,从最开始是个公司都说自己公司的数据量很大,我们在搞大数据。到现在大数据真的已经非常成熟并且已经在逐渐的影响我们的生产生活。你可能听过支付宝的金融大数据,滴滴的出行大数据以及其他的诸如气象大数据等等,我们每个人都是数据的制造者,以后又将享受大数据技术所带来的生活的便利。

作为一个IT相关的从业人员,你肯定听过Hadoop,Spark了。毕竟技术在发展,现在大家上班下班地铁公交都交流啥,机器学习,人工智能,AI,搞大数据都不太敢说话。为啥,因为技术实在是发展太快了。。。有点跟不上节奏。但是现在大数据已经非常成熟了,而且是所谓的机器学习,人工智能的基础。所以,如果有想法赶紧学习学习吧。

大数据到底是啥?大数据是一个概念也是一门技术,它是在以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。大数据包括以HadoopSpark为代表的基础大数据框架,还包括实时数据处理,离线数据处理,数据分析,数据挖掘和用机器算法进行预测分析等技术。 说通俗点,就是大量数据进行 数据存储,数据清洗,数据分析,数据处理,数据应用 的技术就是大数据。

我曾拜读过云戒大神的全栈大数据一书,该书中简单概要的描述了互联网的发展,大数据是其中非常重要的一环。大家可以看下图哈。

由图片看到啊,互联网往小了发展是移动互联网,之前移动互联网多么火造就了多少独角兽公司就不用多介绍了吧。现在的物联网也是站在了风口之上,各种可穿戴设备层出不穷。互联网往大了发展呢,第一步是云计算。云计算相信大家都用过,阿里云,aws,虽然收费越来越贵但是确实解决了很多问题。然后就是大数据了。所以大数据还是顺应了技术发展的潮流,也不枉他在我们IT圈口口相传火了这么多年。所以大数据是一个很有钱途的方向。

我们在介绍大数据的定义的时候反复的提到了Hadoop框架,那么作为大数据的代表性技术框架,我们必须要学好,用好它。接下来,我们就来简单看一下Hadoop框架。

  1. Hadoop是一个开源的大数据框架

  2. Hadoop是一个分布式计算的解决方案

  3. Hadoop = HDFS(分布式存储服务) + MapReduce (分布式计算框架)

我们可以看出啊Hadoop包括两个核心,一个是HDFS一个是MapReduce。

问:假如你有一个10M的文件,你想过滤出含有Hadoop字符串的行,你会怎么做。

作为一个程序猿的你这时候就要秀一波操作了,你可能会用linux的grep命令。也可能去写几行代码搞一把。10M并不能让你感觉到绝望,那么10G呢,10T呢,甚至是10P呢。你会不会感觉到绝望?而Hadoop这两个核心就分别解决了上述的问题,HDFS解决了10T或者10P的数据存储的问题,MapReduce解决了分布式计算的问题,强强联手啊,能比较轻松的搞定令你感觉到绝望的问题。

HDFS

HDFS为什么是Hadoop的核心? 嗯,这个问题问得好。 因为存储是大数据的核心。 如果连数据存储都搞不定,你拿设么分析计算呢。要知道当我们入了大数据的门,我们接触的数据规模不局限于GB级了,我们可能会处理TB甚至是PB的数据,单机去存储几T的数据已经非常多了。如果是几PB的话单机是肯定搞不定的,所以HDFS帮你解决了这个问题。

我们都知道Hadoop的一大优点就是利用多个廉价的机器组成集群,HDFS就是将大量的数据存储到这成百上千的廉价的机器上,但是你访问的时候就跟使用本地文件一样的简单。比如你要访问一个/tmp/file1的文件,这个文件可能存储到了很多机器上。但是你是用户啊,用户就是上帝,你根本就不用管他怎么存的,存在哪。你只需要告诉HDFS你要这个文件就可以了。

对于HDFS啊,我这里只介绍三个重要的概念:数据块、NameNode、DataNode

数据块

如果我们对Hadoop有过了解的话我们都知道存储在HDFS上的数据都是按块存的。

数据块是什么?数据块是一个抽象的概念。

比如我们设置数据块的大小为128m,我们要存一个10m的文件,因为是按块存的 所以我们这个文件就独占了一个数据块。如果我们存储大小为300m的文件,那就会分成三个块进行存储。

那么按块存到底有什么好处呢, 首先 他屏蔽了文件这个概念,比如你存了一个200T的文件,这个文件大于你任意一个磁盘单个的大小,这种情况下你可以将整个文件分成n个数据块,然后存储到各个磁盘。这样就简化了存储系统的设计, 而且 我们知道为了保证数据安全我们肯定是要备份的, 而数据块它就非常适合用于数据备份,进而提供数据容错能力和可用性。

那么我们到底选择设置多大的数据块呢?数据块的默认大小是64M,一般我们会将他设置成128M。如果数据块的大小设置太小的话,那么对于一般的文件我们可能也需要按块进行存储了,这样的话当我们查询一个文件的时候就需要检索多个数据块的地址,这样效率不高,而且对NameNode的内存是一种极大的浪费。因为我们是通过NameNode去检索数据的,NameNode的内存中存储了数据块与文件和DataNode的映射,这个我们后面会提到。如果数据块设置太大的话,我们可能会遇到一些系统层面的问题,比如系统重启的时候需要重新加载数据,数据块越大恢复需要的时间越长。而且数据块过大对于并行的支持很差。 所以,一般我们都将其设置成128M。

NameNode 和 DataNode

我们都知道HDFS是分布式文件系统,既然是分布式那么一般是主从模式,那么谁是主,谁是从呢?NameNode就是主,而DataNode就是从。所以HDFS是由一个NameNode(Master)和多个DataNode(Slave)组成的。

NameNode 做了哪些工作
  1. 管理文件系统的NameSpace

  2. 维护着文件系统树以及文件树中所有的文件和文件夹的元数据(这些数据存储在内存中,也会持久化存储到磁盘)

  3. 记录着每个文件中各个块所在数据节点的位置信息,这些信息在DataNode启动的时候会发送给NameNode

DataNode 做了哪些工作
  1. DataNode是文件系统的工作节点

  2. 负责存储和检索数据,并且将他所存储的块的列表发送给NameNode

既然有主从模式我们都要考虑如果Master也就是NameNode挂掉了怎么办,Hadoop2之后呢我们可以配置两个NameNode,一个处于active状态,一台处于standby状态。这样如果处于active状态的NameNode挂掉了,另外一台可以快速无缝的接手后续的工作。很大的程度上避免了单点问题的存在。

通过我们上面对HDFS进行的介绍,我们来总结一下HDFS的优缺点:

优点:

  1. 适合大数据存储,并有副本策略
  2. 可以构建在廉价的机器上,提供容错和恢复机制
  3. 提供流式文件访问,一次性写入,多次读取

那对应这三个优点呢 自然就会发现他的三个缺点:

  1. 不适合大量小文件存储
  2. 不适合并发写入,文件随机修改等场景, 一个文件只能有一个writer 只支持append
  3. 不适合随机读等低延时数据访问的场景。 本来就不是为这种场景设计的。

所以说,用不用Hadoop这头神象还是要根据具体的场景,具体的需求来考虑。 在合适的需求下用合适的工具才能达到合适的效果!

(未完待续,下节是HDFS的读写流程)

Hadoop基础(一)的更多相关文章

  1. [转]《Hadoop基础教程》之初识Hadoop

    原文地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不 ...

  2. 《Hadoop基础教程》之初识Hadoop

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

  3. [转载] 《Hadoop基础教程》之初识Hadoop

    转载自http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用 ...

  4. hadoop基础教程免费分享

    提起Hadoop相信大家还是很陌生的,但大数据呢?大数据可是红遍每一个角落,大数据的到来为我们社会带来三方面变革:思维变革.商业变革.管理变革,各行业将大数据纳入企业日常配置已成必然之势.阿里巴巴创办 ...

  5. Hadoop基础-Hadoop的集群管理之服役和退役

    Hadoop基础-Hadoop的集群管理之服役和退役 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,如果是上千万规模的集群,难免一个一个月会有那么几台服务器出点故 ...

  6. Hadoop基础-镜像文件(fsimage)和编辑日志(edits)

    Hadoop基础-镜像文件(fsimage)和编辑日志(edits) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看日志镜像文件(如:fsimage_00000000000 ...

  7. 实训任务02:Hadoop基础操作

    实训任务02:Hadoop基础操作 班级            学号               姓名 实训1:创建测试文件上传HDFS,并显示内容 需求说明: 在本地计算机上创建测试文件helloH ...

  8. Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码

    Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...

  9. Hadoop基础-通过IO流操作HDFS

    Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...

  10. 指导手册03:Hadoop基础操作

    指导手册03:Hadoop基础操作 Part 1:查看Hadoop集群的基本信息1.查询存储系统信息(1)在WEB浏览器的地址栏输入http://master:50070/ 请查看自己的Hadoop集 ...

随机推荐

  1. Python基础(十一) 异常处理

    在程序运行过程中,总会遇到各种各样的错误,有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这样的错误我们通常称之为BUG,BUG是必须修复的.在Python中内置了一套异常处理机 ...

  2. java8的LocalDateTime真心好用(补充Period.between的大坑)

    LocalDateTime.LocalDate是java8新增的时间工具类,最近使用后,真心觉得强大好用,推荐文章:https://www.liaoxuefeng.com/article/001419 ...

  3. 【Codeforces 372A】Counting Kangaroos is Fun

    [链接] 我是链接,点我呀:) [题意] 如果a[i]*2<=a[j]那么i袋鼠可以装进j袋鼠里面 每只袋鼠都只能装一只袋鼠 [题解] 假设最后的方案是(ai,bi) 这里(ai,bi)表示下标 ...

  4. ansible plugins简介

    ansible插件是增强ansible的核心功能的代码片段,ansible使用插件架构来实现丰富,灵活和可扩展的功能集. Ansible提供了许多方便的插件,您可以轻松编写自己的插件. 下边简单介绍A ...

  5. pat甲级 1107. Social Clusters (30)

    When register on a social network, you are always asked to specify your hobbies in order to find som ...

  6. [luoguP2280] [HNOI2003]激光炸弹(DP)

    传送门 二位前缀和DP大水题 ——代码 #include <cstdio> #include <iostream> ; int n, r, ans; int sum[MAXN] ...

  7. 关于Git的简单使用

    新电脑git push一直出问题,到现在也没有解决,但是一些git的命令还是有用的,就先记下来吧.(下图就是没解决的报错) 一.上传本地项目到git 1.初始化git git init 2.配置用户名 ...

  8. 非常适合新手的jq/zepto源码分析05

    zepto的原型  $.fn  属性: constructor //构造行数 forEach: emptyArray.forEach, //都是原生数组的函数reduce: emptyArray.re ...

  9. fast recovery area

    First of all, the version of my enviroment is Oracle 11.0.2.3. The fast recovery area used to be cal ...

  10. dbms_metadata.get_ddl的用法

    --GET_DDL: Return the metadata for a single object as DDL. -- This interface is meant for casual bro ...