ملف التكوين
يتم استبدال M103 بعنوان خدمة HDFS.
لاستخدام عميل Java للوصول إلى الملفات على HDFS ، يجب أن أقول إن ملف التكوين HADOOP-0.20.2/conf/core-site.xml كان الشخص الذي عانيت من خسارة كبيرة هنا في البداية ، لذلك لم أتمكن من الاتصال بـ HDFs ولم يكن من الممكن إنشاء الملفات.
<؟ الدلائل. </description> </property> <!-خصائص نظام الملفات-> <morperal> <name> fs.default.name </name> <value> hdfs: // linux-zzk-113: 9000 </value> </property> </configuration>
عنصر التكوين: يمثل hadoop.tmp.dir موقع الدليل حيث يتم تخزين البيانات الوصفية على العقدة المسماة ، وبالنسبة لعقدة البيانات ، فهو الدليل حيث يتم تخزين بيانات الملف على العقدة.
عنصر التكوين: Fs.Default.name يمثل عنوان IP المسمى ورقم المنفذ. القيمة الافتراضية هي ملف: ///. بالنسبة إلى Java API ، يجب على الاتصال بـ HDFs استخدام عنوان URL المكون هنا. بالنسبة لعقد البيانات ، تصل العقد البيانات إلى العقدة المسماة من خلال عنوان URL هذا.
HDFS-site.xml
<؟ <name> dfs.namenode.servicerpc-address </same> <value> m103: 8022 </value> </property> <morperal> <name> dfs.https.address </name> </value> m103: 50470 </ value <property> <ame> dfs.namenode.http-address </same> <value> m103: 50070 </value> </sopperation> <spertar <name> dfs.client.use.datanode.hostname </same> <value> false </value> </swerperation> <morpuration> <mame> fs.psysions.umask-mode </same> <value> 022 </value> </propert <name> dfs.block.local-path-access.user </same> <value> cloudera-scm </value> </sopperation> <property> <name> dfs.client.read.shortCircuit </same> <Sale> false </value> </propert <Value>/var/run/hdfs-sockets/dn </value> </sopperation> <swerper> <same> dfs.client.read.shortcircuit.skip.checksum </same> <value> false> falment> </value> </prarken> <spertar <name> dfs.datanode.hdfs-blocks-metadata.endabled </name> <value> true </value> </sopperation>
mapred-site.xml
<؟ <Value> 120 </value> </sorterperal> <morpurment> <ame> mapReduce.output.fileOutputFormat.compress </same> <value> true </value> <ame> mapreduce.output.fileOutputformat.compress.codec </same> <value> org.apache.hadoop.io.compress.snappycodec </value> </property> <morperal> <ame> mapreduce.map.output.compress.codec </name> org.apach.hadoop.oio <property> <ame> mapreduce.map.output.compress </same> <value> true </value> </property> <morperal> <mame> zlib.compress.level </same> <value> default_compression </salue> </property> <morperation> <name> mapreduce.map.sort.spill.percent </same> <value> 0.8 </value> </swerperation> <morperal> <mame> mapreduce.reduce.shuffle.paraldalcopies </same> <value> 10 </value> </propert <ame> mapreduce.client.submit.file.replication </same> <value> 1 </value> </surrent> <morpuration> <mame> mapreduce.job.reduces </name> <value> <ame> mapreduce.map.speculative </same> <value> خطأ </value> </property> <property> <ame> mapreduce.reduce.speculative </same> <value> خطأ </value> </property> <swerp> <ame> mapreduce.reduce. <name> mapreduce.job.reduce.slowstart.completedmaps </same> <value> 0.8 </value> </property> <morperal> <ame> mapreduce.jobhistory.address </name> m103: 10020 </value> </propert <value> m103: 19888 </value> </premart> <property> <ame> mapreduce.jobhistory.webapp.https.address </name> <value> m103: 19890 </salue> </property> <samper> <same> mapReduce.jobhistory.admin.address </samed> <ame> mapreduce.framework.name </same> <value> الغزل </value> </property> <swerp> <ame> yarn.app.mapreduce.am.staging-diR </same> <value>/user </value> </propert <name> yarn.app.mapreduce.am.resource.mb </same> <value> 2048 </value> </sopperation> <morperal> <same> yarn.app.mapreduce.am.resource.cpu-vcores </name> <sale> </property> <morperal> <ame> yarn.app.mapreduce.am.command-Opts </name> <value> -djava.net.preferipv4stack = true -xmx1717986918 </value> </sopperation> <morperal> <ame> mapreduce.map.java.java. <Value> -djava.net.preferipv4stack = true -xmx1717986918 </value> </sopperation> <spertar <name> yarn.app.mapreduce.am.admin.user.env </same> <value> ld_library_path = $ hadoop_common_home/lib/native: $ java_library_path </value> </property> <name> mapreduce.map.cpu.vcores </same> <value> 1 </value> </property> <swerp> <ame> mapreduce.reduce.memory.mb </same> <value> <name> mapreduce.reduce.cpu.vcores </mame> <value> 1 </value> </sprement> <spertar <value> $ hadoop_mapred_home/*، $ hadoop_mapred_home/lib/*، $ mr2_classpath ، $ cdh_hcat_home/share/hcatalog/*، $ cdh_hive_home/lib/*،/etc/hive/conf ،/opt/clouda/parcels/cdh/li/ <Preperty> <ame> mapreduce.admin.user.env </same> <value> ld_library_path = $ hadoop_common_home/lib/native: $ java_library_path </value> </propert
استخدم Java API للوصول إلى ملفات ودلائل HDFS
package com.demo.hdfs ؛ import java.io.bufferedInputStream ؛ import java.io.fileInputStream ؛ import java.io.filenotfoundexception ؛ import java.io.fileoutputstream ؛ import java.ioexception ؛ import java.io java.net.uri ؛ import org.apache.hadoop.conf.configuration ؛ import org.apache.hadoop.fs.fsdatainputStream ؛ import org.apache.hadoop.fs.fsdataOutputStream ؛ import org.apache.hadoop.fs.filestatus org.apache.hadoop.fs.path ؛ import org.apache.hadoop.io.ioutils ؛ import org.apache.hadoop.util.progressable ؛/*** @author zhangzk*/public class filecopytohdfs {public static void main (strup // deletefromhdfs () ؛ // getDirectoryFromHdfs () ؛ appendToHDFS () ؛ readfromhdfs () ؛ } catch (استثناء e) {// todo catch e.printstacktrace () ؛ } أخيرًا {system.out.println ("النجاح") ؛ }}/** قم بتحميل الملف إلى HDFS*/private static void uploadtohdfs () reflyoTfoundException ، ioException {String adalbolrc = "d: //qq.txt" ؛ String DST = "HDFS: //192.168.0.113: 9000/user/Zhangzk/qq.txt" ؛ inputStream في = جديد bufferedInputStream (FileInputStream جديد (AcalSRC)) ؛ التكوين conf = تكوين جديد () ؛ FileSystem fs = fileystem.get (uri.create (dst) ، conf) ؛ OutputStream Out = fs.create (مسار جديد (DST) ، جديد قابل للتقدم () {public void progress () {system.out.print (".") ؛}}) ؛ ioutils.copybytes (في ، خارج ، 4096 ، صحيح) ؛ }/** اقرأ الملف من HDFS*/private readfromhdfs () rehrows fileNotfoundException ، ioException {string dst = "hdfs: //192.168.0.113: 9000/user/zhangzk/qq.txt" ؛ التكوين conf = تكوين جديد () ؛ FileSystem fs = fileystem.get (uri.create (dst) ، conf) ؛ FSDataInputStream HDFSintReam = Fs.Open (مسار جديد (DST)) ؛ outputStream Out = newOutputStream ("d: /qq-hdfs.txt") ؛ Byte [] iobuffer = new byte [1024] ؛ int readlen = hdfsinstream.read (iobuffer) ؛ بينما (-1! = readlen) {out.write (iobuffer ، 0 ، readlen) ؛ readlen = hdfsinstream.read (iobuffer) ؛ } out.close () ؛ hdfsinstream.close () ؛ fs.close () ؛ } /** إضافة محتوى إلى نهاية الملف على HDFS في إلحاق ؛ ملاحظة: عند تحديثات الملف ، تحتاج إلى إضافة <morperal> <ame> dfs.append.support </mame> <value> True </value> </property>*/private static void appendtohdfs () rewrows fileNotfoundException ، iOexception {String dSt = "hdfs: //192.168.0.113: 9000/zh. التكوين conf = تكوين جديد () ؛ FileSystem fs = fileystem.get (uri.create (dst) ، conf) ؛ FSDataOutputStream Out = fs.append (مسار جديد (DST)) ؛ int readlen = "Zhangzk Add by HDFS Java API" .getBytes (). الطول ؛ بينما (-1! = readlen) {out.write ("Zhangzk add by hdfs java api" .getBytes () ، 0 ، readlen) ؛ } out.close () ؛ fs.close () ؛ }/** حذف الملف من HDFS*/private static void deletefromhdfs () reflyotfoundException ، ioException {String dst = "hdfs: //192.168.0.113: 9000/user/zhangzk/qq-bak.txt" ؛ التكوين conf = تكوين جديد () ؛ FileSystem fs = fileystem.get (uri.create (dst) ، conf) ؛ fs.deleteOnexit (مسار جديد (DST)) ؛ fs.close () ؛ }/** نقل الملفات والأدلة على HDFS*/private static void getDirectoryFromHDFS () يلقي FileNotfoundException ، ioException {String dst = "hdfs: //192.168.0.113: 9000/user/zhangzk" ؛ التكوين conf = تكوين جديد () ؛ FileSystem fs = fileystem.get (uri.create (dst) ، conf) ؛ filestatus filelist [] = fs.liststatus (مسار جديد (DST)) ؛ int size = fileList.length ؛ لـ (int i = 0 ؛ i <size ؛ i ++) {system.out.println ("name:" + filelist [i] .getPath (). getName () + "/t/tsize:" + fileList [i] .getlen ()) ؛ } fs.close () ؛ }} ملاحظة: لعمليات الإلحاق ، لم يتم دعمها منذ Hadoop-0.21. لعمليات إلحاق ، يرجى الرجوع إلى مستند على Javaeye.