大数据小白系列——HDFS(1)

【注1:结尾有大福利!】
【注2:想写一个大数据小白系列,介绍大数据生态系统中的主要成员,理解其原理,明白其用途,万一有用呢,对不对。】
大数据是什么?抛开那些高大上但笼统的说法,其实大数据说的是两件事:一、怎么存储大数据,二、怎么计算大数据。
我们先从存储开始说,如果清晨起床,你的女仆给你呈上一块牛排,牛排太大,一口吃不了,怎么办?拿刀切小。
同样的,如果一份数据太大,一台机器存不了,怎么办?切小了,存到几台机器上。
想要保存海量数据,无限地提高单台机器的存储能力显然是不现实,就好比我们不能把一栋楼盖得无限高一样(通常这也不是经济的做法),增加机器数量是相对可持续的方案。
使用多台机器,需要有配套的分布式存储系统把这些机器组织成一个整体,由于Hadoop几乎是目前大数据领域的事实标准,那么这里介绍的分布式存储系统就是HDFS(Hadoop Distributed Filesystem)。
先来介绍几个重要概念。
- 分片(shard)
就好比把牛排切成小块,对大的文件进行切分,显然是进行分布式存储的前提,例如,HDFS中默认将数据切分成128MB的块(block)。

- 副本(replica)
三台机器中,如果有一台出现故障,如何保证数据不丢失,那么就是使用冗余的方式,为每一个数据块都产生多个副本。

下面图示中,任何单独一个节点掉线,都不会造成数据丢失,仍然可以凑齐A、B、C三个数据块。

当然,如果两个节点同时掉线就不行了。

不过,如果每个数据块都有两个副本,那么可以承受同时损失两个节点。代价是,你的存储成本上升了。
- Master/Slave架构
只有工人而没有包工头的工地肯定不能正常运转,所以,除了上面3台负责存储的机器,还需要至少一台机器来领导它们,给它们分配工作,否则谁也没办法中的A、B、C具体应该存在哪个机器上。
HDFS中采用Master/Slave架构,其中的NameNode就是Master,负责管理工作,而DataNode就是Slave,负责存储具体的数据,NameNode上管理着元数据,简单的讲就是记录哪个数据块存储在哪台机器上。同时,DataNode也会定时向NameNode汇报自己的工作状态,以便后者监控节点状态、是否故障。

说完上面几个我觉得需要了解的基础概念,我们再把HDFS的读、写流程描述一下。
- 读取数据
读取数据的过程。在这个过程中,NameNode负责提供数据的存储位置,真正的数据读取操作发生在用户和DataNode之间。由于数据有副本,一份数据在多个节点上存在,具体NameNode返回哪个节点,遵循一定的原则(比如,就近原则)。

- 写入数据
写入数据的过程。和读取流程类似,NameNode负责提供数据的存储位置,真正的写入操作发生在用户和DataNode之间,而副本的制造,是在DataNode之间发生的,例如用户先把数据写入节点1,节点1再把数据复制到节点2等。

这篇文章就先到这里,下一篇准备接受HDFS中的单点问题、HA、Federation等概念。
最后,福利来了,关注公众号“程序员杂书馆”,将免费送出大数据经典书籍《Spark快速大数据分析》,没错,就是下面这本,纸质书哦,不是什么乱七八糟的其他书哦!还犹豫什么,抓紧扫码关注吧。“程序员杂书馆”以后将每周为大家带来经典书籍资料、原创干货分享,谢谢大家。
需要书的同学请直接在公众号留言哈,如果不想要纸质书的也可以说明,我会选择一些PDF数据赠送,谢谢大家。


大数据小白系列——HDFS(1)的更多相关文章
- 大数据小白系列——HDFS(4)
这里是大数据小白系列,这是本系列的第四篇,来看一个真实世界Hadoop集群的规模,以及我们为什么需要Hadoop Federation. 首先,我们先要来个直观的印象,这是你以为的Hadoop集群: ...
- 大数据小白系列——HDFS(3)
这里是大数据小白系列,这是本系列的第三篇,介绍HDFS中NameNode选举,JournalNode等概念. 上一期我们说到了为解决NameNode(下称NN)单点失败问题,HDFS中使用了双NN的机 ...
- 大数据小白系列——HDFS(2)
这里是大数据小白系列,这是本系列的第二篇,介绍一下HDFS中SecondaryNameNode.单点失败(SPOF).以及高可用(HA)等概念. 上一篇我们说到了大数据.分布式存储,以及HDFS中的一 ...
- 大数据小白系列——MR(1)
一部编程发展史就是一部程序员偷懒史,MapReduce(下称MR)同样是程序员们用来偷懒的工具. 来了一份大数据,我们写了一个程序准备分析它,需要怎么做? 老式的处理方法不行,数据量太大时,所需的时间 ...
- 大数据小白系列 —— MapReduce流程的深入说明
上一期我们介绍了MR的基本流程与概念,本期稍微深入了解一下这个流程,尤其是比较重要但相对较少被提及的Shuffling过程. Mapping 上期我们说过,每一个mapper进程接收并处理一块数据,这 ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...
- 大数据学习系列之五 ----- Hive整合HBase图文详解
引言 在上一篇 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机) 和之前的大数据学习系列之二 ----- HBase环境搭建(单机) 中成功搭建了Hive和HBase的环 ...
- 大数据学习系列之六 ----- Hadoop+Spark环境搭建
引言 在上一篇中 大数据学习系列之五 ----- Hive整合HBase图文详解 : http://www.panchengming.com/2017/12/18/pancm62/ 中使用Hive整合 ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
随机推荐
- Confluence 6 在你的 LDAP 目录中优化用户和用户组数量
连接 LDAP 服务器能为你的用户管理提供灵活高效的解决方案.为了达到优化的性能,后台同步程序将会从 LDAP 上查找和下载数据同步到你本地的 Confluence 服务器数据库上同时还会定时的更新数 ...
- LeetCode(67):二进制求和
Easy! 题目描述: 给定两个二进制字符串,返回它们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = " ...
- 单击列表行前边的checkbox被选中,再单击,取消选中
需求描述:单击datatabl的一行数据,前边的checkbox被勾选上,再次点击,选中取消,第一次碰到这种需求,不过呢也很实用,简单记录一下 代码: //html代码<tr class=&qu ...
- 【python】gevent协程例子
说在前面:用协程还是多线程需要仔细考量.我在做实验时请求了100w个ip,分别用pool为1000的协程和64个线程来跑,结果是多线程的速度是协程的10倍以上. 一个简单的协程例子 #!/usr/bi ...
- git push -u 用法
在我们第一次提交git的时候: 发现上面用了这个-u参数,也没作解释,特意搜索了下这个-u的用法,加了参数-u后,以后即可直接用git push 代替git push origin master gi ...
- 异常小结:上一张图搞清楚Java的异常机制
下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的. Throwable Throwable是Java异常的顶级类,所有的异常都继承于这个类. Error,Excepti ...
- Java 单字节、多字节读取文本文档中的内容
文本文档位于工程下. 鼠标右击工程,选择“new - File”,即可创建. 文本文档的格式:GBK 单字节读取 import java.io.File; import java.io.FileInp ...
- C++ 使用LockWorkStation()的过程遇到的问题
关于函数“LockWorkStation()”,参见:https://msdn.microsoft.com/en-us/library/windows/desktop/aa376875.aspx Ho ...
- SVN重新设置用户名和密码
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...
- Python函数之内置函数
截止导Python 3.6 目前内置函数有68个 以下是对这些内置函数的分类 一:作用域相关 以字典的形式返回作用域中的名字 locals # 返回本地作用域的所有名字 globals # 返回全局作 ...