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. java实现附件预览(openoffice+swftools+flexpaper)

    先附上本人参考的文章,基于的 flexpaper版本 为 1.5,本人由于使用的是 2.1.9 ,故之后说明: 已经支持加载中文文件名 代码下载 1.概述 主要原理 1.通过第三方工具openoffi ...

  2. [原]Water Water Search Problems' Set~Orz【updating...】

    [HDU] [POJ] 作者:u011652573 发表于2014-4-30 10:39:04 原文链接 阅读:30 评论:0 查看评论

  3. HUD-1142

    A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

  4. ubuntu 安装 rabbitmq-server

    Rabbitmq 是用 erlang 语言写的,所以我们需要安装 Erlang,安装 erlang 又需要安装 python 与 simplejson,所以我们从python开始: 1.安装 pyth ...

  5. 红黑树、B(+)树、跳表、AVL等数据结构,应用场景及分析,以及一些英文缩写

    在网上学习了一些材料. 这一篇:https://www.zhihu.com/question/30527705 AVL树:最早的平衡二叉树之一.应用相对其他数据结构比较少.windows对进程地址空间 ...

  6. JAVA字符串格式化-String.format()的使用 (转载)

    常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重 ...

  7. splay入门

    在比较了网上的几份模板的速度之后,发现指针版明显快了很多,但是一敲起来....各种不习惯...所以还是学的hzwer 的数组版... bzoj3223:维护reverse操作就可以了 #include ...

  8. tomcat启动出错(转)

    刚刚装载好的myeclipse 在添加项目到服务器的时候,突然异常涌现. 其实这是一个新手常见的错误.平常配置JDK环境的时候有些人习惯把JDK安装到磁盘的当前文件夹里,这样十分的方便,但是安装时,你 ...

  9. js获得鼠标的位置

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. iso中AutoLayout和Autoresizing Mask的区别

    •在iOS6之前,关于屏幕旋转的适配和iPhone,iPad屏幕的自动适配,基本都是由Autoresizing Mask来完成的.但是随着大家对iOS App的要求越来越高,以及今后可能出现的多种屏幕 ...