{"id":6677,"date":"2021-09-06T09:30:43","date_gmt":"2021-09-06T01:30:43","guid":{"rendered":"https:\/\/nj.transwarp.cn:8180\/?p=6677"},"modified":"2025-03-31T16:17:00","modified_gmt":"2025-03-31T08:17:00","slug":"java-%e8%bf%9e%e6%8e%a5%e5%bc%80%e5%90%af%e5%ae%89%e5%85%a8%e7%9a%84-hdfs-%e4%bb%a3%e7%a0%81-demo","status":"publish","type":"post","link":"https:\/\/kbwp.transwarp.cn\/?p=6677","title":{"rendered":"Java \u8fde\u63a5\u5f00\u542f\u5b89\u5168\u7684 HDFS \u4ee3\u7801 demo"},"content":{"rendered":"<h3>\u6982\u8981\u63cf\u8ff0<\/h3>\n<p>TDH \u751f\u4ea7\u96c6\u7fa4\u4e00\u822c\u90fd\u662f\u5f00\u542f\u4e86 kerberos \u8ba4\u8bc1\uff0c\u672c\u5b9e\u9a8c\u6f14\u793a\u5728\u5f00\u542f\u4e86 kerberos \u8ba4\u8bc1\u7684\u73af\u5883\u4e0b\uff0c\u5982\u4f55\u901a\u8fc7 java \u8bbf\u95ee hdfs \u670d\u52a1<\/p>\n<p>\u4ee5\u4e0b\u5f00\u53d1\u73af\u5883\u4ee5IDEA + Windows10 + jdk1.8 + Maven3.6.1\u4e3a\u4f8b<\/p>\n<h3>\u8be6\u7ec6\u8bf4\u660e<\/h3>\n<p>\u83b7\u53d6 HDFS api \u8fd0\u884c\u4f9d\u8d56\u7684 jar \u5305<\/p>\n<p>HDFS API \u7684\u4f9d\u8d56jar\u5305\u90fd\u5728\u5982\u4e0b\u5217\u8868\u4e2d\uff0cjar \u540d\u79f0\u4e2d * \u4f4d\u7f6e\u662f\u5305\u7684\u7248\u672c\u53f7\uff0c\u8fd9\u4e9b jar \u7684\u7248\u672c\u53f7\u6839\u636e\u60a8\u4f7f\u7528\u7684 TDH \u7248\u672c\u7684\u4e0d\u540c\u4f1a\u6709\u6240\u4e0d\u540c\uff0c\u4ee5\u60a8\u96c6\u7fa4\u4e0a\u6b63\u5728\u4f7f\u7528\u7684\u5305\u4e3a\u51c6\uff1a<\/p>\n<pre><code class=\"language-shell\">hadoop-hdfs-2.7.2-transwarp-6.2.0.jar\nhadoop-hdfs-2.7.2-transwarp-6.2.0-tests.jar\nhadoop-hdfs-nfs-2.7.2-transwarp-6.2.0.jar\nannotations-13.0.jar\napacheds-jdbm1-2.0.0-M2.jar\nasm-3.2.jar\ncommons-cli-1.2.jar\ncommons-codec-1.4.jar\ncommons-daemon-1.0.13.jar\ncommons-io-2.4.jar\ncommons-lang-2.6.jar\ncommons-logging-1.1.3.jar\ndnw-1.0.7.jar\nguardian-client-guardian-3.1.0.jar\nguardian-common-guardian-3.1.0.jar\nguava-11.0.2.jar\nhdfs-plugin-transwarp-6.2.0.jar\nhtrace-core-3.1.0-incubating.jar\njackson-core-asl-1.9.13.jar\njackson-mapper-asl-1.9.13.jar\njersey-core-1.9.jar\njersey-server-1.9.jar\njetty-6.1.26.jar\njetty-util-6.1.26.jar\njsr305-3.0.0.jar\nleveldbjni-all-1.8.jar\nlog4j-1.2.17.jar\nnetty-3.6.2.Final.jar\nnetty-all-4.0.23.Final.jar\nplugin-common-guardian-3.1.0.jar\nprotobuf-java-2.5.0.jar\nservlet-api-2.5.jar\nslf4j-api-1.7.10.jar\nswagger-annotations-1.5.9.jar\nxercesImpl-2.9.1.jar\nxml-apis-1.3.04.jar\nxmlenc-0.52.jar\nzookeeper-3.4.5-transwarp.jar<\/code><\/pre>\n<h4>\u6837\u4f8b\u4ee3\u7801<\/h4>\n<pre><code class=\"language-java\">\npackage transwarp.support;\nimport org.apache.hadoop.fs.FileSystem;\nimport org.apache.hadoop.fs.Path;\nimport org.apache.hadoop.io.IOUtils;\nimport org.apache.hadoop.security.UserGroupInformation;\n\nimport java.io.*;\n\npublic class dfsClient {\n    private static org.apache.hadoop.conf.Configuration getConf() {\n        \/\/ \u83b7\u53d6\u914d\u7f6e\u4ee5\u53ca\u5b8c\u6210\u8ba4\u8bc1\n        org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();\n        System.setProperty(\"java.security.krb5.conf\", \"D:\\\\JavaProject\\\\resource\\\\tdh621\\\\krb5.conf\");\n        conf.addResource(\"core-site.xml\");\n        conf.addResource(\"hdfs-site.xml\");\n        conf.addResource(\"yarn-site.xml\");\n\/\/        conf.set(\"hadoop.security.authentication\", \"Kerberos\");\n        try {\n            UserGroupInformation.setConfiguration(conf);\n            UserGroupInformation.loginUserFromKeytab(\"admin@TDH\", \"D:\\\\JavaProject\\\\resource\\\\tdh621\\\\admin.keytab\");\n        } catch (IOException e1) {\n            e1.printStackTrace();\n        }\n        return conf;\n    }\n    private static void CreateFile(String filename) throws Exception {\n        \/\/ \u901a\u8fc7Java API\u521b\u5efa\u6587\u4ef6\n        org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();\n        conf = getConf();\n        String rootPath = \"hdfs:\/\/nameservice1\";\n        Path p = new Path(rootPath + filename);\n        FileSystem fs = p.getFileSystem(conf);\n        fs.create(p);\n        fs.close();\n    }\n    private static void CreateDir(String filename) throws Exception {\n        \/\/ \u521b\u5efa\u76ee\u5f55\n        org.apache.hadoop.conf.Configuration conf = getConf();\n        String rootPath = \"hdfs:\/\/nameservice1\";\n        Path p = new Path(rootPath + filename);\n        FileSystem fs = p.getFileSystem(conf);\n        boolean b = fs.mkdirs(p);\n        System.out.println(b);\n        fs.close();\n    }\n    private static void Delete(String filename) throws Exception {\n        \/\/ \u5220\u9664\u6587\u4ef6\n        org.apache.hadoop.conf.Configuration conf = getConf();\n        String rootPath = \"hdfs:\/\/nameservice1\";\n        Path p = new Path(rootPath + filename);\n        FileSystem fs = p.getFileSystem(conf);\n        boolean b = fs.delete(p, true);\n        System.out.println(b);\n        fs.close();\n    }\n    public static void Downloader(String[] args) throws Exception {\n        \/\/ \u4e0b\u8f7d\u6587\u4ef6\n        CreateFile(\"\/tmp\/fileapi3.txt\");\n    }\n    private static void UploadFile(String localFile, String newPath) throws Exception {\n        \/\/ \u4e0a\u4f20\u6587\u4ef6\n        org.apache.hadoop.conf.Configuration conf = getConf();\n        InputStream in = new BufferedInputStream(new FileInputStream(localFile));\n        Path p = new Path(newPath);\n        FileSystem fs = p.getFileSystem(conf);\n        OutputStream out = fs.create(p);\n        IOUtils.copyBytes(in, out, conf);\n        fs.close();\n        IOUtils.closeStream(in);\n    }\n\n    public static void appendFile(String[] args) {\n        \/\/ \u6587\u4ef6\u8def\u5f84\n        Path filePath = new Path(\"\/tmp\/fileapi3.txt\");\n        try (FileSystem fs = FileSystem.get(conf)) {\n            \/\/ \u68c0\u67e5\u6587\u4ef6\u662f\u5426\u5b58\u5728\n            if (!fs.exists(filePath)) {\n                System.out.println(\"File does not exist. Please check the path.\");\n                return;\n            }\n\n            \/\/ \u6253\u5f00\u6587\u4ef6\u5e76\u8ffd\u52a0\u5185\u5bb9\n            try (FSDataOutputStream out = fs.append(filePath)) {\n                out.writeUTF(\"\\nNew data to append.\"); \/\/ \u8ffd\u52a0\u7684\u5185\u5bb9\n                System.out.println(\"Data appended successfully.\");\n            }\n        } catch (IOException e) {\n            e.printStackTrace();\n            System.out.println(\"Error occurred while appending data to the file.\");\n        }\n    }\n\n    public static void main(String[] args) throws Exception {\n        \/\/ \u521b\u5efa\u6587\u4ef6\n        CreateFile(\"\/tmp\/fileapi3.txt\");\n        Delete(\"\/tmp\/fileapi3.txt\");\n        CreateDir(\"\/tmp\/tmp2\/\");\n        UploadFile(\"D:\\\\JavaProject\\\\resource\\\\tdh621\\\\admin.keytab\",\"\/tmp\/tmp3\/\");\n        appendFile(\"D:\\\\JavaProject\\\\resource\\\\tdh621\\\\admin.keytab\",\"\/tmp\/tmp3\/\");\n    }\n\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981\u63cf\u8ff0 TDH \u751f\u4ea7\u96c6\u7fa4\u4e00\u822c\u90fd\u662f\u5f00\u542f\u4e86 kerberos \u8ba4\u8bc1\uff0c\u672c\u5b9e\u9a8c\u6f14\u793a\u5728\u5f00\u542f\u4e86 kerberos \u8ba4\u8bc1\u7684 ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/kbwp.transwarp.cn\/?p=6677\" title=\"read more...\">Read more<\/a><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6677","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"acf":[],"_links":{"self":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts\/6677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6677"}],"version-history":[{"count":3,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts\/6677\/revisions"}],"predecessor-version":[{"id":16277,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=\/wp\/v2\/posts\/6677\/revisions\/16277"}],"wp:attachment":[{"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kbwp.transwarp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}