马士兵 day3_使用Java开发hdfs

day3_使用Java开发hdfs

hadoop.tmp.dir默认值为/tmp/hadoop-${user.name},由于/tmp目录在系统重启时会被删除,所以应该修改目录位置。

  • vim /usr/local/hadoop/etc/hadoop/core-site.xml,namenode和datanode都需要修改
# 添加如下内容
<property>
    <name>hadoop.tmp.dir</name>
    <value>/var/hadoop</value>
</property>

修改完namenode和datanode上的hadoop.tmp.dir参数后,需要格式化namenode,在master上执行:hdfs namenode -format(注:会出现Y确认)

  • 注:马士兵只修改了master上的配置文件,不修改datanode会导致datanode无法正常启动

测试期间关闭权限检查,namenode上操作:vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

# 添加如下内容
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>

重启namenode:

hadoop-daemon.sh stop namenode
hadoop-daemon.sh start namenode

使用FileSystem类来读写hdfs

  • maven项目,pom.xml配置文件
<dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
</dependencies>

  • HelloHDFS类
package com.hadoop.hdfs;


import java.io.FileInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/**
 * Created by lujiafeng on 2018/10/6.
 */
public class HelloHDFS {
    public static final Logger logger = LoggerFactory.getLogger(HelloHDFS.class);

    public static void main(String[] args) throws Exception {

        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://192.168.56.100:9000");
        conf.set("dfs.replication", "2"); //上传文件复制份数,默认为3
        FileSystem fileSystem = FileSystem.get(conf);

        boolean success;

//        success = fileSystem.mkdirs(new Path("/hadoopljf"));
//        logger.info("创建文件是否成功:" + success);
//
//        success = fileSystem.exists(new Path("/hadoopljf"));
//        logger.info("文件是否存在:" + success);

//        success = fileSystem.delete(new Path("/hadoopljf"), true);
//        logger.info("删除文件是否成功:" + success);

//        success = fileSystem.exists(new Path("/hadoopljf"));
//        logger.info("文件是否存在:" + success);

        //把本地文件传到hdfs中
//        FSDataOutputStream out = fileSystem.create(new Path("/test.data"), true);
//        FileInputStream in = new FileInputStream("/Users/lujiafeng/GitRepositories/test.txt");
//        IOUtils.copyBytes(in, out, 4096, true);

//        FSDataOutputStream out = fileSystem.create(new Path("/test2.data"));
//        FileInputStream in = new FileInputStream("/Users/lujiafeng/GitRepositories/test.txt");
//        byte[] buf = new byte[4096];
//        int len = in.read(buf);
//        while (len != -1) {
//            out.write(buf, 0, len);
//            len = in.read();
//        }
//        in.close();
//        out.close();

        FileStatus[] statuses = fileSystem.listStatus(new Path("/"));
        logger.info(statuses.length + "");
        for (FileStatus status : statuses) {
            logger.info(status.getPath() + "");
            logger.info(status.getPermission() + "");
            logger.info(status.getReplication() + "");
        }

    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 艺术街上趴着一个赤裸的女人,面朝大地,头发披散开来,下身盖着一个破旧的毯子,双手压在额头下面,有好色男人企图靠近,...
    Zzzzzang阅读 3,738评论 0 0
  • 喜欢你,好喜欢你 无法克制得喜欢你的一切 但是,最喜欢你的心灵 会包容一切、善良的心灵 两个人在一起 不好的一面会...
    忻阑阅读 1,693评论 0 0
  • 文 | 彼怀 一勺酱油,两块豆腐,花椒、姜、葱以及一瓢清水,它们总会在咕嘟声中勾起我垂涎三尺的欲望。 小时候的我经...
    彼怀阅读 3,064评论 10 18
  • 以人为本, 既是价值观, 也是方法论。 -完- ©严正法律声明 本文版权受我国相关法律及适用之国际公约中有关著作权...
    更好时代阅读 921评论 0 1

友情链接更多精彩内容