HDFS基础和java api操作

1. 概括


  • 适合一次写入多次查询情况,不支持并发写情况

  • 通过hadoop shell 上传的文件存放在DataNode的block中,通过linux
    shell只能看见block,看不见文件(HDFS将客户端的大文件存放在很多节点的数据块中,Block本质上是一个逻辑概念,它是hdfs读写数据的基本单位)

  • HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间

2. fs


  • 可以使用hdfs shell操作hdfs,常用 fs命令如下:
    • eg: hadoop fs -cat file1


  • - put localsrc dst  //从本地文件移动到hdfs

    -get src localsrc //复制文件到本地

    -text src //显示文件内容

    其他类似于linux shell

3. 端口


  • 端口:

  • 50070:查看NameNode状态
    50075:查看DataNode状态
    50090:查看SecondaryNameNode
    50030:查看JobTracker状态
    50060:查看TaskTracker状态

4. hdfs安全模式


  在启动hadoop集群的时候,集群的运行首先进入到安全模式下(safeMode),以检查数据完整性


<property>(hdfs-default.xml,302行)
<name>dfs.safemode.threshold.pct</name>
<value>0.999f</value>
</property>

这里定义了一个最小的副本率0.999,如果应该有5个副本存在,却只存在3个副本,3/5=0.6<0.999,则系统会自动地复制副本到其他DataNode,使得副本率不小于0.999,相反,如果此时系统中有8个副本,则会自动删除多余的3个副本

  安全模式相关操作:

hadoop fs –safemode get:查看安全模式状态
hadoop fs –safemode enter:进入安全模式状态
hadoop fs –safemode leave:离开安全模式状态

5. java api


注意:1)需注释掉org.apache.hadoop.fs.FileUtil类的checkReturnValue方法(688—692),否则可能出现权限问题)

   2)需要修改远程登录客户端的用户名,以避免权限问题

    我的电脑-管理-本地用户和组;

    注册表“HKEY_LOCAL_MACHINE\SOFEWARE\Microsoft\Windows
NT\CurrentVersion 修改  RegisteredOwner

写文件:


     String uri="hdfs://hadoop:9000/";
Configuration configuration=new Configuration();
FileSystem fileSystem=FileSystem.get(URI.create(uri),configuration);

final String pathString="/input";
final FSDataOutputStream fsDataOutputStream=fileSystem.create(new Path(pathString));
IOUtils.copyBytes(new ByteArrayInputStream("wish\n".getBytes()),fsDataOutputStream,configuration,false);
IOUtils.copyBytes(new ByteArrayInputStream("wish you happy \n".getBytes()),fsDataOutputStream,configuration,true);

读文件:

     String uri="hdfs://hadoop:9000/";
Configuration configuration=new Configuration();
FileSystem fileSystem=FileSystem.get(URI.create(uri),configuration);

final String pathString="/output";
final FSDataInputStream fsDataInputStream=fileSystem.open(new Path(pathString));
IOUtils.copyBytes(fsDataInputStream, System.out, configuration,true);

创建目录:


  String uri="hdfs://hadoop:9000/";
Configuration configuration=new Configuration();
FileSystem fileSystem=FileSystem.get(URI.create(uri),configuration);

final String pathString="/d1";
boolean exists=fileSystem.exists(new Path(pathString));
if(!exists){
boolean result=fileSystem.mkdirs(new Path(pathString));
System.out.println(result);
}

删除文件

     String uri="hdfs://hadoop:9000/";
Configuration configuration=new Configuration();
FileSystem fileSystem=FileSystem.get(URI.create(uri),configuration);

final String pathString="/output";
fileSystem.delete(new Path("/output"),true);

HDFS基础和java api操作,布布扣,bubuko.com

时间: 2024-09-30 10:31:00

HDFS基础和java api操作的相关文章

Java API操作HDFS

HDFS是存储数据的分布式文件系统,对HDFS的操作,就是对文件系统的操作,除了用HDFS的shell命令对文件系统进行操作,我们也可以利用Java API对文件系统进行操作,比如文件的创建.删除.修改权限等等,还有文件夹的创建.删除.重命名等等. 使用Java API对文件系统进行操作主要涉及以下几个类: 1.Configuration类:该类的对象封装了客户端或者服务端的配置. 2.FileSystem类:该类的对象是一个文件系统对象,可以利用该对象的一些方法来对文件进行操作,FileSys

Hadoop读书笔记(三)Java API操作HDFS

Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 Hadoop读书笔记(二)HDFS的shell操作:http://blog.csdn.net/caicongyang/article/details/41253927 JAVA URL 操作HDFS OperateByURL.java package hdfs; import java.io.InputStream; import jav

Spark基础与Java Api介绍

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3832405.html  一.Spark简介 1.什么是Spark 发源于AMPLab实验室的分布式内存计算平台,它克服了MapReduce在迭代式计算和交互式计算方面的不足. 相比于MapReduce,Spark能充分利用内存资源提高计算效率. 2.Spark计算框架 Driver程序启动很多workers,然后workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),最后对RD

使用java api操作Hadoop文件 Robbin

1 package cn.hadoop.fs; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.net.URI; 6 import java.net.URISyntaxException; 7 8 import org.apache.hadoop.conf.Configuration; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 i

hive-通过Java API操作

通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 1 package org.admln.hive; 2 3 import java.sql.SQLException; 4 import java.sql.Connection; 5 import java.sql.ResultSet; 6 import java.sql.Statement; 7 import java.sql.DriverManager; 8 9 public class testHiv

大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 Elasticsearch 的特点1.7 Elasticsearch 的核心概念1.7.1 近实时1.7.2 Cluster(集群)1.7.3 Node(节点)1.7.4 Index(索引 --> 数据库)1.7.5 Type(类型 --> 表)1.7.6 Document(文档 -->

使用Java API操作hdfs

如题 我就是一个标题党  就是使用JavaApi操作HDFS,使用的是MAVEN,操作的环境是Linux 首先要配置好Maven环境,我使用的是已经有的仓库,如果你下载的jar包 速度慢,可以改变Maven 下载jar包的镜像站改为 阿里云. 贴一下  pom.xml 使用到的jar包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifa

使用java API操作hdfs--拷贝部分文件到hdfs

要求如下: 自行在本地文件系统生成一个大约一百多字节的文本文件,写一段程序(可以利用Java API或C API),读入这个文件,并将其第101-120字节的内容写入HDFS成为一个新文件. import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class ShengChen { public static void

Java API操作HA方式下的Hadoop

通过java api连接Hadoop集群时,如果集群支持HA方式,那么可以通过如下方式设置来自动切换到活动的master节点上.其中,ClusterName 是可以任意指定的,跟集群配置无关,dfs.ha.namenodes.ClusterName也可以任意指定名称,有几个master就写几个,后面根据相应的设置添加master节点地址即可. private static String ClusterName = "nsstargate"; private static final S