6

मैं वेब nginx लॉग का विश्लेषण करने के लिए ईएमआर का उपयोग कर रहा हूँ। लेकिन मुझे लॉग को संसाधित करने की आवश्यकता है ताकि क्वेरीिंग के लिए इसे आसान बनाने के लिए यह पंक्तियों और स्तंभों में गिर सके। इस प्रकार मैं दो तालिकाओं बनाया - rawlog, निम्नलिखित तरीके से processedlog:अमेज़ॅन लोचदार मानचित्र एस 3 लॉग का विश्लेषण करने के लिए कम करें

create table rawlog(line string) 
row format delimited fields terminated by '\t' lines terminated by '\n' 
LOCATION 's3://istreamanalytics/logs/'; 

CREATE EXTERNAL TABLE processedlog (
day string, 
hour int, 
playSessionId string 
) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; 

और अलग करने जो परिवर्तन कर सकते हैं एक गहरे लाल रंग का स्क्रिप्ट कहा, स्क्रिप्ट इस प्रकार है:

#!/usr/bin/env ruby 

mon={"Jan" => '01',"Feb" => '02',"Mar" => '03',"Apr" => '04',"May" => '05',"Jun" => '06',"Jul" => '07',"Aug" => '08',"Sep" => '09',"Oct" => '10',"Nov" => '11',"Dec" => '12'} 

STDIN.each_line do |line| 
if line =~ /(\d+)\/(\w+)\/(\d+):(\d+):\d+:\d+ \+\d+] "GET \/api\?playSessionId=(^&*)/ 
d = "#{$3}-#{mon$2}-#{$1}" 
h = $4 
pid = $5 
puts "#{d}\t#{h}\t#{pid}" 
end 
end 

अब मैं जब छत्ता पर निम्न आदेश का उपयोग कर काम चलाएँ:

from rawlog insert overwrite table processedlog select transform (line) using 'ruby /mnt/var/lib/hive_081/downloaded_resources/hive_transformer.rb' as (day String, hour INT, playSessionId String); 

मैं निम्न त्रुटि हो रही है:

Total MapReduce jobs = 2 
Launching Job 1 out of 2 
Number of reduce tasks is set to 0 since there's no reduce operator 
Starting Job = job_201206061145_0015, Tracking URL = http://domU-12-31-39-0F-86-07.compute-1.internal:9100/jobdetails.jsp?jobid=job_201206061145_0015 
Kill Command = /home/hadoop/.versions/0.20.205/libexec/../bin/hadoop job -Dmapred.job.tracker=10.193.133.241:9001 -kill job_201206061145_0015 
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0 
2012-06-08 09:47:49,644 Stage-1 map = 0%, reduce = 0% 
2012-06-08 09:48:50,267 Stage-1 map = 0%, reduce = 0% 
2012-06-08 09:48:52,278 Stage-1 map = 100%, reduce = 100% 
Ended Job = job_201206061145_0015 with errors 
Error during job, obtaining debugging information... 
Examining task ID: task_201206061145_0015_m_000002 (and more) from job job_201206061145_0015 

Exception in thread "Thread-41" java.lang.RuntimeException: Error while reading from task log url 
at org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:130) 
at org.apache.hadoop.hive.ql.exec.JobDebugger.showJobFailDebugInfo(JobDebugger.java:211) 
at org.apache.hadoop.hive.ql.exec.JobDebugger.run(JobDebugger.java:81) 
at java.lang.Thread.run(Thread.java:662) 
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL:  

http://10.254.139.143:9103/tasklogtaskid=attempt_201206061145_0015_m_000000_2&start=-8193 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436) 
at java.net.URL.openStream(URL.java:1010) 
at org.apache.hadoop.hive.ql.exec.errors.TaskLogProcessor.getErrors(TaskLogProcessor.java:120) 
... 3 more 
Counters: 
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask 
MapReduce Jobs Launched: 
Job 0: Map: 1 HDFS Read: 0 HDFS Write: 0 FAIL 
Total MapReduce CPU Time Spent: 0 msec 

क्या कोई मुझे बता सकता है कि क्या गलत है?

+0

शायद यह कुछ करने के लिए है निजी आईपी पते '10 .254.139.143 'के साथ करें, क्या यह सार्वजनिक आईपी के माध्यम से लॉग तक नहीं पहुंचना चाहिए? – Amar

+0

मैं इस में पहले से ही हाइव में आया हूं और इसे आम तौर पर ईएमआर इंस्टेंस आकार को एम 2 स्तरीय उदाहरण में अपनाने के द्वारा हल किया गया है। यह क्यों काम करता है के लिए एक अच्छा स्पष्टीकरण नहीं है, लेकिन यह ज्यादातर भाग के लिए लगता है। – Justin

उत्तर

0

ईएमआर लॉग से निपटने के लिए एक बहुत ही सामान्य उपकरण है।

अधिक अनुरूप तकनीक का उपयोग क्यों नहीं करें।

उदा .:

कम से कम सूमो के साथ प्रसंस्करण उस तरह बहुत आसान बना सकता है।

0

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

कुछ बुनियादी Googling पाया:

http://entxtech.blogspot.com/2010/10/how-to-unit-test-apache-hive-scripts.html http://jairam.me/2011/09/08/hive-on-amazon-emr/

0

त्रुटि पर अधिक जानकारी लॉग फ़ाइलों में पाया जा सकता है या यहाँ विवरण अपने मामले में देखें: http://10.254.139.143:9103/tasklogtaskid=attempt_201206061145_0015_m_000000_2&start=-8193