本地上传文件到hadoop的hdfs文件系统里

Bertha 。 2021-09-22 14:38 499阅读 0赞

引言:通过Java本地把windows里的文件资源上传到centOs环境下的 hdfs文件系统里,中间遇到了很多问题,不过最终还是把文件上传到了hdfs里了

环境:centos-7.0,hadoop.2.8.5.gz,jdk1.8,eclipse

1、下载hadoop.2.8.5.tar.gz和jdk1.8的linux版本安装包,上传到linux的根目录下并配置环境变量,useradd hadoop一个用户,这点就不再详细说了,自己百度一下,随便把hadoop.tar.gz解压到一目录里,比如/opt/hadoop/hadoop.2.8.5,配置好以后可以看到版本。

70


70 1

2、我们进入到/opt/hadoop/hadoop.2.8.5/etc/里面又很多配置文件,我们修改hdfs.site.xml文件跟core.site.xml文件



dfs.replication
1



dfs.namenode.rpc-bind-host
0.0.0.0



dfs.permissions
false



core.site.xml 192.168.159.134是我本机的ip,通过ip add可以进行查看,每个人都不一样。



fs.defaultFS
hdfs://192.168.159.134:9000


3、一些常用命令:

cd /opt/hadoop/hadoop.2.8.5/etc/ service iptables stop// 要把防火墙关掉,不然无法进行网络连接

cd /opt/hadoop/hadoop.2.8.5/bin/ hdfs namenode -format //格式化名称节点

cd /opt/hadoop/hadoop.2.8.5/sbin/ start-dfs.sh//重启hadoop

cd /opt/hadoop/hadoop.2.8.5/sbin/ start-dfs.sh//stop hadoop

hadoop fs -ls hdfs://192.168.159.134:9000/ //查看上传的文件

hadoop fs -put /a hdfs:192.168.159.134:9000 //centos环境下本地上传文件到hdfs

netstat -lnp//查看网络端口


4、编写Java 代码

package edu.jmi.hdfsclient;

import java.io.IOException;

import java.net.Socket;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

/**
* Hello world!
*
*/
public class AppTest
{
public static void main( String[] args ) throws Exception, IOException
{
upload();
}

  1. public static void download() throws IOException \{
  2. Configuration conf = new Configuration();
  3. conf.set("fs.defaultFS","hdfs://192.168.159.134:9000");
  4. FileSystem fs = FileSystem.newInstance(conf);
  5. fs.copyToLocalFile(new Path("/start-all.sh"),new Path("e://"));
  6. \}
  7. public static void upload() throws IOException \{
  8. Configuration conf = new Configuration();
  9. conf.set("fs.defaultFS","hdfs://192.168.159.134:9000");
  10. FileSystem fs = FileSystem.get(conf);
  11. Path src=new Path("d://my.txt");
  12. Path dest=new Path("/");
  13. fs.copyFromLocalFile(src,dest);
  14. FileStatus\[\] fileStatus = fs.listStatus(dest);
  15. for(FileStatus file:fileStatus)\{
  16. System.out.println(file.getPath());
  17. \}
  18. System.out.println("上传成功");
  19. \}
  20. public static void test()throws Exception\{
  21. Socket socket=new Socket("192.168.159.134",9000);
  22. System.out.println(socket);//查看网络是否相同,拒绝说明防火墙开了,外界无法访问到网络。关一下就好了
  23. \}

}

5、效果图

70 2


70 3

发表评论

表情:
评论列表 (有 0 条评论,499人围观)

还没有评论,来说两句吧...

相关阅读

    相关 本地文件github

    Github开源代码库以及版本控制系统,可以托管各种git库,并提供web访问界面。很多朋友喜欢喜欢将个人Blog或小型项目托管到github,这样既方便又简单。  下面介绍