1.开机启动Hadoop,输入命令:

      

      检查相关进程的启动情况:

      

    2.对Hadoop集群做一个测试: 

       可以看到新建的test1.txt和test2.txt已经成功地拷贝到节点上(伪分布式只有一个节点,如果是完全分布式,则会显示3个节点都拷贝成功)。这证明HDFS工作正常,其中,hadoop dfs –put [本地地址] [hadoop目录] 代表将本地的地址目录存放到hadoop目录下;hadoop dfs –ls [文件目录] 则表示查看指定目录下的内容。更多Hadoop的常用指令请参考:http://blog.chinaunix.net/uid-10915175-id-3258669.html

     接下来测试MapReduce:

      

     这里运行了一个Java例子,jar代表运行java程序,wordcount表示运行jar包里面的wordcount功能,in代表原始数据地址,out代表目的地址(新的目录)。

     运行 bin/hadoop dfs -ls 命令,列出根目录的所有内容;运行bin/hadoop dfs -cat .out/* 可以看到文件内容的统计。

      

     也可以通过WEB来了解Hadoop的活动:通过浏览器和http访问jobtracker所在节点的50030端口监控jobtracker,通过浏览器和http访问namenode所在节点的50070端口监控集群。

     那么在操作系统Linux的角度,文件保存到哪里了呢?

       查看HADOOP_HOME下的data目录下的current目录下,会发现一大堆blk开头的文件,后缀名为.meta的是元数据,而没有此后缀的文件是写入的数据,在Linux角度看,这些数据根本打不开。

    3.HDFS设计基础与目标:

      (1) 硬件错误是常态,因此需要冗余。原因可能是内存不稳定,CPU过热,硬盘寿命到期,硬盘介质损坏等等。

      (2) 流式数据访问,即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理,专为大数据而生。

      (3) 大规模数据集。

      (4) 简单一致性模型。为了降低系统的复杂度,对文件采用一次性写多次读的逻辑设计,即如果是文件,一经写入、关闭,就再也不能修改。

      (5) 程序采用"数据就近"原则分配节点执行。

    4.HDFS体系结构:

      包括NameNode、DataNode、事务日志、映像文件以及SecondaryNameNode。

      

      NameNode:

        (1) 管理文件系统的命名空间。

        (2) 记录每个文件数据块在各个DataNode上的位置和副本信息。

        (3) 协调客户端对文件的访问。

        (4) 记录命名空间内的改动或空间本身属性的改动。

        (5) NameNode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等。

      DataNode:

        (1) 负责所在的物理节点的存储管理。

        (2) 一次写入,多次读取(不修改)。

        (3) 文件由数据块组成,典型的块大小是64MB。

        (4) 数据块尽量散步到各个节点。

      读取数据的流程:

        (1) 客户端首先从NameNode获得组成这个文件的数据块位置列表。

        (2) 根据列表知道存储数据块的DataNode。

        (3) 访问DataNode获取数据。

      由此可以看出NameNode并不参与数据实际的传输。

      HDFS的可靠性:

        (1) 冗余副本策略。可以在hdfs-site.xml中设置复制因子指定副本数量,所有数据块都有副本,DataNode启动时,会遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表(blockreport)汇报给NameNode。

        (2) 机架策略。集群一般放在不同的机架上,机架之间带宽要比机架内带宽要小,HDFS有"机架感知"功能,Hadoop可以通过节点之间互相传递数据包,就可以知道两个节点是不是在同一个机架上。一般在本机架存放一个副本,在其他机架在存放别的副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率。

        (3) 心跳机制。NameNode周期性从DataNode接受心跳信号和块报告,NameNode根据块报告验证元数据,没有按时发送心跳的DataNode会被标记为宕机,不会再给它任何I/O请求。如果DataNode失效造成副本数量下降,并且低于预先设置的阈值,NameNode会检测出这些数据块,并在合适的时机进行重新复制。引发重新复制的原因还包括数据副本本身损坏,磁盘错误,复制因子被增大等等。

        (4) 安全模式。NameNode启动时会先经过一个"安全模式"阶段,在这个阶段,不会产生数据写操作,NameNode会收集各个DataNode的报告,当数据块达到最小副本数以上时,会被认为是"安全"的。在一定比例(可设置)的数据块被确定为安全后,再过若干时间,安全模式结束,当检测到副本数不足时,该块会被复制,直到达到最小副本数。

        (5) 校验和。在文件创立时,每个数据块都产生校验和,校验和会作为单独一个隐藏文件保存在命名空间下,客户端获取数据时可以检查校验和是否相同,从而发现数据块是否损坏。如果正在读取的数据块损坏,则可以继续读取其他副本。

        (6) 回收站。删除文件时,其实是放入回收站/trash,回收站里的文件是可以快速恢复的。可以设置一个时间阈值,当回收站里文件的存放时间超过这个阈值,就会被彻底删除,并且释放占用的数据块。

        (7) 元数据保护。映像文件和事务日志是NameNode的核心数据,可以配置为拥有多个副本。副本会降低NameNode的处理速度,但增加安全性。NameNode依然是单节点,如果发生故障仍然要手动切换。

        (8) 快照机制。0.20.2还未实现。支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态。

    5.HDFS的一些操作(命令行,先进入HADOOP_HOME目录下):

      (1) 列出HDFS下的文件: bin/hadoop dfs -ls [文件目录](不写则默认hadoop的根目录)

      (2) 上传文件到HDFS: bin/hadoop dfs -put [本地目录] [hadoop目录]

      (3) 把HDFS的文件复制到本地: bin/hadoop dfs -get [hadoop目录] [本地目录]

      (4) 删除HDFS下的文档: bin/hadoop dfs -rmr [文件目录]

      (5) 查看HDFS下某个文件的内容: bin/hadoop dfs -cat [文件路径]

      (6) 查看HDFS基本统计信息: bin/hadoop dfsadmin -report

      (7) 进入和退出安全模式: bin/hadoop dfsadmin -safemode enter

                   bin/hadoop dfsadmin -safemode leave

      怎样增加新的节点?

        (1) 在新节点安装好Hadoop,配置好环境。

        (2) 把NameNode的有关配置文件复制到该节点。

        (3) 修改masters和slaves文件,增加该节点。

        (4) 设置ssh免密码进出该节点。

        (5) 单独启动该节点上的DataNode和TaskTracker(hadoop-daemon.sh start datanode/tasktracker)。

        (6) 运行start-balancer.sh进行数据负载均衡。

      启动某些特定后台进程而非所有后台进程:

        start-all.sh是启动所有进程。start dfs daemons是启动NameNode,start mapred daemons是启动JobTracker等等。

    6.HDFS的一些操作(API):

      写文件 create

      读取文件 open

      删除文件delete

      创建目录 mkdirs

      删除文件或目录 delete

      列出目录的内容 listStatus

      显示文件系统的目录和文件的元数据信息 getFileStatus

Hadoop第三天---分布式文件系统HDFS(大数据存储实战)的更多相关文章

  1. 分布式文件系统HDFS,大数据存储实战(一)

    本文进行了以下工作: OS中建立了两个文件,文件中保存了几组单词. 把这两个文件导入了hadoop自己的文件系统. 介绍删除已导入hadoop的文件和目录的方法,以便万一发生错误时使用. 使用列表命令 ...

  2. 《大数据技术应用与原理》第二版-第三章分布式文件系统HDFS

    3.1分布式文件 HDFS默认一个块的大小是64MB,与普通文件不同的是如果一个文件小于数据块的大小,它并不占用整个数据块的存储空间. 主节点又叫名称节点:另一个叫从节点又叫数据节点.名称节点负责文件 ...

  3. 一脸懵逼学习HBase---基于HDFS实现的。(Hadoop的数据库,分布式的,大数据量的,随机的,实时的,非关系型数据库)

    1:HBase官网网址:http://hbase.apache.org/ 2:HBase表结构:建表时,不需要指定表中的字段,只需要指定若干个列族,插入数据时,列族中可以存储任意多个列(即KEY-VA ...

  4. 大数据 --> 分布式文件系统HDFS的工作原理

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

  5. Hadoop分布式文件系统HDFS的工作原理

    Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...

  6. 【转载】Hadoop分布式文件系统HDFS的工作原理详述

    转载请注明来自36大数据(36dsj.com):36大数据 » Hadoop分布式文件系统HDFS的工作原理详述 转注:读了这篇文章以后,觉得内容比较易懂,所以分享过来支持一下. Hadoop分布式文 ...

  7. 大数据技术原理与应用——分布式文件系统HDFS

    分布式文件系统概述 相对于传统的本地文件系统而言,分布式文件系统(Distribute File System)是一种通过网络实现文件在多台主机上进行分布式存储的文件系统.分布式文件系统的设计一般采用 ...

  8. Hadoop概念学习系列之分布式文件系统(三十)

    ===============> 数据量越来越多,在一个操作系统管辖的范围存下不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就 ...

  9. 大数据技术 - 分布式文件系统 HDFS 的设计

    本章内容介绍下 Hadoop 自带的分布式文件系统,HDFS 即 Hadoop Distributed Filesystem.HDFS 能够存储超大文件,可以部署在廉价的服务器上,适合一次写入多次读取 ...

随机推荐

  1. 32-语言入门-32-Triangular Sums

    题目地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=122    描述The nth Triangular number, T(n) = 1 ...

  2. javascript 一个关于时间排序的算法(一个页面多个倒计时排序)

    上周要做一个活动页面 秒杀列表页 需要一个时间的算法排序 自己琢磨了半天想了各种算法也没搞出来,后来问了下一个后台的php同学 他写了个算法给我看了下 ,刚开始看的时候觉得这就是个纯算法,不能转化成页 ...

  3. 用root直接登入ubuntu 14_04

    官网下载地址:http://www.ubuntu.com/download/desktop64位桌面版:http://www.ubuntu.com/ubuntu-releases/14.04/ubun ...

  4. BZOJ 3192 删除物品(树状数组)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3192 题意:(1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的 ...

  5. ZOJ 3367 Counterfeit Money(最大相同子矩阵)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3909 题意:给出两个矩阵A和B,找出最大的相同子矩阵S.输出S的高和 ...

  6. leetcode:Count and Say

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  7. depth_write

    Sets whether or not this pass renders with depth-buffer writing on or not. Format: depth_write <o ...

  8. aptana studio 3支持jquery

    首先要说的一点是,如果你不使用PortableGit,就不要安装,否则New From Template中会缺失大部分模板.至于还有什么缺陷,暂时没测出来,本人也是刚玩aptana studio 3哈 ...

  9. 嵌入式linux内核是什么?

    linux内核是一种可以被内核动态加载(insmode)和卸载(rmmod)的可执行二进制代码 最简单的内核 #include <linux/module.h> #include < ...

  10. 流程引擎的API和服务基础

    RepositoryService :  管理和控制 发布包 和 流程定义(包含了一个流程每个环节的结构和行为) 的操作 除此之外,服务可以 查询引擎中的发布包和流程定义. 暂停或激活发布包,对应全部 ...