CentOS系统下简单的分布式(HDFS)⽂件夹创建,⽂件上
传、下载等简单操作
⽬录
⾸先打开Linux桌⾯的eclipse,看到 eclipse 左边的⽬录是 Package Explorer ,这个⽬录看不到我们的分布式(DFS Localtions)⽂件⽬录,需要打开:Windows --> Show View --> Project Explorer ,启动这个视⾓的⽬录才能看到分布式的⽬录结构:
Linux中eclipse创建分布式普通项⽬的基本操作
New --> others --> Map/Reduce Project -- next
填写⼯程名:project name --> next --> finish --> yes
创建的hdfs001分布式项⽬如下图所⽰,下⾯还有很多jar包(增加jar包,新建的mapreduce 项⽬带所有jar包):
在⼯程下⾯创建⼀个资源⽂件 右键⼯程名 --> new --> source floder -->floder name --> finish:
增加配置⽂件:log4j.properties (⽇志的配置⽂件)、l(分布式的⼯作主机等信息配置⽂件)  这两个配置⽂件在hadoop⽬录下都有(这⾥有个常识,有⼤部分配置⽂件⼀般都在我们安装的程序 【主⽬录/etc/程序命令/下】下⾯可以直接到,不⽤⾃⼰去写,也可以直接引⽤):
[hduser@node1 hadoop]$ cp etc/hadoop/log4j.properties  /home/hduser/workspace/hdfs001/resources/
[hduser@node1 hadoop]$ cp etc/l  ~/workspace/hdfs001/resources/
这⾥是第⼀次,展⽰⼀下l配置⽂件的信息:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name&p.dir</name>
<value>file:/home/hduser/hadoop/tmp</value>
</property>
</configuration>
创建⼯具类及测试类
这⾥的操作跟在Windows下⾯的操作是⼤同⼩异的,没多⼤区别,创建⽬录,创建类,我这⾥直接给代码。
HdfsUtils.java ⼯具类
package org.kgc1803disk.util;
import java.io.IOException;
import org.f.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
/**
* hdfs 的 io 操作⼯具类
* @author hduser
*
*/
public class HdfsUtils {
//提取公共的全局静态变量
private static FileSystem fs;
//静态代码快(类第⼀次调⽤的时候产⽣对象)
static{
static{
Configuration conf = new Configuration();
try {
fs = (conf);
} catch (IOException e) {
e.printStackTrace();
}
}
//查询⼀个⽬录下的所有字⽂件信息 hadoop  dfs  -ls /
public static FileStatus[] getFileInfo(Path rootPath){
//FileStatus 显⽰当前⽬录⼦⽂件信息
FileStatus[] files = null;
try {
//listStatus 显⽰当前⽬录⼦⽂件信息
files = fs.listStatus(rootPath);
}catch (IOException e) {
e.printStackTrace();
}
return files;
}
//新建⼀个⽬录  hadoop fs  -mkdir /**
public static void mkdir(Path p){
try {
if(!fs.exists(p)){
fs.mkdirs(p);
}else{
System.out.println("⽬录已存在");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//上传本地⽂件到hdfs上
//hadoop  dfs  -put  本地⽂件  hdfs⽬录
//hadoop  dfs  -copyFromLocal  本地⽂件  hdfs⽬录
public static void copyFromLocal(Path localPath,Path hdfsPath){  try {
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//下载hdfs上的⽂件到本地
//hadoop  dfs  -get  本地⽂件  hdfs⽬录
//hadoop  dfs  -copyToLocal  hdfs⽂件本地⽂件
public static void copyToLocal(Path hdfsPath,Path localPath){  try {
} catch (IOException e) {
/
/ TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除⽂件或⽬录
//hadoop  dfs  -rmr hdfs⽂件
public static void remove(Path p){
下载apachetry {
fs.delete(p, true);
} catch (IOException e) {
} catch (IOException e) {
/
/ TODO Auto-generated catch block
e.printStackTrace();
}
}
//重命名⽂件或⽬录
public static void rename(Path oldPath,Path newPath){
try {
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
测试类:
package cn.hdfs.demo;
import java.io.IOException;
import org.f.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;
import cn.hdfs.demo.utils.HdfsUtils;
/**
* 测试hdfs ⼯具类
* @author hduser
*
*/
public class TestHdfs {
//定义全局变量
private FileSystem fs;
//抽取公共的部分
@Before
public void before() throws IOException{
//加载hdfs  核⼼配置⽂件l
Configuration  conf  = new Configuration();
//获取⽂件系统对象 FileSystem
fs = (conf);
}
//测试查看⽂件信息
@Test
public void fun1(){
//查看 hadoop dfs  -ls  / | hdfs://node1:9000/.....
Path rootPath = new Path("hdfs://node1:9000/output/wc1");  //listStatus 显⽰当前⽬录⼦⽂件信息
}
//测试mkdir
@Test
public void fun2(){
//创建⽂件 hadoop dfs -mkdir /  | hdfs://node1:9000/.....

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。