Hadoop权威指南学习笔记三
HDFS简单介绍
声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考。有什么不到之处还望指出,一起学习一起进步。
转载请注明:http://blog.csdn.net/my_acm
Hadoop说白了就是一个提供了处理分析大数据的文件集群,当中最重要的无疑是HDFS(Hadoop Distributed File System)即Hadoop分布式文件系统。
1、
HDFS是一种以流式数据訪问模式(一次写入多次读取的模式)存储超大文件的系统。
其不须要的高端的硬件系统,普通市面上的硬件就能满足要求。
眼下不适合应用HDFS的有:低延迟的数据訪问、大量小的文件、多用户写入随意改动文件等。
2、
HDFS存储以块为单位,通常块大小为64M。之所以要分为这么大的块,主要是为了降低寻址时间,由于眼下来看。传输数据速率越来越快,对于HDFS处理大数据时,假设频繁的寻址必定会使得执行时间变长。
HDFS集群有两种节点名称节点和多个数据节点。当中名称节点充当管理者,数据节点充当工作者。
名称节点相当于HDFS文件树上的枝干分叉点,而数据节点则标注着全部块的存储信息。所以名称节点的丢失就意味着HDFS的瘫痪。
因此Hadoop提供了两种机制解决这一问题:
一种是复制组成文件系统元数据的持久状态文件。即在本地磁盘写入的同一时候也写入一个远程NFS挂载。
还有一种是设置一个二级名称节点。
3、
HDFS提供命令行接口的交互。
4、
Hadoop是一个抽象的文件系统概念,HDFS是当中的一个详细实现,java抽象类org.apache.hadoop.fs.FileSystem展示了Hadoop的一个文件系统,并且有几个详细实现。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXlfYWNt/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
如上图所看到的。Hadoop提供了很多文件的接口,一般是通过URL来确定使用何种文件系统实现交互。
5、
Hadoop是java实现的所以,java接口无疑是当中重中之重。以下是java接口的一些详细实现。
(1) 数据读取:
使用URL读取数据
Java识别Hadoop文件系统的URL方案,就是通过一个FsUrlStreamHandlerFactory实例来调用在URL中的setURLStreamHandlerFactory方法。
注意:这样的方法在java虚拟机中仅仅能被调用一次。所以通常设置为static,也因此假设程序其它部件(可能不是在你控制的第三方部件)设置了一个URLStreamHandlerFactory,那么久再也不能从Hadoop读取数据。
代码:
输入执行:
% hadoop URLCat hdfs://localhost/user/tom/test.txt
结果:
Hello world Hello world
Hello world
Hello world Hello world
使用FileSystem API读取数据
直接看代码吧。注意看凝视
(2) 数据写入
FileSystem类有一系列创建文件的方法。
public FSDataOutputStream create(Pathf) throws IOException
用create创建文件是可用exists()推断其父文件夹是否存在。
另一个用于传递回调接口的重载方法 Progressable,如此一来。我们所写的应用就会被告知数据写入数据节点的进度。
package org.apache.hadoop.util;
public interface Progressable{
publicvoid progress();
}
创建文件的还能够用例如以下方法:
Public FSDataOutputStream append(Pathf) throws IOException
此方法同意在打开文件的末尾追加数据。
(3) 文件夹
FileSystem题目了创建文件夹的方法:
public Boolean mkdirs(Path f) thorwsIOException
(4) 查询文件系统
FileStatus类封装了文件系统中文件和文件夹的元数据。包含文件长度、块大小、副本、改动时间、全部者以及许可信息。
FileSystem的getFileStatus()提供了获取一个文件或文件夹的状态对象方法。
假设仅仅是推断一个文件是否存在。则能够使用前文提到的exists(Path f)方法。
Hadoop有时要查询批量文件时通常要用到通配符。所以它为运行通配符提供了
Hadoop支持与Unix bash同样的通配符两个FileSystem方法:
public FileStatus[] globStatus (PathpathPattern) throws IOException
public FileStatus[] globStatus (Path pathPattern,PathFileter filter)throws IOException
通配符:
(5) 删除数据
FileSystem中的delete()方法能够永久删除文件夹。
public Boolean delete(Path f,Boolean recursive) throwsIOException
Hadoop权威指南学习笔记三的更多相关文章
- Hadoop权威指南学习笔记二
MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...
- Hadoop权威指南学习笔记一
Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...
- 转载:Hadoop权威指南学习笔记
转自:http://pieux.github.io/blog/2013-05-08-learn-hadoop-the-definitive-guide.html 1 前言 Hadoop的内部工作机制: ...
- netty权威指南学习笔记三——TCP粘包/拆包之粘包现象
TCP是个流协议,流没有一定界限.TCP底层不了解业务,他会根据TCP缓冲区的实际情况进行包划分,在业务上,一个业务完整的包,可能会被TCP底层拆分为多个包进行发送,也可能多个小包组合成一个大的数据包 ...
- Hadoop权威指南 - 学习笔记
初识Hadoop.关于MapReduce Hadoop宏观介绍 相对于其他系统的优势 关系型数据库管理系统 为什么不能用配有大量硬盘的数据库进行大规模分析?为什么需要Hadoop? 因为计算机硬盘的发 ...
- IDA Pro 权威指南学习笔记(三) - IDA 桌面简介
IDA 的默认桌面如下图 工具栏区域(1)包含与 IDA 的常用操作对应的工具,可以使用 View -> Toolbar 显示或隐藏工具栏 可以使用 View -> Toolbars -& ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...
- CSS权威指南学习笔记系列(1)CSS和文档
题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...
随机推荐
- java中string与json互相转化
在Java中socket数据传输时,数据类型往往比較难选择.可能要考虑带宽.跨语言.版本号的兼容等问题. 比較常见的做法有两种:一是把对象包装成JSON字符串传输,二是採用java对象的序列化和反序列 ...
- 欢迎各位技术牛人增加Swift QQ群:343549891
急招:五年以上Swift开发经验,24个月工资.30天年假.配司机专车. 欢迎各位技术牛人增加Swift 敏捷大拇指 官方QQ群1: 报上"来自CSDN"就可以.谢谢! 訪问 大拇 ...
- Cocos2d-x第三方类库不支持arm64的问题解决(64位架构)
32位能够兼容64位操作系统. ipad mini2 64位编译有问题. 各种第三方库不支持64位操作系统. 设置build setting 直接上图:
- CentOS下安装C/C++开发工具包的最佳方式
如果你使用的是 Fedora, Red Hat, CentOS, 或者 Scientific Linux 系统,使用下面的命令安装GNU的C/C++开发包和编译器. # yum groupinstal ...
- Python demo working
一.游戏1.2.3 print("-------------- Guess Number Game---------------------") num=input("G ...
- vue中eventbus的使用
eventbus的方法很是简单,我们需要做三步事情: 第一步,我们需要创造一个容器去充当我们的eventbus 第二步,我们需要去抛出,或者说提交我们的事件 第三步,我们去监听我们的那个事件(也许这才 ...
- JAVA学习(一)——基本语法
tips:前端开发写惯了弱类型语言,再来学强类型语言,真的是被各种修饰符.类型声明给整的云里雾里,而且java语法和javascript语言差别还是很大的,所以做好笔记,把一些需要注意的地方记下来是非 ...
- MOOC使用心得
1. Mooctest 使用心得 慕测平台是编程类考试和练习的服务平台,教师可以轻松监管考试流程,学生可以自由练习编程.系统负责编程练习的自动化评估及可视化展现,配合当下红火的MOOC慕课课程,慕测平 ...
- 详解如何在vue项目中引入饿了么elementUI组件
在开发的过程之中,我们也经常会使用到很多组件库:vue 常用ui组件库:https://blog.csdn.net/qq_36538012/article/details/82146649 今天具体说 ...
- 从设计到实现,一步步教你实现Android-Universal-ImageLoader-辅助类
通过前面几篇博文.我们分析了 AUI 的缓存.工具类.显示与载入这几个方面的代码.今天呢,我们继续研究 AUI 的源代码,学习当中的核心辅助工具类. 希望大家能在里面学到东西哈. Download 要 ...