1、什么是大数据?什么是云计算?什么是hadoop?

大数据现在很火,到底什么是大数据,多大的数据才算大,一般而言对于TB级以上的数据我们成为大数据,对于这些数据它的价值在哪?大数据的价值就是我们大量的数据中分析出有价值的信息,来判断一些行为等等信息。而这些大数据存储在哪?如何进行分析?这就衍生了Hadoop。

云计算是什么?通俗的说云计算就是大规模的计算机集群(即多台服务器集群),我们通过软件将这些计算机整合起来,根据需求根据用户来提供服务。比如进行一些数据的计算分析。用来提高工作效率。(这是目前理解的,后面有深入再写)

什么是hadoop?通俗的说,hadoop就是对大数据进行处理的一个工具。利用它我们可以对数据的管理,主要有两方面:数据存储(HDFS)和数据计算(MapReduce、spark、storm),所以我们简单理解为一个数据处理工具即可。

2、什么是HDFS?

刚上面说了HDFS是hadoop中负责对数据进行存储相当于的一个功能模块吧,总的来说,HDFS是一个分布式的文件系统,它可以无限制的存放大量的文件,这些文件分布式的存放在HDFS中,具有高容错、批处理的特点。

3、HDFS的原理?

HDFS的设计思想:

名称解释:

NN: namenode节点:作用:接收来自客户端是读写数据;存放元数据:元数据包括fsimage(格式化的时候产生)和editslog(对元数据进行CRUD的时候产生的日志文件)。

SNN: SecondaryNameNode:作用是协助NN完成元数据的更新操作。

DN:DataNode:数据节点:这里是存放数据的核心位置。DN会不停的向NN发送心跳,用于NN检测DN是否处于活动状态,有没有宕机。

大数据的存储是以块(block)来存储的,每个block默认有三个副本,这三个副本必须存放在不同的节点机器上,即三个不同的计算机。所以DN至少三台。一个DN上面可以存放多个不同的block块,DN的数量必须大于等于block的数量。

SNN合并图:

我们根据图来分析:

HDFS写流程:

4、HDFS如何搭建集群

前提:在进行各项试验之前,各个节点切换到root用户下,将防火墙关闭。 chkconfig iptables off 

centos中搭建集群的步骤:

搭建集群的环境,我们首先准备四个节点机器,一个用来作为NN,一个用来作为SNN,DN,另外两台作为DN .

(1)设置每个节点机器的ssh 免密码登录。

(2)设置NN上面可以免密码登录其余各个节点机器。(将NN的公钥复制给其余节点,其余节点授权NN可以登录自己)(SCP可以不同服务器直接互相传递文件的命令)

(3)解压hadoop后,

修改配置文件:这个可以参考hadoop的API:

修改hadoop-env.sh 文件配置jdk的路径

修改core-site.xml文件:配置NN的访问端口

修改hdfs-site.xml文件,配置SNN地址。

设置slaves中三台DN的节点位置

设置masters作为SNN的节点的位置。

(4)设置好后,复制hadoop到其余各个节点上面。

在NN上面启动hadoop:

start-dfs.sh  即可启动。

5、什么是HA?

HA是高可用,即整个集群的高可用性。

首先为什么会出现HA?

一个集群中只有能有个NN处于活动状态,可是当这个NN宕机了呢,这个集群就不可用了。方案:一主一备,主的宕机了,备的NN作为主的,接替主的位置。

高可用的原因:NN宕机,内存受限

名称解释:

ZK:zookeeper:可以理解为一个服务的管理者,这里主要负责管理主备的自动切换。

JN: journalNode:在HA高可用的集群中,SNN的作用由JN来代替了,JN主要用来负责记录edits文件,共享edits文件,合并edits文件,用来根据edits来合并NN Active 和NN standy 的源文件。

NN acitve:主节点。

NN standby: 备节点。在主节点处于活动状态时,备节点是不作用的。因为一个集群只有一个NN活动。

FileController: 这个文件主要配合zk来进行主备节点的自动切换。

上图分析:

HA原理:

基于QJM的HDFS HA方案如上图所示,其处理流程为:集群启动后一个NameNode处于Active状态,并提供服务,处理客户端和DataNode的请求,并把editlog写到本地和share editlog(这里是QJM)中。另外一个NameNode处于Standby状态,它启动的时候加载fsimage,然后周期性的从share editlog中获取editlog,保持与Active节点的状态同步。为了实现Standby在Active挂掉后迅速提供服务,需要DataNode同时向两个NameNode汇报,使得Stadnby保存block to DataNode信息,因为NameNode启动中最费时的工作是处理所有DataNode的blockreport。为了实现热备,增加FailoverController和Zookeeper,FailoverController与Zookeeper通信,通过Zookeeper选举机制,FailoverController通过RPC让NameNode转换为Active或Standby。

HDFS HA通常由两个NameNode组成,一个处于Active状态,另一个处于Standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步Active NameNode的状态,以便能够在它失败时快速进行切换。

Hadoop 2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode,这里还配置了一个Zookeeper集群,用于ZKFC故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为Active状态。

YARN的ResourceManager也存在单点故障问题,这个问题在hadoop-2.4.1得到了解决:有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调。

YARN框架下的MapReduce可以开启JobHistoryServer来记录历史任务信息,否则只能查看当前正在执行的任务信息。

Zookeeper的作用是负责HDFS中NameNode主备节点的选举,和YARN框架下ResourceManaer主备节点的选举。

6、如何搭建高可用(HA)的HDFS?

centos搭建步骤:

搭建zk集群,搭建HA:

HDFS HA配置要素

NameNode机器:两台配置对等的物理机器,它们分别运行Active和Standby Node。

JouralNode机器:运行JouralNodes的机器。JouralNode守护进程相当的轻量级,可以和Hadoop的其他进程部署在一起,比如NameNode、DataNode、ResourceManager等,至少需要3个且为奇数,如果你运行了N个JNS,那么它可以允许(N-1)/2个JNS进程失效并且不影响工作。

在HA集群中,Standby NameNode还会对namespace进行checkpoint操作(继承Backup Namenode的特性),因此不需要在HA集群中运行SecondaryNameNode、CheckpointNode或者BackupNode。

HDFS HA配置参数

需要在hdfs.xml中配置如下参数:

dfs.nameservices:HDFS NN的逻辑名称,例如myhdfs。

dfs.ha.namenodes.myhdfs:给定服务逻辑名称myhdfs的节点列表,如nn1、nn2。

dfs.namenode.rpc-address.myhdfs.nn1:myhdfs中nn1对外服务的RPC地址。

dfs.namenode.http-address.myhdfs.nn1:myhdfs中nn1对外服务http地址。

dfs.namenode.shared.edits.dir:JournalNode的服务地址。

dfs.journalnode.edits.dir:JournalNode在本地磁盘存放数据的位置。

dfs.ha.automatic-failover.enabled:是否开启NameNode失败自动切换。

dfs.ha.fencing.methods :配置隔离机制,通常为sshfence。

HDFS自动故障转移

HDFS的自动故障转移主要由Zookeeper和ZKFC两个组件组成。

Zookeeper集群作用主要有:一是故障监控。每个NameNode将会和Zookeeper建立一个持久session,如果NameNode失效,那么此session将会过期失效,此后Zookeeper将会通知另一个Namenode,然后触发Failover;二是NameNode选举。ZooKeeper提供了简单的机制来实现Acitve Node选举,如果当前Active失效,Standby将会获取一个特定的排他锁,那么获取锁的Node接下来将会成为Active。

ZKFC是一个Zookeeper的客户端,它主要用来监测和管理NameNodes的状态,每个NameNode机器上都会运行一个ZKFC程序,它的职责主要有:一是健康监控。ZKFC间歇性的ping NameNode,得到NameNode返回状态,如果NameNode失效或者不健康,那么ZKFS将会标记其为不健康;二是Zookeeper会话管理。当本地NaneNode运行良好时,ZKFC将会持有一个Zookeeper session,如果本地NameNode为Active,它同时也持有一个“排他锁”znode,如果session过期,那么次lock所对应的znode也将被删除;三是选举。当集群中其中一个NameNode宕机,Zookeeper会自动将另一个激活。

HA集群启动:

首先启动zk集群,zkServer.sh start

启动hadoop集群:  start-hdfs.sh

7.实验结果:

访问主NN的地址:node1:50070

访问备机:node5:50070

一个显示active 一个显示standby

当一个kill进程主机后,另外standby切换成active

说明:配置下各个节点的名称: 在etc下的hosts文件中添加ip 和节点名。

hadoop学习之HDFS的更多相关文章

  1. hadoop学习(五)----HDFS的java操作

    前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...

  2. Hadoop学习笔记-HDFS命令

    进入 $HADOOP/bin 一.文件操作 文件操作 类似于正常的linux操作前面加上“hdfs dfs -” 前缀也可以写成hadoop而不用hdfs,但终端中显示 Use of this scr ...

  3. Hadoop学习笔记---HDFS

    Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐 ...

  4. Hadoop学习笔记—HDFS

    目录 搭建安装 三个核心组件 安装 配置环境变量 配置各上述三组件守护进程的相关属性 启停 监控和性能 Hadoop Rack Awareness yarn的NodeManagers监控 命令 hdf ...

  5. hadoop学习(二)----HDFS简介及原理

    前面简单介绍了hadoop生态圈,大致了解hadoop是什么.能做什么.带着这些目的我们深入的去学习他.今天一起看一下hadoop的基石--文件存储.因为hadoop是运行与集群之上,处于分布式环境之 ...

  6. 【Hadoop学习】HDFS中的集中化缓存管理

    Hadoop版本:2.6.0 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4146398.html 概述 ...

  7. 【Hadoop学习】HDFS 短路本地读

    Hadoop版本:2.6.0 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4146296.html 背景 ...

  8. hadoop学习之hdfs文件系统

    一.hdfs的概念 Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS. Hadoop是Apache Lucene创始人Doug Cu ...

  9. Hadoop 学习之——HDFS

    HDFS是HADOOP中的核心技术之一——分布式文件存储系统.Hadoop的作者Doug Cutting 和Mike 是根据Google发布关于GFS 的研究报告所设计出的分布式文件存储系统. 一.H ...

  10. hadoop学习记录--hdfs文件上传过程源码解析

    本节并不大算为大家讲接什么是hadoop,或者hadoop的基础知识因为这些知识在网上有很多详细的介绍,在这里想说的是关于hdfs的相关内容.或许大家都知道hdfs是hadoop底层存储模块,专门用于 ...

随机推荐

  1. JQuery制作网页—— 第二章 JavaScript操作BOM对象

    1.window对象: 浏览器对象模型(BOM)是javascript的组成之一, 它提供了独立与浏览器窗口进行交换的对象,使用浏览器对象模型可以实现与HTML的交互. 它的作用是将相关的元素组织包装 ...

  2. (转)在图像处理中,散度 div 具体的作用是什么?

    出处http://www.zhihu.com/question/24591127 按:今天看到这篇文章,有点感慨,散度这个概念我初次接触到至少应该是在1998年,时隔这么多年后看到这篇文章,真的 佩服 ...

  3. InteliJ IDEA 设置eclipse快捷键

    从使用eclipse切换到intellij idea开发工具常常会伴随这快捷切换的困扰,今天写到将intellij idea快捷键设置为eclipse快捷的方式 步骤如下: file -> se ...

  4. php COM

    查看php.ini中是否已经开启了com.allow_dcom = true 从php/ext/里面查找一下有没有这个php_com_dotnet.dll这个文件 如果没有网上下载个,一般都会有的吧应 ...

  5. php 文件操作和文件上传

    文件操作 http://www.w3school.com.cn/php/php_file.asp http://www.w3school.com.cn/php/php_file_open.asp ht ...

  6. OLAP和OLTP

    OLTP与OLAP的介绍 数据处理分为两种技术架构系统:OLTP与OLAP OLTP(联机事务处理过程) OLTP是传统的关系型数据库的主要应用,主要是基本的,日常的事务处理,例如银行的交易     ...

  7. poj 1611 dsu

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 35918   Accepted: 17458 De ...

  8. 清空Fragment回退栈中某个Fragment之上的所有Fragment

    根据debug信息查看Fragment回退栈的情况,具体debug代码如下: int num = getActivity().getSupportFragmentManager().getBackSt ...

  9. P1021 邮票面值设计

    P1021 邮票面值设计 题目描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤15)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大值MAX,使在1-MAX ...

  10. 我的转行之路(电气转IT)------2018阿里校招面经

    博主本专业电气,今年3月下定决心转向互联网行业,本来想依仗自己比较自信的学习能力自学成才的,不过学了一段时间感觉还是需要一个人来指点,不仅仅是指点一些技术性的问题,更是需要有人来指点一下方向性的问题. ...