2013-01-21 35 views
5

मैं हडोप मंच पर Web-scale Parallel Inference Engine (WebPIE) तर्ककर्ता का उपयोग करना चाहता हूं। मैंने पहले ही दो उबंटू आभासी मशीनों के साथ हडोप संरचना लागू की है और यह अच्छी तरह से काम कर रहा है। जब मैं आरडीएफ फाइलों पर तर्क करने के लिए वेबपी का उपयोग करना चाहता हूं, तो प्रक्रिया अनुक्रम फ़ाइल प्रारूप की आवश्यकता के कारण विफल हो जाती है। WebPIE tutorial ने हडोप में तर्क के लिए अनुक्रम फ़ाइल प्रारूप के बारे में कुछ भी नहीं बताया। अनुक्रम फ़ाइल स्वरूप उत्पादन करने के लिए मैं निम्नलिखित कोड लिखा है:वितरित सिस्टम में सेमेन्टिक वेब का तर्क

public static void main(String[] args) { 

    FileInputStream fis = null; 
    SequenceFile.Writer swriter = null; 
    try { 

     Configuration conf = new Configuration(); 

     File outputDirectory = new File("output"); 
     File inputDirectory = new File("input"); 
     File[] files = inputDirectory.listFiles(); 

     for (File inputFile : files) { 

      //Input 
      fis = new FileInputStream(inputFile); 

      byte[] content = new byte[(int) inputFile.length()]; 
      fis.read(content); 

      Text key = new Text(inputFile.getName()); 
      BytesWritable value = new BytesWritable(content); 

      //Output 
      Path outputPath = new Path(outputDirectory.getAbsolutePath()+"/"+inputFile.getName()); 

      FileSystem hdfs = outputPath.getFileSystem(conf); 

      FSDataOutputStream dos = hdfs.create(outputPath); 

      swriter = SequenceFile.createWriter(conf, dos, Text.class, 
        BytesWritable.class, SequenceFile.CompressionType.BLOCK, new DefaultCodec()); 

      swriter.append(key, value); 

     } 

     fis.close(); 
     swriter.close(); 

    } catch (IOException e) { 

     System.out.println(e.getMessage()); 
    } 

} 

इस कोड को कुछ RDF फाइलों के साथ सही क्रम फ़ाइल प्रारूप का उत्पादन है, लेकिन 100% सही ढंग से काम नहीं करता है, और कभी कभी दूषित फ़ाइलों पैदा करता है। क्या इस कोड से बचने के लिए शुरुआत से कोई समाधान है, और यदि नहीं है, तो मैं इनपुट के रूप में किसी भी आरडीएफ फ़ाइल के साथ सही तरीके से काम करने के लिए इस कोड को कैसे सुधार सकता हूं?

+0

क्या आप जो त्रुटि आ रहे हैं उसके बारे में आप और बता सकते हैं। जैसा कि आप कहते हैं, वेबपीआईई ट्यूटोरियल अनुक्रम फ़ाइलों का उल्लेख नहीं करता है। क्या आप ट्यूटोरियल में वर्णित सब कुछ कर सकते हैं जैसा लिखा है? क्या आप ट्यूटोरियल के साथ किसी भी समस्या में भाग लेते हैं। हैडोप विकी [अनुक्रम फाइल] (http://wiki.apache.org/hadoop/SequenceFile) के बारे में बात करता है, और यह एक उपयोगी संसाधन हो सकता है। –

उत्तर

0

The tutorial अमेज़ॅन ईसी 2 पर चल रहे वेबपीआई पर आधारित है, इसलिए कॉन्फ़िगरेशन में कुछ अंतर हो सकता है। हालांकि, ध्यान दें कि, ट्यूटोरियल के अनुसार, आदानों सादा नहीं RDF फ़ाइलें हैं, लेकिन "एन Triples प्रारूप में ट्रिपल की gzipped कंप्रेस फ़ाइलों" (मूल में जोर): इससे पहले कि हम तार्किक लांच

, हमें इनपुट डेटा को एचडीएफएस फाइल सिस्टम में अपलोड करने और उपयुक्त प्रारूप में संपीड़ित करने की आवश्यकता है। इनपुट डेटा में एन-ट्रिपल प्रारूप में ट्रिपल की gzipped संपीड़ित फ़ाइलें शामिल होनी चाहिए। फ़ाइलों को समान आकार में रखने की कोशिश करें और सीपीयू कोर की तुलना में अधिक फ़ाइलें रखें क्योंकि प्रत्येक फ़ाइल को एक मशीन द्वारा संसाधित किया जाएगा।

दूसरे खंड, : कि ट्यूटोरियल के का वर्णन करता है वास्तव में सिस्टम में डेटा प्राप्त करने के लिए कैसे "2 कदम क्लस्टर पर इनपुट डेटा अपलोड", और यह लगता है कि यह के रूप में अमेज़न EC2 के लिए आवेदन करना चाहिए अच्छी तरह से अपने ही हैडोप स्थापना के रूप में। , हालांकि

$ ./cmd-hadoop-cluster login webpie 
$ hadoop fs -ls/
$ hadoop fs -mkdir /input 
$ ./cmd-hadoop-cluster push webpie input_triples.tar.gz 

केवल HDFS में डेटा हो जाता है यही कारण है कि: मैं नहीं है बस यहाँ संपूर्णता में उस अनुभाग उद्धृत करने के लिए चाहते हैं, लेकिन आदेशों वे दे के अनुक्रम है। में:,

तार्किक एक संपीड़ित प्रारूप में डेटा के साथ काम करता है "3 कदम इनपुट डेटा सेक"। हम आदेश के साथ डेटा को संपीड़ित:

hadoop jar webpie.jar jobs.FilesImportTriples /input /tmp /pool --maptasks 4 --reducetasks 2 --samplingPercentage 10 --samplingThreshold 1000 

... उपरोक्त आदेश के रूप में पढ़ा जा सकता है: संपीड़न का शुभारंभ और विभाजित 4 मानचित्र कार्यों और 2 के बीच काम कार्यों को कम करने, डेटा की एक 10% का उपयोग कर इनपुट नमूना और इस नमूने में 1000 से अधिक बार दिखाई देने वाले सभी संसाधनों को लोकप्रिय के रूप में चिह्नित करें।

इस नौकरी समाप्त होने के बाद, हमारे पास संकुचित इनपुट डेटा निर्देशिका/पूल में है और हम तर्क पर आगे बढ़ सकते हैं।

शेष अनुभाग तर्कसंगत चर्चा करते हैं, डेटा वापस प्राप्त करते हैं, और इसी तरह, जो कोई समस्या नहीं होनी चाहिए, एक बार जब आप डेटा प्राप्त कर लेते हैं, तो मुझे उम्मीद है।

0

इनपुट डेटा उदाहरण के लिए एन Triples प्रारूप में ट्रिपल की gzipped संकुचित फ़ाइलें (triplePart1.gz, triplePart2.gz ....) से मिलकर चाहिए, तो हम है: कि input_triples.tar.gz एन-ट्रिपल की संकुचित फाइलें (triplePart1.gz, triplePart2.gz ....) शामिल हैं।

  1. टार फ़ाइल को विस्तारित और HDFS

    ---/Hadoop $ टार zxvf /tmp/input_triples.tar.gz/tmp/input_triples को सामग्री की प्रतिलिपि।

    ---/हडूप $ बिन/हैडऑप एफएस -कोपी फ्रॉमोकल/टीएमपी/इनपुट-फाइल/इनपुट।/Hadoop $ bin/Hadoop जार webpie.jar jobs.FilesImportTriples/इनपुट/tmp/पूल

  2. संक्षिप्त इनपुट डेटा

    --- --maptasks 4 --reducetasks 2 --samplingPercentage 10 --samplingThreshold 1000

  3. तर्क

    ---/Hadoop $ bin/Hadoop जार webpie.jar jobs.Reasoner/पूल --fragment उल्लू --rulesStrategy तय --reducetasks 2 --samplingPercentage 10 --samplingThreshold 1000

जारी रखने के लिए here :-)

+0

यदि यह यहां पूरा समाधान नहीं है, तो कृपया अपना उत्तर संपादित करें और अपने लिंक के बिना उपयोगी होने तक अधिक विवरण जोड़ें :-) – kleopatra

+0

मैंने समाधान का उल्लेख किया है, वास्तव में आपको ** में एन-ट्रिपल फ़ाइलों को संपीड़ित करना है। जीजी ** प्रारूप। अनुक्रम फ़ाइल की समस्या तब प्रकट होती है जब हम इनपुट डेटा को संपीड़ित करते हैं ताकि बाकी के लिए आपको ट्यूटोरियल का पालन करना पड़े –