2015-04-21 11 views
5

मैं एक पिग नौकरी चला रहा हूं जो हैडोप जॉब इतिहास सर्वर से कनेक्ट करने में विफल रहता है।पिग नौकरी इतिहास सर्वर से कनेक्ट करने की कोशिश करता रहता है (और विफल रहता है)

कार्य (आमतौर पर GROUP BY के साथ किसी भी कार्य) थोड़ी देर के लिए चलाता है और फिर इसे की तरह एक संदेश के साथ शुरू होता है:

2015-04-21 19:05:22,825 [main] INFO org.apache.hadoop.mapred.ClientServiceDelegate - Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server 
2015-04-21 19:05:26,721 [main] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 
2015-04-21 19:05:29,721 [main] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 0.0.0.0/0.0.0.0:10020. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 

यह तो थोड़ी देर के पुन: प्रयास कनेक्शन के लिए जारी है। कभी-कभी यह नौकरी के साथ आगे आता है। Othertimes यह इस अपवाद फेंकता है:

2015-04-21 19:05:55,822 [main] WARN org.apache.pig.tools.pigstats.mapreduce.MRJobStats - Unable to get job counters 
java.io.IOException: java.io.IOException: java.net.NoRouteToHostException: No Route to Host from cluster-01/10.10.10.11 to 0.0.0.0:10020 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host; For more details see: http://wiki.apache.org/hadoop/NoRouteToHost 
    at org.apache.pig.backend.hadoop.executionengine.shims.HadoopShims.getCounters(HadoopShims.java:132) 
    at org.apache.pig.tools.pigstats.mapreduce.MRJobStats.addCounters(MRJobStats.java:284) 
    at org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil.addSuccessJobStats(MRPigStatsUtil.java:235) 
    at org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil.accumulateStats(MRPigStatsUtil.java:165) 
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:360) 
    at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.launchPig(HExecutionEngine.java:280) 

मैं इस सवाल here पाया, लेकिन मेरे मामले में काम इतिहास सर्वर शुरू कर दिया है। अगर मैं netstat चलाने के लिए, मुझे लगता है:

tcp  0  0 0.0.0.0:10020   0.0.0.0:*    LISTEN  12073/java  off (0.00/0/0) 

कहाँ 12073 है ...

12073 pts/4 Sl  0:07 /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Dproc_historyserver -Xmx1000m -Djava.library.path=/data/hadoop/hadoop/lib -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/data/hadoop/hadoop-2.3.0/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/data/hadoop/hadoop-2.3.0 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/data/hadoop/hadoop/logs -Dhadoop.log.file=mapred-hadoop-historyserver-cluster-01.log -Dhadoop.root.logger=INFO,RFA -Dmapred.jobsummary.logger=INFO,JSA -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer 

मैं मामले में बंदरगाह 10200 खोलने की कोशिश की उसे एक फ़ायरवॉल मुद्दा था:

ACCEPT  tcp -- anywhere    anywhere    tcp dpt:10020 

। .. लेकिन कोई भाग्य नहीं है।

कुछ मिनटों के बाद, कुछ कार्य केवल मनमाने ढंग से अगले भाग तक जारी रहते हैं।

मैं हैडोप 2.3 और पिग 0.14 का उपयोग कर रहा हूं।

मेरा प्रश्न है:

1) संभावित कारण सुअर कार्य इतिहास सर्वर (JHS) यह देखते हुए कि JHS ही बंदरगाह कि सुअर इसके लिए लग रहा है पर चल रहा है से कनेक्ट नहीं कर रहे हैं?

... या नाकाम रहने कि ...

2) वहाँ किसी भी तरह से सिर्फ सुअर बताने के लिए JHS से कनेक्ट और कार्य के साथ जारी रखने के लिए कोशिश कर रहा है को रोकने के लिए है?

उत्तर

5

ऐसा लगता है कि अधिकांश हैडोप स्थापना/कॉन्फ़िगरेशन मार्गदर्शिका नौकरी इतिहास सर्वर को कॉन्फ़िगर करने का उल्लेख करने के लिए उपेक्षा करती हैं। ऐसा लगता है कि विशेष रूप से सुअर, इस सर्वर पर निर्भर करता है। ऐसा लगता है कि जेएचएस के लिए डिफ़ॉल्ट (स्थानीय) सेटिंग्स बहु-नोड क्लस्टर में काम नहीं करेगी।

समाधान यह सुनिश्चित करने के लिए कि यह अन्य मशीनों से उपयोग किया जा सके, mapred-site.xml में कॉन्फ़िगरेशन में सर्वर का होस्टनाम जोड़ना था। (फ़ाइल के अपने संस्करण में, लाइनों के रूप में "नया" ... वहाँ थे कोई पिछली सेटिंग जोड़े जा सकते थे।)

<property> 
    <name>mapreduce.jobhistory.address</name> 
    <value>cm:10020</value> 
    <description>Host and port for Job History Server (default 0.0.0.0:10020)</description> 
</property> 

तब कार्य इतिहास सर्वर को पुनः आरंभ:

mr-jobhistory-daemon.sh stop historyserver 
mr-jobhistory-daemon.sh start historyserver 

हैं आपको एक बाध्य अपवाद (उपयोग में बंदरगाह) मिलता है, इसका मतलब है कि stop काम नहीं किया। या तो

  1. उपयोग ps ax | grep -e JobHistory प्रक्रिया हो और kill -9 [pid] साथ मैन्युअल रूप से इसे मारने के लिए। फिर उपरोक्त स्टार्ट कमांड को कॉल करें।या

  2. विन्यास

सुअर में एक अलग बंदरगाह का उपयोग करें स्वचालित रूप से नई सेटिंग लेने चाहिए। एक सुअर स्क्रिप्ट चलाएं और सर्वश्रेष्ठ के लिए आशा करें। Hadoop बिन में

1

शुरू इतिहास सर्वर नीचे आदेश

bin$ ./mr-jobhistory-daemon.sh start historyserver 

रन सुअर का उपयोग कर नीचे आदेश

$pig 
का उपयोग कर
संबंधित मुद्दे