2012-04-03 13 views
8

मेरे पास एक साधारण हैडऑप नौकरी है जो वेबसाइटों को क्रॉल करती है और उन्हें एचडीएफएस में कैश करती है। मैपर जांचता है कि क्या एचडीएफएस में एक यूआरएल पहले से मौजूद है और यदि ऐसा है, तो इसका इस्तेमाल करता है अन्यथा पेज डाउनलोड करता है और इसे एचडीएफएस में सहेजता है।'कैसे हल करें' फ़ाइल को हडूप में केवल 1 के बजाय 0 नोड्स में दोहराया जा सकता है?

यदि पृष्ठ डाउनलोड करते समय नेटवर्क त्रुटि (404, आदि) का सामना करना पड़ता है, तो यूआरएल पूरी तरह से छोड़ा जाता है - एचडीएफएस पर नहीं लिखा जाता है। जब भी मैं एक छोटी सूची ~ 1000 वेबसाइट चलाता हूं, मुझे हमेशा इस त्रुटि का सामना करना पड़ता है जो मेरे छद्म वितरित स्थापना में बार-बार नौकरी को दुर्घटनाग्रस्त करता है। क्या समस्या हो सकती है?

मैं हडोप 0.20.2-cdh3u3 चला रहा हूं।

org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/raj/cache/9b4edc6adab6f81d5bbb84fdabb82ac0 could only be replicated to 0 nodes, instead of 1 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1520) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:665) 
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1434) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1430) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:416) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157) 
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1428) 
+0

क्यों आप बस hdfs-site.xml में "dfs.replication" को 0 पर सेट नहीं करते हैं। चूंकि आप छद्म मोड का उपयोग कर रहे हैं, डेटा की प्रतिकृति आपके लिए कोई चिंता नहीं है। –

उत्तर

2

समस्या मैपपर में एक अनजान फ़ाइलसिस्टम इनपुट स्ट्रीम उदाहरण था जिसे फ़ाइल सिस्टम में इनपुट कैशिंग के लिए उपयोग किया गया था।

1

स्रोतों को देखकर आप संभावित रूप से अपनी स्थानीय मशीन (या वीएम) पर जगह से बाहर निकलते हैं। यह अपवाद तब होता है जब सिस्टम प्रतिकृति के लिए पर्याप्त नोड्स नहीं ढूंढ पाता है। नोड्स का चयन करने के लिए ज़िम्मेदार वर्ग प्रतिकृति लक्ष्य लक्ष्यक है।

http://javasourcecode.org/html/open-source/hadoop/hadoop-0.20.203.0/org/apache/hadoop/hdfs/server/namenode/ReplicationTargetChooser.java.html

इसका मुख्य विधि chooseTarget (67 लाइन) है।
कोड में डाइविंग के बाद आप गॉडटाइटल विधि में शामिल होंगे, जो जांचता है कि नोड पर पर्याप्त जगह है या नहीं: लाइन 404.
यदि आप डीबग लॉग सक्षम करेंगे, तो आप संभावित संदेश को संभावित रूप से देखेंगे।

1

कृपया समय टिकटों से मेल खाने वाले नामनोड लॉग की जांच करें। यदि आईपीसी के साथ समस्याओं के बारे में कोई संकेत है, तो आप शायद "xcievers" से बाहर हो रहे हैं। मेरे मामले में, dfs.datanode.max.xcievershdfs-site.xml को एक बड़े मूल्य पर सेट करने के लिए, यानी 4096 या 8192, मेरे लिए विशेष समस्या तय की गई है।