加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

从HDFS和MapReduce两方面相识Hadoop

发布时间:2019-03-22 17:06:43 所属栏目:教程 来源:佚名
导读:简介 Hadoop 是一个可以或许对大量数据举办漫衍式处理赏罚的软件框架,框架最焦点的计划就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,而 MapReduce 则为海量的数据提供了计较。这篇文章就首要从 HDFS 和 MapReuce 两个大的方面睁开对 Hadoop 讲授,虽然

不出不测的话,你可以在节制台看到你指定文件的内容。在这一步我碰着一个题目,就是无法直接在 windows 下操纵 HDFS,详细的办理要领可以参照这篇文章。FSDataInputStream.seek()要领还可以实现从文件输入流的恣意一个绝对位置读取文件内容,好比我们可以在上面代码中添加如下的内容来实此刻节制台一再打印文件内容。

  • 清单 6. JavaApi 恣意位置读取文件内容
  1. in.seek(0); 
  2. tils.copyBytes(in, System.out, 4096, false); 

建设目次。

  • 清单 7. JavaApi 建设目次
  1. @Test 
  2. public void mkdir() throws IOException { 
  3. fs.mkdirs(new Path("/test/api")); 

查询文件目次。

  • 清单 8. JavaApi 查询文件目次
  1. @Test 
  2. public void ls() throws IOException { 
  3. FileStatus[] fileStatuses = fs.listStatus(new Path("/")); 
  4. if (null == fileStatuses || fileStatuses.length == 0) { 
  5. return; 
  6. for (FileStatus fileStatus : fileStatuses) { 
  7. System.out.println(fileStatus.getPath() + "   " + fileStatus.getPermission()); 

这里引入一个类 FileStatus,这个类封装了 HDFS 中文件和目次的元数据,包罗文件长度、块巨细、复本、修改时刻、全部者以及权限信息。FileSystem 内里提供的 listStatus 要领可以获取一个目次下的全部目次可能文件的 FileStatus,可是它不会递归获取下级目次的内容,这里可以开拓你的想象本身实现一下(Tips:fileStatus.isDirectory()可以判定这个 fileStatus 是否是一个文件夹)。

删除文件或目次。

  • 清单 9. JavaApi 删除文件或目次
  1. @Test 
  2. public void delete() throws IOException { 
  3.   fs.delete(new Path("/test/api"), false); 
  4. @Test 
  5. public void deleteNonEmptyDir() throws IOException { 
  6.   fs.delete(new Path("/test"), true); 

我们可以看到 fs.delete()这个要领有两个参数,第一个参数很好领略,就是我们要删除的目次可能文件的地点。那么第二个 Boolean 范例的参数呢,假如删除的是文件可能空目次这个参数现实上是会被忽略的,假如删除的长短空目次,只有在这个参数值为 true 的时辰才会乐成删除。

建设文件和文件写入。

我们通过 FileSystem.create()要领来建设一个文件,这个要了解顺带着建设不存在的父级目次,假如不必要这个的话,最好是在建设之前挪用 exists()要领来判定一下,假如父级目次不存在直接报错即可。

  • 清单 10. JavaApi 建设文件和文件写入
  1. @Test 
  2. public void create() throws IOException { 
  3. FSDataOutputStream out = null; 
  4. try { 
  5. out = fs.create(new Path("/test/api/test.txt")); 
  6. out.writeChars("hello hdfs."); 
  7. } finally { 
  8. IOUtils.closeStream(out); 

文件建设好后,可以通过 append()要领在文件末端添加内容。

  • 清单 11. JavaApi 追加文件内容
  1. @Test 
  2. public void append() throws IOException { 
  3. FSDataOutputStream out = null; 
  4. try { 
  5. out = fs.append(new Path("/test/api/test.txt")); 
  6. out.writeChars("hello hdfs."); 
  7. } finally { 
  8. out.close(); 

从当地上传文件到 HDFS。

  • 清单 12. JavaApi 上传文件至 HDFS
  1. @Test 
  2. public void copyFromLocal() throws IOException { 
  3. fs.copyFromLocalFile(new Path("d:/local.txt"), new Path("/test/api")); 

从 HDFS 上下载文件。

  • 清单 13. JavaApi 从 HDFS 下载文件
  1. @Test 
  2. public void copyToLocal() throws IOException { 
  3.   fs.copyToLocalFile(new Path("/test/api/local.txt"), new Path("E:/")); 

MapReduce 拭魅战

什么是 MapReduce

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读