2013-02-06 12 views
7

हमारे पास कई डेटासेंटर में कई मशीनों में वितरित बड़ी संख्या में अनुप्रयोग हैं।लॉग डेटा को संसाधित करने के लिए ट्विटर तूफान का उपयोग करना?

पूरे दिन, हम संकेत (या तो आंतरिक या बाह्य) है, जो प्रत्येक आवेदन भर की घटनाओं की एक झरना का कारण नहीं भेजे जाएंगे।

प्रत्येक सिग्नल इस प्रकार घटना लॉग डेटा की एक बड़ी मात्रा का उत्पादन करता है। लॉगलाइन स्वयं कणिक रूप से संरचित नहीं हैं और वे अनुप्रयोगों के बीच भी काफी अलग हैं। वे हालांकि बुनियादी व्यवहार का पालन करें:

<timestamp> <calling function/method> <payload> 

हम loglines कि एक संकेत के लिए लिंक एक साथ घटनाओं में मदद कर सकते हैं आईडी नंबर है - फिर भी, इन सरल नहीं हैं, और हम कभी कभी अन्य तरीकों से करने की कोशिश करने के लिए उपयोग करने की आवश्यकता टुकड़े घटनाओं को एक साथ।

मैं ट्विटर के तूफान प्रणाली के बारे में ऊपर पढ़ रहा है और मैं काफी वास्तविक समय में लॉग डेटा के इस बड़े पैमाने पर विश्लेषण, और यह एक साथ टुकड़ा करने के लिए इसे बाहर की कोशिश में दिलचस्पी रखता हूँ। वास्तविक समय में डेटा से प्रवृत्तियों पर आधारित

  • उत्पादन रिपोर्ट और स्ट्रीमिंग रेखांकन:

    मैं जैसे कार्य करने के लिए करना चाहते हैं।

  • क्वेरी एक संकेत है, तो श्रृंखला में दिए गए चरणों के बीच देरी सहित सभी अनुप्रयोगों में है कि संकेत से संबंधित घटनाओं को एक कड़ी को लाने। (यह महत्वपूर्ण है)।
  • सहसंबंधित घटनाओं को देखें, और एक निश्चित घटना के समय एक और एप्लिकेशन क्या कर रहा था में ड्रिल करें।

में डेटा हो रही है?

लॉग डेटा स्थानीय लॉगफ़ाइल में संग्रहीत किया जाता है (और इस परिवर्तन की संभावना नहीं है), तो हम तूफान में ही डेटा में slurp के लिए एक रास्ता नहीं करनी होंगी। लॉगफाइल भी संपीड़ित किया जा सकता है। मैंने फ्लूम, या लॉगस्टैश का उपयोग करने के बारे में हालांकि - इन पर लोगों के विचार क्या हैं? या क्या ऐसे विकल्प हैं जो तूफान के साथ अच्छी तरह से काम करेंगे?

घटनाओं को संग्रहित करना?

मैं भी लाइव रिपोर्ट और रेखांकन के लिए डाटा स्टोर करने के लिए दोनों के लिए एक रास्ता है, साथ ही घटना डेटा ही जरूरत है।

यह दूसरा हिस्सा है जो मुझे थोड़ा मुश्किल लगता है - भंडारण कार्यक्रमों के साथ-साथ उनके बीच के लिंक के लिए किस तरह के स्टोरेज बैकएंड उपयुक्त हैं? क्या किसी प्रकार का ग्राफ डेटाबेस उपयुक्त होगा, उन नए-फंक्ड स्कीमालेस नोएसक्यूएल वाले में से एक, या कुछ और पारंपरिक होगा?

तूफान उपयुक्त है?

अंत में, तूफान इस भूमिका के लिए उपयुक्त है, या कुछ और बेहतर फिट है?

और यदि मैं तूफान के साथ जाता हूं, तो इससे निपटने के लिए मैं किस तरह का दृष्टिकोण ले सकता हूं? मुझे उम्मीद है कि अन्य लोगों को समान समस्याओं के साथ अनुभव होगा।

चीयर्स, विक्टर

उत्तर

3

उत्पादन रिपोर्ट और स्ट्रीमिंग रेखांकन वास्तविक समय

यह एक एक उत्कृष्ट फिट की तरह लगता है में डेटा से प्रवृत्तियों पर आधारित।

क्वेरी एक संकेत है, तो कि सभी आवेदनों में संकेत, श्रृंखला में दिए गए चरणों के बीच देरी सहित से संबंधित घटनाओं को एक कड़ी को लाने। (यह महत्वपूर्ण है)।

आपकी क्वेरी हाल ही के डेटा (= डेटा का एक बहुत नहीं) तक ही सीमित है, तो & आप डेटा हानि की अनुमति कर सकते हैं, मैं इस का उपयोग करते हुए केवल तूफान करने की कल्पना कर सकते हैं। यदि नहीं, तो मैं डेटाबेस के साथ तूफान को जोड़ सकता हूं और डेटाबेस को डेटा संग्रहीत करने के लिए मुख्य रूप से & प्रीप्रोकैसिंग के लिए तूफान का उपयोग कर सकता हूं। इस मामले में डेटाबेस का उपयोग कर क्वेरी को शायद बेहतर तरीके से संभाला जा सकता है।

सहसंबंधित घटनाओं को देखें, और एक निश्चित घटना के समय के आसपास एक और अनुप्रयोग में ड्रिल करें।

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

डेटा को खिलाने के लिए, मैं एक लॉग केंद्रीकरण उत्पाद का उपयोग करूंगा। आप एक स्पॉट बना सकते हैं जो उत्पाद प्रदान करेगा जो भी इंटरफ़ेस के साथ इंटरैक्ट करता है। वैकल्पिक रूप से, यदि आप लॉगिंग फ्रेमवर्क का उपयोग कर रहे हैं जो जेएमएस आदि (जैसे लॉग 4j) के माध्यम से सॉकेट के माध्यम से लॉग भेजने की अनुमति देता है, तो आप उस सॉकेट/जेएमएस कतार आदि से स्पॉट पढ़ सकते हैं।

डीबी विकल्पों के लिए, यह वास्तव में निर्भर करता है आप क्या करना चाहते हैं यदि आप नहीं जानते कि आप किस प्रकार की गतिविधि लॉगिंग करेंगे और घटनाओं को सहसंबंधित करना चाहते हैं, तो मेरी शर्त ग्राफ डेटाबेस पर होगी, क्योंकि ट्रैवर्सिंग ईवेंट आसान होंगे।

2

यह इस समय काम करने के मामले में बहुत कुछ लगता है, इसलिए मैं कुछ विचार बताउंगा कि क्या करना संभव होगा।

डेटा प्राप्त करने के लिए, आप Apache Kafka पर एक नज़र डाल सकते हैं। यह संदेश प्रणाली आपके लॉग को एप्लिकेशन से और मध्यस्थ भंडारण में प्राप्त कर सकती है। वहां से, विभिन्न प्रणालियां उपभोक्ताओं के रूप में संलग्न हो सकती हैं, जिनमें तूफान एक विशेष तूफान-काफ्का स्पॉट का उपयोग करके अच्छी तरह एकीकृत हो रहा है।

हमारे मामले में हमारे पास काफ़का दलालों से सीधे उपभोग करने वाले कुछ वास्तविक समय का डेटा है और निगरानी/डैशबोर्ड और अन्य डेटा धाराओं में जो तूफान के माध्यम से प्रसंस्करण की आवश्यकता है। उत्तरार्द्ध डेटा की प्रकृति के आधार पर एक वितरित डीबी (मोंगोडीबी, कैसंद्रा या कोचबेस) में संग्रहीत किया जाता है, जिसे तब डैशबोर्ड और अन्य प्रणालियों में लोड किया जाता है।

बैच नौकरियों के लिए, आप काफ़का से डेटा को हडोप में भी लोड कर सकते हैं और यह सब एक दूसरे से स्वतंत्र रूप से किया जा सकता है, उसी डेटा को काफ़का से कई प्रणालियों तक खींच सकता है।

काफ्का दर्पण निर्माता के माध्यम से कई डेटा केंद्रों का भी समर्थन करता है।

संबंधित मुद्दे

 संबंधित मुद्दे