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. datetimepicker文件

    很有诚意先放下载地址百度网盘 最近在做angular的项目,找一个合适的 datepicker ,首选bootstrap-datetimepicker,但是项目中没有到bootstrap, 整理处理下 ...

  2. VIM的配置文件(vimrc)在哪里?【Win7】

    如果你使用VIM有一段时间的话,你会想要修改它的一些配置,例如默认显示行号.在哪改呢? 答案是:vimrc 那这个配置文件在哪呢? 打开你的vi,在命令模式下,输入[:version],会看到如下图所 ...

  3. 下拉刷新控件(4)SwipeRefreshLayout官方教程(上)如何在应用中使用它

    http://developer.android.com/training/swipe/add-swipe-interface.html 1,在布局xml和代码中使用它 2,在menu中添加它 The ...

  4. 源码解析Android中View的measure量算过程

    Android中的Veiw从内存中到呈现在UI界面上需要依次经历三个阶段:量算 -> 布局 -> 绘图,关于View的量算.布局.绘图的总体机制可参见博文< Android中View ...

  5. iTunes获取下载的安装包

    打开iTunes, 偏好设置,选择高级,即可找到文件路径

  6. 函数mem_pool_create

    /********************************************************************//** Creates a memory pool. @re ...

  7. Qt之密码框不可选中、复制、粘贴、无右键菜单等

    简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...

  8. clientTop、clientWidth、offsetTop、offsetWidth、scrollTop

    <div id="drag" class="drag">drag me</div> <script type="text ...

  9. 【英语】Bingo口语笔记(51) - 相信怀疑的表达

  10. Solr单机部署和集群部署

    用到的相关jar包:http://pan.baidu.com/disk/home#list/path=%2Fsolr Solr目录结构 Solr 目录 Contrib :solr 为了增强自身的功能, ...