您的位置:首页 > 编程语言 > Java开发

Hadoop(五)搭建Hadoop客户端与Java访问HDFS集群

2017-10-16 21:46 483 查看
前言

  上一篇详细介绍了HDFS集群,还有操作HDFS集群的一些命令,常用的命令:

hdfs dfs -ls xxx
hdfs dfs -mkdir -p /xxx/xxx
hdfs dfs -cat xxx
hdfs dfs -put local cluster
hdfs dfs -get cluster local
hdfs dfs -cp /xxx/xxx /xxx/xxx
hdfs dfs -chmod -R 777 /xxx
hdfs dfs -chown -R zyh:zyh /xxx


  注意:这里要说明一下-cp,我们可以从本地文件拷贝到集群,集群拷贝到本地,集群拷贝到集群。

一、Hadoop客户端配置

  其实在前面配置的每一个集群节点都可以做一个Hadoop客户端。但是我们一般都不会拿用来做集群的服务器来做客户端,需要单独的配置一个客户端。

1)安装JDK

2)安装Hadoop

3)客户端配置子core-site.xml

  

import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocalFileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

public class P00031_HdfsDemo_PutFile_0010 extends Configured implements Tool{
FSDataOutputStream os=null;
@Override
public int run(String[] strings) throws Exception{
Configuration configuration=getConf();
String input=configuration.get("input");
String output=configuration.get("output");
LocalFileSystem inFs=FileSystem.getLocal(configuration);
FileSystem outFs=FileSystem.get(URI.create(output),configuration);
FSDataInputStream is=inFs.open(new Path(input));
os=outFs.create(new Path(output),()->{
try{
System.out.println("已经写入了"+os.getPos()+"bytes");
}catch(IOException e){
e.printStackTrace();
}
});
IOUtils.copyBytes(is,os,1024,true);
System.out.println(os.getClass().getName());
inFs.close();
outFs.close();
return 0;
}

public static void main(String[] args) throws Exception{
System.exit(ToolRunner.run(new P00031_HdfsDemo_PutFile_0010(),args));
}
}


P00031_HdfsDemo_PutFile_001
  

喜欢就“推荐”哦!   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: